From fba6e5ec0e6c1ea47fc6644234daf9592b548cba Mon Sep 17 00:00:00 2001 From: giacinto <giacinto@sbaint1.physics.sunysb.edu> Date: Sat, 10 Mar 2018 21:41:05 -0500 Subject: [PATCH] new HIGG5D2: fixed NonPromptLepton, added PFlow jets, removed tracks in jet, slimmed tau tracks, added Truth3, reduced TruthParticles Former-commit-id: 681c9368c0472550b407e794599c05ea22de6c3a --- .../python/HIGG5Common.py | 27 ++++++----- .../python/HIGG5D2ExtraContent.py | 2 +- .../DerivationFrameworkHiggs/share/HIGG5D2.py | 48 +++++++++++++++---- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5Common.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5Common.py index b938539cd01d..73f76a364b8d 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5Common.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5Common.py @@ -24,7 +24,7 @@ def getHIGG5Common() : ] def getHIGG5CommonTruthContainers() : - return ["TruthElectrons", "TruthMuons", "TruthTaus","TruthNeutrinos","TruthTop","TruthBSM","TruthBoson"] + return ["TruthElectrons", "TruthMuons", "TruthTaus", "TruthPhotons", "TruthNeutrinos", "TruthTop", "TruthBSM", "TruthBoson"] def getHIGG5CommonTruth() : return [ @@ -34,9 +34,9 @@ def getHIGG5CommonTruth() : "TruthVertices.barcode.x.y.z.t.id.incomingParticleLinks.outgoingParticleLinks", # "TruthParticles.px.py.pz.e.m.decayVtxLink.prodVtxLink.barcode.pdgId.status.TopHadronOriginFlag.classifierParticleOrigin.classifierParticleType.classifierParticleOutCome.dressedPhoton.polarizationTheta.polarizationPhi", ("TruthParticles.px.py.pz.e.m.decayVtxLink.prodVtxLink.barcode.pdgId.status.TopHadronOriginFlag" - ".classifierParticleOrigin.classifierParticleType.classifierParticleOutCome" - ".dressedPhoton.polarizationPhi.polarizationTheta" - ".truthOrigin.truthParticleLink.truthType"), + ".classifierParticleOrigin.classifierParticleType.classifierParticleOutCome" + ".dressedPhoton.polarizationPhi.polarizationTheta" + ".truthOrigin.truthParticleLink.truthType"), "MuonTruthParticles.barcode.decayVtxLink.e.m.pdgId.prodVtxLink.px.py.pz.recoMuonLink.status.truthOrigin.truthParticleLink.truthType" ] @@ -53,22 +53,24 @@ def filterContentList(pattern, content_list) : # --- common thinning tools def getTruthThinningTool(tool_prefix, thinning_helper) : from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkIsMonteCarlo + from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning if not DerivationFrameworkIsMonteCarlo : return None # MC truth thinning (not for data) - truth_cond_WZH = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs - truth_cond_Lepton = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))" # Leptons - truth_cond_Top_Quark = "((abs(TruthParticles.pdgId) == 6))" - truth_cond_BC_Quark = "((abs(TruthParticles.pdgId) == 5))||((abs(TruthParticles.pdgId) == 4))" # C quark and Bottom quark - truth_cond_Hadrons = "((abs(TruthParticles.pdgId) >= 400)&&(abs(TruthParticles.pdgId)<600))||((abs(TruthParticles.pdgId) >= 4000)&&(abs(TruthParticles.pdgId)<6000))||((abs(TruthParticles.pdgId) >= 10400)&&(abs(TruthParticles.pdgId)<10600))||((abs(TruthParticles.pdgId) >= 20400)&&(abs(TruthParticles.pdgId)<20600))" - truth_expression = '('+truth_cond_WZH+' || '+truth_cond_Lepton +' || '+truth_cond_Top_Quark+') || (('+ truth_cond_BC_Quark + " || " + truth_cond_Hadrons+')&&(sqrt(TruthParticles.px*TruthParticles.px+TruthParticles.py*TruthParticles.py)>5000))' - from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning +# truth_cond_WZH = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs +# truth_cond_Lepton = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))" # Leptons + truth_cond_Quark = "((abs(TruthParticles.pdgId) == 5))" # Top quark and Bottom quark +# truth_cond_Photon = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 1*GeV))" # Photon +# truth_expression = '('+truth_cond_WZH+' || '+truth_cond_Lepton +' || '+truth_cond_Quark +' || '+truth_cond_Photon+')' + truth_expression = truth_cond_Quark + MCThinningTool = DerivationFramework__GenericTruthThinning( name = tool_prefix + "MCThinningTool", ThinningService = thinning_helper.ThinningSvc(), ParticleSelectionString = truth_expression, PreserveDescendants = False, - PreserveGeneratorDescendants = False, + # PreserveGeneratorDescendants = False, + PreserveGeneratorDescendants = True, # giacinto PreserveAncestors = True) from AthenaCommon.AppMgr import ToolSvc ToolSvc += MCThinningTool @@ -141,7 +143,6 @@ def getAntiKt4EMTopoTrackParticleThinning(tool_prefix, thinning_helper, **kwargs kwargs.setdefault( 'SelectionString','(AntiKt4EMTopoJets.DFCommonJets_Calib_pt > 15*GeV)') return getJetTrackParticleThinning(tool_prefix, thinning_helper, **kwargs) -#PFlow def getAntiKt4EMPFlowTrackParticleThinning(tool_prefix, thinning_helper, **kwargs) : kwargs.setdefault( 'name',tool_prefix + 'AntiKt4EMPFlowJetTPThinningTool') kwargs.setdefault( 'JetKey','AntiKt4EMPFlowJets') diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5D2ExtraContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5D2ExtraContent.py index e7d7a8e9b6bd..935ffe4b6de4 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5D2ExtraContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/python/HIGG5D2ExtraContent.py @@ -12,4 +12,4 @@ ExtraContentTruth=HIGG5Common.getHIGG5CommonTruth() ExtraContainers=[] -ExtraContainersTruth=[] +ExtraContainersTruth=HIGG5Common.getHIGG5CommonTruthContainers() diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG5D2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG5D2.py index 7e13c2c0d26b..8fd7da435070 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG5D2.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG5D2.py @@ -23,7 +23,6 @@ from AthenaCommon.GlobalFlags import globalflags if DerivationFrameworkIsMonteCarlo : from DerivationFrameworkHiggs.TruthCategories import * - #==================================================================== # SET UP STREAM #==================================================================== @@ -46,22 +45,37 @@ HIGG5D2ThinningHelper.TriggerChains = 'HLT_e.*|HLT_mu.*|HLT_xe.*|HLT_j.*' HIGG5D2ThinningHelper.AppendToStream(HIGG5D2Stream) import DerivationFrameworkHiggs.HIGG5Common as HIGG5Common -thinningTools.append( HIGG5Common.getAntiKt4EMTopoTrackParticleThinning('HIGG5D2',HIGG5D2ThinningHelper)) -# thinningTools.append( HIGG5Common.getAntiKt10LCTopoTrackParticleThinning('HIGG5D2',HIGG5D2ThinningHelper)) +#Do not store anymore tracks that are associated to jets +#TrackParticles thinning +#thinningTools.append( HIGG5Common.getAntiKt4EMTopoTrackParticleThinning('HIGG5D2',HIGG5D2ThinningHelper)) +#thinningTools.append( HIGG5Common.getAntiKt4EMPFlowTrackParticleThinning('HIGG5D2',HIGG5D2ThinningHelper)) +#thinningTools.append( HIGG5Common.getAntiKt10LCTopoTrackParticleThinning('HIGG5D2',HIGG5D2ThinningHelper)) thinningTools.append( HIGG5Common.getMuonTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) thinningTools.append( HIGG5Common.getElectronTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) -thinningTools.append( HIGG5Common.getPhotonTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) +##thinningTools.append( HIGG5Common.getPhotonTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) thinningTools.append( HIGG5Common.getTauTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) +thinningTools.append( HIGG5Common.getTCCTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) + +#Track Particles + CaloCluster thinning +thinningTools.append( HIGG5Common.getAntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20Thinning('HIGG5D2',HIGG5D2ThinningHelper) ) + +#calocluster thinning thinningTools.append( HIGG5Common.getTauCaloClusterThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) thinningTools.append( HIGG5Common.getAntiKt10LCTopoCaloClusterThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) -thinningTools.append( HIGG5Common.getTCCTrackParticleThinning( 'HIGG5D2',HIGG5D2ThinningHelper) ) + +#generic object thinning thinningTools.append( HIGG5Common.getAntiKt10LCTopoTrimmedPtFrac5SmallR20Thinning('HIGG5D2',HIGG5D2ThinningHelper) ) -thinningTools.append( HIGG5Common.getAntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20Thinning('HIGG5D2',HIGG5D2ThinningHelper) ) -# MC truth thinning (not for data) -if DerivationFrameworkIsMonteCarlo : - thinningTools.append(HIGG5Common.getTruthThinningTool('HIGG5D2', HIGG5D2ThinningHelper)) + +if DerivationFrameworkIsMonteCarlo: + #thinning tool is only for b-quarks, the rest now relies on Truth3 + thinningTools.append(HIGG5Common.getTruthThinningTool('HIGG5D2', HIGG5D2ThinningHelper)) + #add Truth3 information + from DerivationFrameworkMCTruth.MCTruthCommon import * + addStandardTruthContents() + + #======================================================================== # lepton selection (keep isolation failed leptons for QCD-MJ estimation) @@ -72,6 +86,7 @@ lepSel = '( count( (Muons.pt > 20.0*GeV) && (abs(Muons.eta) < 2.6) && (Muons.DFC # jet selection #==================================================================== jetSel = '(( count( (AntiKt4EMTopoJets.DFCommonJets_Calib_pt > 15.*GeV) && (abs(AntiKt4EMTopoJets.DFCommonJets_Calib_eta) < 2.6) ) ) > 0)' +jetSel += '|| (( count( (AntiKt4EMPFlowJets.pt > 15.*GeV) && (abs(AntiKt4EMPFlowJets.eta) < 2.6) ) ) > 0)' jetSel += '|| (( count( (AntiKt4EMTopoJets.pt > 100.0*GeV) && (abs(AntiKt4EMTopoJets.eta) < 2.6) ) ) > 0)' jetSel += '|| (( count( (AntiKt10LCTopoJets.pt > 100.0*GeV) && (abs(AntiKt10LCTopoJets.eta) < 2.6) ) ) > 0)' jetSel += '|| (( count( (AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets.pt > 100.0*GeV) && (abs(AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets.eta) < 2.6) ) ) > 0)' @@ -304,6 +319,10 @@ from BTagging.BTaggingFlags import BTaggingFlags # alias for VR BTaggingFlags.CalibrationChannelAliases += ["AntiKtVR30Rmax4Rmin02Track->AntiKtVR30Rmax4Rmin02Track,AntiKt4EMTopo"] +from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit +FlavorTagInit(JetCollections = ['AntiKt4EMPFlowJets'], Sequencer = higg5d2Seq) +FlavorTagInit(JetCollections = ['AntiKt4PV0TrackJets'], Sequencer = higg5d2Seq) + # Jet calibration should come after fat jets # applyJetCalibration_xAODColl(jetalg="AntiKt4EMTopo", sequence=higg5d2Seq) # # applyJetCalibration_CustomColl(jetalg="AntiKt10LCTopoTrimmedPtFrac5SmallR20", sequence=higg5d2Seq) @@ -353,6 +372,14 @@ HIGG5D2SlimmingHelper.AppendToDictionary = { "AntiKtVR30Rmax4Rmin02TrackJetsAux" : "xAOD::JetAuxContainer" , "BTagging_AntiKtVR30Rmax4Rmin02Track" : "xAOD::BTaggingContainer" , "BTagging_AntiKtVR30Rmax4Rmin02TrackAux" : "xAOD::BTaggingAuxContainer", + "BTagging_AntiKt4EMPFlow" : "xAOD::BTaggingContainer" , + "BTagging_AntiKt4EMPFlowAux" : "xAOD::BTaggingAuxContainer" , + "TruthBoson" : "xAOD::TruthParticleContainer" , + "TruthBosonAux" : "xAOD::TruthParticleAuxContainer" , + "TruthTop" : "xAOD::TruthParticleContainer" , + "TruthTopAux" : "xAOD::TruthParticleAuxContainer" , + "TruthBSM" : "xAOD::TruthParticleContainer" , + "TruthBSMAux" : "xAOD::TruthParticleAuxContainer" , } HIGG5D2SlimmingHelper.SmartCollections = [ "Electrons", @@ -360,11 +387,14 @@ HIGG5D2SlimmingHelper.SmartCollections = [ "Electrons", "Muons", "TauJets", "MET_Reference_AntiKt4EMTopo", + "MET_Reference_AntiKt4EMPFlow", "AntiKt4EMTopoJets", + "AntiKt4EMPFlowJets", "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets", "AntiKt4TruthJets", # "AntiKtVR30Rmax4Rmin02Track", "BTagging_AntiKt4EMTopo", + "BTagging_AntiKt4EMPFlow", "BTagging_AntiKt2Track", # "BTagging_AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets", # "BTagging_AntiKtVR30Rmax4Rmin02Track", -- GitLab