diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG3D1ExtraContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG3D1ExtraContent.py index f9c4b2f5b307d338df6bdd323b7573531dfee933..3710816a743d441187649133d978ff62bfab094b 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG3D1ExtraContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG3D1ExtraContent.py @@ -15,7 +15,7 @@ HIGG3D1ExtraVariables = [ "GSFTrackParticles.z0.vz", "CaloCalTopoClusters.rawE.rawEta.rawPhi.rawM.calE.calEta.calPhi.calM.e_sampl", "MuonClusterCollection.eta_sampl.phi_sampl", "BTagging_AntiKt4EMPFlow.SV1_pb.SV1_pu.IP3D_pb.IP3D_pu.MV2c00_discriminant.MV2c10_discriminant.MV2c20_discriminant.MVb_discriminant.MV1_discriminant.MSV_vertices.MV1c_discriminant.SV0_badTracksIP.SV0_vertices.SV1_badTracksIP.SV1_vertices.BTagTrackToJetAssociator.BTagTrackToJetAssociatorBB.JetFitter_JFvertices.JetFitter_tracksAtPVlinks.MSV_badTracksIP.MV2c100_discriminant.MV2m_pu.MV2m_pc.MV2m_pb", - "AntiKt4EMPFlowJets.btagging.constituentLinks.GhostBHadronsFinal.GhostBHadronsInitial.GhostBQuarksFinal.GhostCHadronsFinal.GhostCHadronsInitial.GhostCQuarksFinal.GhostHBosons.GhostPartons.GhostTQuarksFinal.GhostTausFinal.GhostWBosons.GhostZBosons.GhostTruth.OriginVertex.GhostAntiKt3TrackJet.GhostAntiKt4TrackJet.GhostTrack.HighestJVFVtx.ConeExclBHadronsFinal.ConeExclCHadronsFinal.ConeExclTausFinal.HighestJVFLooseVtx.GhostAntiKt2TrackJet.Jvt.JvtJvfcorr.JvtRpt.SumPtTrkPt500.SumPtTrkPt1000.TrackWidthPt1000.TrackWidthPt500"] + "AntiKt4EMPFlowJets.JetEMScaleMomentum_pt.JetEMScaleMomentum_eta.JetEMScaleMomentum_phi.JetEMScaleMomentum_m.Jvt.JvtJvfcorr.JvtRpt.btagging.constituentLinks.GhostBHadronsFinal.GhostBHadronsInitial.GhostBQuarksFinal.GhostCHadronsFinal.GhostCHadronsInitial.GhostCQuarksFinal.GhostHBosons.GhostPartons.GhostTQuarksFinal.GhostTausFinal.GhostWBosons.GhostZBosons.GhostTruth.OriginVertex.GhostAntiKt3TrackJet.GhostAntiKt4TrackJet.GhostTrack.HighestJVFVtx.ConeExclBHadronsFinal.ConeExclCHadronsFinal.ConeExclTausFinal.HighestJVFLooseVtx.GhostAntiKt2TrackJet.Jvt.JvtJvfcorr.JvtRpt.SumPtTrkPt500.SumPtTrkPt1000.TrackWidthPt1000.TrackWidthPt500"] HIGG3D1ExtraTruthVariables = [ "Electrons.truthOrigin.truthType.truthParticleLink.bkgTruthType.bkgMotherPdgId.bkgTruthOrigin.bkgTruthParticleLink.firstEgMotherTruthType.firstEgMotherTruthOrigin.firstEgMotherPdgId.firstEgMotherTruthParticleLink", "AntiKt4LCTopoJets.ConeTruthLabelID.PartonTruthLabelID", @@ -31,5 +31,4 @@ HIGG3D1ExtraContainers = [ ] HIGG3D1ExtraTruthContainers = [ "TruthEvents", "TruthParticles", "TruthVertices", - "AntiKt4TruthJets", "MuonTruthParticles" ] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG3D1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG3D1.py index 270bddd16796689bf262f21253dc2033c96aab8e..5bebe3819fa12879b92c34fe01a9ed828fc76295 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG3D1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG3D1.py @@ -1,6 +1,6 @@ #******************************************************************** -# HIGG3D1.py -# reductionConf flag HIGG3D1 in Reco_tf.py +# HIGG3D1.py +# reductionConf flag HIGG3D1 in Reco_tf.py #******************************************************************** from DerivationFrameworkCore.DerivationFrameworkMaster import * @@ -10,10 +10,12 @@ from DerivationFrameworkJetEtMiss.ExtendedJetCommon import * from DerivationFrameworkJetEtMiss.METCommon import * from DerivationFrameworkEGamma.EGammaCommon import * from DerivationFrameworkMuons.MuonsCommon import * -###from DerivationFrameworkFlavourTag.FlavourTagCommon import * - +from DerivationFrameworkFlavourTag.FlavourTagCommon import * +from DerivationFrameworkFlavourTag.HbbCommon import * from DerivationFrameworkCore.WeightMetadata import * +from JetRec.JetRecStandard import jtm + from DerivationFrameworkHiggs.TruthCategories import * from AthenaCommon.GlobalFlags import globalflags @@ -32,14 +34,17 @@ HIGG3D1ThinningHelper = ThinningHelper( "HIGG3D1ThinningHelper" ) HIGG3D1ThinningHelper.TriggerChains = "HLT_mu.* | HLT_e.* | HLT_2e.* | HLT_2mu.*" HIGG3D1ThinningHelper.AppendToStream( HIGG3D1Stream ) -#================ -# THINNING -#================ +#==================================================================== +# THINNING TOOLS +#==================================================================== + thinningTools=[] -# MET/Jet tracks -thinning_expression = "(InDetTrackParticles.pt > 0.5*GeV) && (InDetTrackParticles.numberOfPixelHits > 0) && (InDetTrackParticles.numberOfSCTHits > 5) && (abs(DFCommonInDetTrackZ0AtPV) < 1.5)" +# InDetTrackParticle Thinning from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__TrackParticleThinning + +#MET Track Thinning +thinning_expression = "(InDetTrackParticles.pt > 0.5*GeV) && (InDetTrackParticles.numberOfPixelHits > 0) && (InDetTrackParticles.numberOfSCTHits > 5) && (abs(DFCommonInDetTrackZ0AtPV) < 1.5)" HIGG3D1MetTPThinningTool = DerivationFramework__TrackParticleThinning(name = "HIGG3D1MetTPThinningTool", ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), SelectionString = thinning_expression, @@ -48,6 +53,7 @@ HIGG3D1MetTPThinningTool = DerivationFramework__TrackParticleThinning(name ToolSvc += HIGG3D1MetTPThinningTool thinningTools.append(HIGG3D1MetTPThinningTool) +#Jet Track Thinning from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__JetTrackParticleThinning HIGG3D1JetTPThinningTool = DerivationFramework__JetTrackParticleThinning( name = "HIGG3D1JetTPThinningTool", ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), @@ -57,13 +63,13 @@ HIGG3D1JetTPThinningTool = DerivationFramework__JetTrackParticleThinning( name ToolSvc += HIGG3D1JetTPThinningTool thinningTools.append(HIGG3D1JetTPThinningTool) - # Tracks associated with Muons from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__MuonTrackParticleThinning HIGG3D1MuonTPThinningTool = DerivationFramework__MuonTrackParticleThinning(name = "HIGG3D1MuonTPThinningTool", ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), MuonKey = "Muons", InDetTrackParticlesKey = "InDetTrackParticles") + ToolSvc += HIGG3D1MuonTPThinningTool thinningTools.append(HIGG3D1MuonTPThinningTool) @@ -84,27 +90,6 @@ HIGG3D1TPThinningTool = DerivationFramework__TrackParticleThinning(name ToolSvc += HIGG3D1TPThinningTool thinningTools.append(HIGG3D1TPThinningTool) -# Truth particles -truth_cond1 = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs -truth_cond2 = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))" # Leptons -truth_cond3 = "(abs(TruthParticles.pdgId) == 6)" # Top quark -truth_cond4 = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 5*GeV))" # Photon - -truth_expression = truth_cond1+' || '+truth_cond2 +' || '+truth_cond3 +' || '+truth_cond4 - -from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning -HIGG3D1TruthThinningTool = DerivationFramework__GenericTruthThinning(name = "HIGG3D1TruthThinningTool", - ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), - ParticleSelectionString = truth_expression, - PreserveDescendants = True, - PreserveAncestors = True, - SimBarcodeOffset = DerivationFrameworkSimBarcodeOffset) - -if globalflags.DataSource()=='geant4': - ToolSvc += HIGG3D1TruthThinningTool - thinningTools.append(HIGG3D1TruthThinningTool) - - # Calo cluster thinning from DerivationFrameworkCalo.DerivationFrameworkCaloConf import DerivationFramework__CaloClusterThinning from DerivationFrameworkCalo.DerivationFrameworkCaloConf import DerivationFramework__JetCaloClusterThinning @@ -129,18 +114,43 @@ HIGG3D1MuonCCThinningTool = DerivationFramework__CaloClusterThinning( name ToolSvc += HIGG3D1MuonCCThinningTool thinningTools.append(HIGG3D1MuonCCThinningTool) +# Seems to no longer be needed/causes errors + # Calo Clusters associated with AntiKt4EM Jets -HIGG3D1AntiKt4EMCCThinningTool = DerivationFramework__JetCaloClusterThinning(name = "HIGG3D1AntiKt4EMCCThinningTool", - ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), - SGKey = "AntiKt4EMTopoJets", - TopoClCollectionSGKey = "CaloCalTopoClusters", - SelectionString = "AntiKt4EMTopoJets.DFCommonJets_Calib_pt > 15*GeV") -ToolSvc += HIGG3D1AntiKt4EMCCThinningTool -thinningTools.append(HIGG3D1AntiKt4EMCCThinningTool) +#HIGG3D1AntiKt4EMCCThinningTool = DerivationFramework__JetCaloClusterThinning(name = "HIGG3D1AntiKt4EMCCThinningTool", +# ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), +# SGKey = "AntiKt4EMTopoJets", +# TopoClCollectionSGKey = "CaloCalTopoClusters", +# SelectionString = "AntiKt4EMTopoJets.DFCommonJets_Calib_pt > 15*GeV") +#ToolSvc += HIGG3D1AntiKt4EMCCThinningTool +#thinningTools.append(HIGG3D1AntiKt4EMCCThinningTool) + ############################################################### + +# Truth particles +truth_cond1 = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs +truth_cond2 = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))" # Leptons +truth_cond3 = "(abs(TruthParticles.pdgId) == 6)" # Top quark +truth_cond4 = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 5*GeV))" # Photon +truth_cond5 = "((abs(TruthParticles.pdgId) >= 35) && (abs(TruthParticles.pdgId) <= 37))" # BSM Higgs + +truth_expression = truth_cond1+' || '+truth_cond2 +' || '+truth_cond3 +' || '+truth_cond4 +' || '+truth_cond5 + +from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning +HIGG3D1TruthThinningTool = DerivationFramework__GenericTruthThinning(name = "HIGG3D1TruthThinningTool", + ThinningService = HIGG3D1ThinningHelper.ThinningSvc(), + ParticleSelectionString = truth_expression, + PreserveDescendants = True, + PreserveAncestors = True, + SimBarcodeOffset = DerivationFrameworkSimBarcodeOffset) + +if globalflags.DataSource()=='geant4': + ToolSvc += HIGG3D1TruthThinningTool + thinningTools.append(HIGG3D1TruthThinningTool) + #==================================================================== -# SKIMMING TOOL +# SKIMMING TOOL #==================================================================== electronIDRequirements = '(Electrons.DFCommonElectronsLHVeryLoose)' electronRequirements = '(Electrons.pt > 7*GeV) && (abs(Electrons.eta) < 2.6) && '+electronIDRequirements @@ -150,7 +160,9 @@ leadMuon = muonsRequirements + ' && (Muons.pt > 17*GeV)' eeSelection = '((count('+electronRequirements+') >= 2) && (count('+leadElectron+') >= 1))' mmSelection = '((count('+muonsRequirements+') >= 2) && (count('+leadMuon+') >= 1))' + emSelection = '(((count('+electronRequirements+') >= 1) && (count('+muonsRequirements+') >= 1)) && ((count('+leadElectron+') >= 1) || (count('+leadMuon+') >= 1)))' + expression = eeSelection+' || '+mmSelection+' || '+emSelection from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool @@ -164,26 +176,44 @@ higg3d1PreSeq = CfgMgr.AthSequencer("HIGG3d1PreSelectionSequence") #==================================================================== # RESTORE JET COLLECTIONS REMOVED BETWEEN r20 AND r21 #==================================================================== +OutputJets["HIGG3D1"] = ["AntiKt4EMPFlowJets", + "AntiKtVR30Rmax4Rmin02TrackJets"] -reducedJetList = ["AntiKt2PV0TrackJets","AntiKt4PV0TrackJets"] +reducedJetList = ["AntiKt2PV0TrackJets", + "AntiKt4PV0TrackJets", + "AntiKt10LCTopoJets" # Needed for Ghost association + ] if jetFlags.useTruth: reducedJetList += ["AntiKt4TruthJets", "AntiKt4TruthWZJets"] -replaceAODReducedJets(reducedJetList, higg3d1Seq,"HIGG3D1Jets") +replaceAODReducedJets(reducedJetList, higg3d1Seq,"HIGG3D1") + +addDefaultTrimmedJets(higg3d1Seq,"HIGG3D1") + +#==================================================================== +# Create variable-R trackjets and dress AntiKt10LCTopo with ghost VR-trkjet +#==================================================================== +addVRJets(higg3d1Seq) + +#addVRJets(higg3d1Seq, "AntiKtVR30Rmax4Rmin02Track", "GhostVR30Rmax4Rmin02TrackJet", +# VRJetAlg="AntiKt", VRJetRadius=0.4, VRJetInputs="pv0track", +# ghostArea = 0 , ptmin = 2000, ptminFilter = 7000, +# variableRMinRadius = 0.02, variableRMassScale = 30000, calibOpt = "none") #=================================================================== -# Run b-tagging +# B-TAGGING #=================================================================== from BTagging.BTaggingFlags import BTaggingFlags # alias for VR -# BTaggingFlags.CalibrationChannelAliases += ["AntiKt4EMTopo"] +BTaggingFlags.CalibrationChannelAliases += ["AntiKtVR30Rmax4Rmin02Track->AntiKtVR30Rmax4Rmin02Track,AntiKt4EMTopo"] + +#=================================================================== +# Hbb tagger +#=================================================================== +addHbbTagger(higg3d1Seq, ToolSvc) -from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit -# must re-tag AntiKt4LCTopoJets and AntiKt4PV0TrackJets to make JetFitterNN work with corresponding VR jets (nikola: why?) -# also, re-tag R=0.2 track jets -###FlavorTagInit( JetCollections = ["AntiKt4PV0TrackJets", "AntiKt2PV0TrackJets"], Sequencer = higg3d1Seq ) -FlavorTagInit( JetCollections = ["AntiKt4PV0TrackJets"], Sequencer = higg3d1Seq ) -### add back VR jets !!!! +# Add flavor tagging to the PFlow Jet collections +FlavorTagInit(JetCollections = ['AntiKt4EMPFlowJets'], Sequencer = higg3d1Seq) #==================================================================== # Add non-prompt lepton tagging @@ -192,8 +222,9 @@ FlavorTagInit( JetCollections = ["AntiKt4PV0TrackJets"], Sequencer = higg3d1Seq import JetTagNonPromptLepton.JetTagNonPromptLeptonConfig as JetTagConfig higg3d1Seq += JetTagConfig.GetDecoratePromptLeptonAlgs() + #======================================= -# CREATE THE DERIVATION KERNEL ALGORITHM +# CREATE THE DERIVATION KERNEL ALGORITHM #======================================= from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel higg3d1PreSeq += CfgMgr.DerivationFramework__DerivationKernel("HIGG3D1Kernel_skimming", @@ -218,13 +249,6 @@ from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper HIGG3D1SlimmingHelper = SlimmingHelper("HIGG3D1SlimmingHelper") from DerivationFrameworkHiggs.HIGG3D1ExtraContent import * -#HIGG3D1SlimmingHelper.AppendToDictionary = { - # "AntiKtVR30Rmax4Rmin02TrackJets" : "xAOD::JetContainer" , - # "AntiKtVR30Rmax4Rmin02TrackJetsAux" : "xAOD::JetAuxContainer" , - # "BTagging_AntiKtVR30Rmax4Rmin02Track" : "xAOD::BTaggingContainer" , - # "BTagging_AntiKtVR30Rmax4Rmin02TrackAux" : "xAOD::BTaggingAuxContainer", -# } - HIGG3D1SlimmingHelper.SmartCollections = ["Electrons", "Photons", "Muons", @@ -232,18 +256,28 @@ HIGG3D1SlimmingHelper.SmartCollections = ["Electrons", "MET_Reference_AntiKt4EMTopo", "MET_Reference_AntiKt4LCTopo", "AntiKt4EMTopoJets", + "AntiKt4EMPFlowJets", "AntiKt4LCTopoJets", "BTagging_AntiKt4EMTopo", + "BTagging_AntiKt4EMPFlow", + "BTagging_AntiKtVR30Rmax4Rmin02Track", "InDetTrackParticles", "PrimaryVertices"] HIGG3D1SlimmingHelper.ExtraVariables = list(HIGG3D1ExtraVariables) HIGG3D1SlimmingHelper.AllVariables = list(HIGG3D1ExtraContainers) HIGG3D1SlimmingHelper.ExtraVariables += JetTagConfig.GetExtraPromptVariablesForDxAOD() +HIGG3D1SlimmingHelper.AppendToDictionary = {'BTagging_AntiKt4EMPFlow':'xAOD::BTaggingContainer', + 'BTagging_AntiKt4EMPFlowAux':'xAOD::BTaggingAuxContainer', + 'AntiKtVR30Rmax4Rmin02Track':'xAOD::JetContainer', + 'AntiKtVR30Rmax4Rmin02TrackAux':'xAOD::JetAuxContainer', + 'BTagging_AntiKtVR30Rmax4Rmin02Track':'xAOD::BTaggingContainer', + 'BTagging_AntiKtVR30Rmax4Rmin02TrackAux':'xAOD::BTaggingAuxContainer' + } if globalflags.DataSource()=='geant4': - HIGG3D1SlimmingHelper.AllVariables += list(HIGG3D1ExtraTruthContainers) - HIGG3D1SlimmingHelper.ExtraVariables += list(HIGG3D1ExtraTruthVariables) + HIGG3D1SlimmingHelper.SmartCollections += ["AntiKt4TruthJets", + "AntiKt4TruthWZJets"] # Add special truth containers from DerivationFrameworkMCTruth.MCTruthCommon import addStandardTruthContents @@ -256,12 +290,27 @@ if globalflags.DataSource()=='geant4': "xAOD::TruthParticleAuxContainer#TruthPhotonsAux.", "xAOD::TruthParticleContainer#TruthNeutrinos", "xAOD::TruthParticleAuxContainer#TruthNeutrinosAux." ] + HIGG3D1SlimmingHelper.AllVariables += list(HIGG3D1ExtraTruthContainers) + HIGG3D1SlimmingHelper.ExtraVariables += list(HIGG3D1ExtraTruthVariables) # Add Trigger content HIGG3D1SlimmingHelper.IncludeMuonTriggerContent = True HIGG3D1SlimmingHelper.IncludeEGammaTriggerContent = True # Add MET to output stream -addMETOutputs(HIGG3D1SlimmingHelper, ["AntiKt4EMPFlow", "Track"]) +addMETOutputs(HIGG3D1SlimmingHelper, ["AntiKt4EMPFlow", "Track"], + ["AntiKt4EMPFlow", + "AntiKt4EMTopo"] # smart collections list + ) +addJetOutputs(HIGG3D1SlimmingHelper, ["HIGG3D1"], + [], # smart collections list + ["AntiKt2PV0TrackJets", + "AntiKt4TruthJets", + "AntiKt4TruthWZJets", + "AntiKt4EMPFlowJets", + "AntiKt10TruthTrimmedPtFrac5SmallR20Jets", + "AntiKt10LCTopoJets", + "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets"] #veto list + ) HIGG3D1SlimmingHelper.AppendContentToStream(HIGG3D1Stream)