diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py index a881fcb9034580051b6c9ec1cf331de08b94a712..536d75b9cffe8c54cce5394c2908e01c156b63c8 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py @@ -35,9 +35,14 @@ from DerivationFrameworkPhysicsValidation.PHYSVAL import PHYSVALCfg # HIGG1D1 Higgs->gammagamma derivation from DerivationFrameworkHiggs.HIGG1D1 import HIGG1D1Cfg +# FTAG derivations +from DerivationFrameworkFlavourTag.FTAG1 import FTAG1Cfg +from DerivationFrameworkFlavourTag.FTAG2 import FTAG2Cfg + # Avoids compilation warnings from Flake8 __all__ = ['TEST1Cfg','TEST2Cfg','TEST3Cfg','TEST4Cfg','TEST5Cfg','TEST6Cfg', 'TRUTH0Cfg','TRUTH1Cfg','TRUTH3Cfg', 'PHYSCfg', 'PHYSVALCfg', + 'FTAG1Cfg', 'FTAG2Cfg', 'HIGG1D1Cfg'] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py index 2fe0f06b63b7feefae573d06adc25d0f1bb86e8d..eb21772918e9c441eca795decfc7ecc4ca9dee71 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py @@ -58,6 +58,8 @@ ContainersOnTheFly = [ ["AntiKt4EMTopoCSSKJetsAux","xAOD::JetAuxContainer"], ["AntiKt4EMPFlowCSSKJets","xAOD::JetContainer"], ["AntiKt4EMPFlowCSSKJetsAux","xAOD::JetAuxContainer"], + ["AntiKt10PV0TrackJets","xAOD::JetContainer"], + ["AntiKt10PV0TrackJetsAux","xAOD::JetAuxContainer"], ["AntiKt10LCTopoJets","xAOD::JetContainer"], ["AntiKt10LCTopoJetsAux","xAOD::JetAuxContainer"], @@ -105,6 +107,22 @@ ContainersOnTheFly = [ ["MET_Core_AntiKt4EMPFlowAux",'xAOD::MissingETAuxContainer'], ["METAssoc_AntiKt4EMPFlow",'xAOD::MissingETAssociationMap'], ["METAssoc_AntiKt4EMPFlowAux",'xAOD::MissingETAuxAssociationMap'], + + ["EMOriginTopoClusters","xAOD::CaloClusterContainer"], + ["EMOriginTopoClustersAux","xAOD::ShallowAuxContainer"], + ["LCOriginTopoClusters","xAOD::CaloClusterContainer"], + ["LCOriginTopoClustersAux","xAOD::ShallowAuxContainer"], + + ["BTagging_AntiKt4EMPFlowJFVtx","xAOD::BTagVertexContainer"], + ["BTagging_AntiKt4EMPFlowJFVtxAux","xAOD::BTagVertexAuxContainer"], + ["BTagging_AntiKt4EMPFlowSecVtx","xAOD::VertexContainer"], + ["BTagging_AntiKt4EMPFlowSecVtxAux","xAOD::VertexAuxContainer"], + + ["CHSGChargedParticleFlowObjects","xAOD::FlowElementContainer"], + ["CHSGChargedParticleFlowObjectsAux","xAOD::ShallowAuxContainer"], + ["CHSGNeutralParticleFlowObjects","xAOD::FlowElementContainer"], + ["CHSGNeutralParticleFlowObjectsAux","xAOD::ShallowAuxContainer"], + ] from InDetPrepRawDataToxAOD.InDetDxAODJobProperties import InDetDxAODFlags diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py new file mode 100644 index 0000000000000000000000000000000000000000..fe15de3fd1de785156b9ea693e1180d2794a4763 --- /dev/null +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py @@ -0,0 +1,112 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +#!/usr/bin/env python +#==================================================================== +# DAOD_FTAG1.py +# This defines DAOD_FTAG1, an unskimmed DAOD format for Run 3. +# It contains the variables and objects needed for the large majority +# of physics analyses in ATLAS. +# It requires the flag FTAG1 in Derivation_tf.py +#==================================================================== + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +# Main algorithm config +def FTAG1KernelCfg(ConfigFlags, name='FTAG1Kernel', **kwargs): + """Configure the derivation framework driving algorithm (kernel) for FTAG1""" + acc = ComponentAccumulator() + + # Common augmentations + from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg + acc.merge(PhysCommonAugmentationsCfg(ConfigFlags, TriggerListsHelper = kwargs['TriggerListsHelper'])) + + + # Finally the kernel itself + thinningTools = [] + + DerivationKernel = CompFactory.DerivationFramework.DerivationKernel + acc.addEventAlgo(DerivationKernel(name, ThinningTools = thinningTools)) + return acc + + +def FTAG1Cfg(ConfigFlags): + + acc = ComponentAccumulator() + + # Get the lists of triggers needed for trigger matching. + # This is needed at this scope (for the slimming) and further down in the config chain + # for actually configuring the matching, so we create it here and pass it down + # TODO: this should ideally be called higher up to avoid it being run multiple times in a train + from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper + FTAG1TriggerListsHelper = TriggerListsHelper() + + # Common augmentations + acc.merge(FTAG1KernelCfg(ConfigFlags, name="FTAG1Kernel", StreamName = 'StreamDAOD_FTAG1', TriggerListsHelper = FTAG1TriggerListsHelper)) + + # ============================ + # Define contents of the format + # ============================= + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper + + FTAG1SlimmingHelper = SlimmingHelper("FTAG1SlimmingHelper", NamesAndTypes = ConfigFlags.Input.TypedCollections) + + FTAG1SlimmingHelper.SmartCollections = [ + "Electrons", + "Muons", + "PrimaryVertices", + "InDetTrackParticles", + "AntiKt4EMPFlowJets", + "BTagging_AntiKt4EMPFlow", + "AntiKtVR30Rmax4Rmin02PV0TrackJets", + "BTagging_AntiKtVR30Rmax4Rmin02Track", + "MET_Baseline_AntiKt4EMPFlow", + "AntiKt10UFOCSSKJets", + "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets", + ] + FTAG1SlimmingHelper.AllVariables = [ + "EventInfo", + "PrimaryVertices", + "InDetTrackParticles", + "InDetLargeD0TrackParticles", + "BTagging_AntiKt4EMPFlow", + "BTagging_AntiKtVR30Rmax4Rmin02Track", + "BTagging_AntiKt4EMPFlowJFVtx", + "BTagging_AntiKt4EMPFlowSecVtx", + "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets", + "TruthParticles", + "TruthVertices", + "TruthBottom", "TruthElectrons","TruthMuons","TruthTaus", + ] + + if ConfigFlags.BTagging.Pseudotrack: + FTAG1SlimmingHelper.AllVariables += [ "InDetPseudoTrackParticles" ] + + if ConfigFlags.BTagging.Trackless: + FTAG1SlimmingHelper.AllVariables += [ + "JetAssociatedPixelClusters", + "JetAssociatedSCTClusters", + ] + + from DerivationFrameworkFlavourTag import FtagBaseContent + + # Static content + FtagBaseContent.add_static_content_to_SlimmingHelper(FTAG1SlimmingHelper) + + # Add truth containers + if ConfigFlags.Input.isMC: + FtagBaseContent.add_truth_to_SlimmingHelper(FTAG1SlimmingHelper) + + # Add ExtraVariables + FtagBaseContent.add_ExtraVariables_to_SlimmingHelper(FTAG1SlimmingHelper) + + # Trigger content + FtagBaseContent.trigger_setup(FTAG1SlimmingHelper) + + + # Output stream + FTAG1ItemList = FTAG1SlimmingHelper.GetItemList() + acc.merge(OutputStreamCfg(ConfigFlags, "DAOD_FTAG1", ItemList=FTAG1ItemList, AcceptAlgs=["FTAG1Kernel"])) + + return acc + diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG2.py new file mode 100644 index 0000000000000000000000000000000000000000..6a8dc0bb5866363d62b735d3b04e5fc6f7275b69 --- /dev/null +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG2.py @@ -0,0 +1,144 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +#!/usr/bin/env python +#==================================================================== +# DAOD_FTAG2.py +# This defines DAOD_FTAG2, an unskimmed DAOD format for Run 3. +# It contains the variables and objects needed for the large majority +# of physics analyses in ATLAS. +# It requires the flag FTAG2 in Derivation_tf.py +#==================================================================== + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +# Main algorithm config +def FTAG2KernelCfg(ConfigFlags, name='FTAG2Kernel', **kwargs): + """Configure the derivation framework driving algorithm (kernel) for FTAG2""" + acc = ComponentAccumulator() + + # Common augmentations + from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg + acc.merge(PhysCommonAugmentationsCfg(ConfigFlags, TriggerListsHelper = kwargs['TriggerListsHelper'])) + + # Thinning tools... + from DerivationFrameworkInDet.InDetToolsConfig import JetTrackParticleThinningCfg, MuonTrackParticleThinningCfg + + + # filter leptons + lepton_skimming_expression = 'count( (Muons.pt > 18*GeV) && (0 == Muons.muonType || 1 == Muons.muonType || 4 == Muons.muonType) ) + count(( Electrons.pt > 18*GeV) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))) >= 2 && count( (Muons.pt > 25*GeV) && (0 == Muons.muonType || 1 == Muons.muonType || 4 == Muons.muonType) ) + count(( Electrons.pt > 25*GeV) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))) >= 1' + FTAG2LeptonSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool( + name = "FTAG2LeptonSkimmingTool", + expression = lepton_skimming_expression ) + acc.addPublicTool(FTAG2LeptonSkimmingTool) + + + # TrackParticles associated with small-R jets + track_selection_string = "InDetTrackParticles.numberOfSCTHits + InDetTrackParticles.numberOfPixelHits > 1" + + FTAG2Akt4PFlowJetTPThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(ConfigFlags, + name = "FTAG2Akt4PFlowJetTPThinningTool", + StreamName = kwargs['StreamName'], + JetKey = "AntiKt4EMPFlowJets", + SelectionString = 'AntiKt4EMPFlowJets.pt > 15*GeV', + TrackSelectionString = track_selection_string, + InDetTrackParticlesKey = "InDetTrackParticles")) + + FTAG2AktVRJetTPThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(ConfigFlags, + name = "FTAG2AktVRJetTPThinningTool", + StreamName = kwargs['StreamName'], + JetKey = "AntiKtVR30Rmax4Rmin02PV0TrackJets", + SelectionString = 'AntiKtVR30Rmax4Rmin02PV0TrackJets.pt > 7*GeV', + TrackSelectionString = track_selection_string, + InDetTrackParticlesKey = "InDetTrackParticles")) + + # Include inner detector tracks associated with muons + FTAG2MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg( + ConfigFlags, + name = "FTAG2MuonTPThinningTool", + StreamName = kwargs['StreamName'], + MuonKey = "Muons", + InDetTrackParticlesKey = "InDetTrackParticles")) + + # Finally the kernel itself + thinningTools = [ + FTAG2MuonTPThinningTool, + FTAG2Akt4PFlowJetTPThinningTool, + FTAG2AktVRJetTPThinningTool, + ] + skimmingTools = [ + FTAG2LeptonSkimmingTool, + ] + + DerivationKernel = CompFactory.DerivationFramework.DerivationKernel + acc.addEventAlgo(DerivationKernel(name, SkimmingTools = skimmingTools, ThinningTools = thinningTools)) + return acc + + +def FTAG2Cfg(ConfigFlags): + + acc = ComponentAccumulator() + + # Get the lists of triggers needed for trigger matching. + # This is needed at this scope (for the slimming) and further down in the config chain + # for actually configuring the matching, so we create it here and pass it down + # TODO: this should ideally be called higher up to avoid it being run multiple times in a train + from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper + FTAG2TriggerListsHelper = TriggerListsHelper() + + # Common augmentations + acc.merge(FTAG2KernelCfg(ConfigFlags, name="FTAG2Kernel", StreamName = 'StreamDAOD_FTAG2', TriggerListsHelper = FTAG2TriggerListsHelper)) + + # ============================ + # Define contents of the format + # ============================= + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper + + FTAG2SlimmingHelper = SlimmingHelper("FTAG2SlimmingHelper", NamesAndTypes = ConfigFlags.Input.TypedCollections) + + FTAG2SlimmingHelper.SmartCollections = [ + "Electrons", + "Muons", + "PrimaryVertices", + "InDetTrackParticles", + "AntiKt4EMPFlowJets", + "BTagging_AntiKt4EMPFlow", + "AntiKtVR30Rmax4Rmin02PV0TrackJets", + "BTagging_AntiKtVR30Rmax4Rmin02Track", + "MET_Baseline_AntiKt4EMPFlow", + ] + + FTAG2SlimmingHelper.AllVariables = [ + "EventInfo", + "PrimaryVertices", + "InDetTrackParticles", + "BTagging_AntiKt4EMPFlow", + "BTagging_AntiKtVR30Rmax4Rmin02Track", + "BTagging_AntiKt4EMPFlowJFVtx", + "BTagging_AntiKt4EMPFlowSecVtx", + "TruthBottom", "TruthElectrons","TruthMuons","TruthTaus", + ] + + from DerivationFrameworkFlavourTag import FtagCommonCA + + # Static content + FtagCommonCA.add_static_content_to_SlimmingHelper(FTAG2SlimmingHelper) + + # Add truth containers + if ConfigFlags.Input.isMC: + FtagCommonCA.add_truth_to_SlimmingHelper(FTAG2SlimmingHelper) + + # Add ExtraVariables + FtagCommonCA.add_ExtraVariables_to_SlimmingHelper(FTAG2SlimmingHelper) + + # Trigger content + FtagCommonCA.trigger_setup(FTAG2SlimmingHelper, 'FTAG2') + FtagCommonCA.trigger_matching(FTAG2SlimmingHelper, FTAG2TriggerListsHelper, ConfigFlags) + + + # Output stream + FTAG2ItemList = FTAG2SlimmingHelper.GetItemList() + acc.merge(OutputStreamCfg(ConfigFlags, "DAOD_FTAG2", ItemList=FTAG2ItemList, AcceptAlgs=["FTAG2Kernel"])) + + return acc + diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py new file mode 100644 index 0000000000000000000000000000000000000000..1b37f5482b4faa74206536b1e348fc7161a0c3c6 --- /dev/null +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py @@ -0,0 +1,99 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + +#==================================================================== +# FtagCommon.py +# This is to define common objects used by PHYSVAL, FTAG1 and FTAG2. +#==================================================================== + + +## Common items used in PHYSVAL, FTAG1 and FTAG2 +PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary = { + } + +PHYSVAL_FTAG1_FTAG2_ExtraVariables = ["AntiKt10TruthTrimmedPtFrac5SmallR20Jets.Tau1_wta.Tau2_wta.Tau3_wta.D2.GhostBHadronsFinalCount", + "Electrons.TruthLink", + "Muons.TruthLink","Muons.segmentDeltaPhi","Muons.segmentDeltaEta","Muons.ParamEnergyLoss","Muons.ParamEnergyLossSigmaPlus","Muons.ParamEnergyLossSigmaMinus","Muons.MeasEnergyLoss","Muons.MeasEnergyLossSigma", + "Photons.TruthLink", + "AntiKt2PV0TrackJets.pt.eta.phi.m", + "AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID.GhostBHadronsFinalPt.GhostBHadronsFinalCount.GhostCHadronsFinalCount.GhostCHadronsFinalPt", + "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID.DFCommonJets_fJvt.GhostBHadronsFinalPt.GhostBHadronsFinalCount.GhostCHadronsFinalCount.GhostCHadronsFinalPt.HadronConeExclTruthLabelPt.HadronConeExclTruthLabelLxy.SumPtChargedPFOPt1000.SumPtTrkPt1000.TrackSumMass.TrackSumPt.TrackWidthPt500.TracksForBTagging.TruthLabelDeltaR_B.TruthLabelDeltaR_C.TruthLabelDeltaR_T.JetEMScaleMomentum_pt.JetEMScaleMomentum_eta.HECQuality.GhostHBosonsPt", + "TruthPrimaryVertices.t.x.y.z", + "TauNeutralParticleFlowObjects.pt.eta.phi.m.bdtPi0Score.nPi0Proto", + "TauChargedParticleFlowObjects.pt.eta.phi.m.bdtPi0Score", + "MET_Track.sumet", + ] + +excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV" +PHYSVAL_FTAG1_FTAG2_StaticContent = [] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData] +PHYSVAL_FTAG1_FTAG2_StaticContent += ["xAOD::VertexAuxContainer#BTagging_AntiKt4EMPFlowSecVtxAux.-vxTrackAtVertex"] + + +## Common functions used in PHYSVAL, FTAG1 and FTAG2 +def add_static_content_to_SlimmingHelper(SlimmingHelper, extra_StaticContent=[]): + all_StaticContent = PHYSVAL_FTAG1_FTAG2_StaticContent + if len(extra_StaticContent) > 0: + all_StaticContent += extra_StaticContent + SlimmingHelper.StaticContent = all_StaticContent + +def add_truth_to_SlimmingHelper(SlimmingHelper): + from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool + for _cont in PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary: + _type = PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary[_cont] + if _cont not in SlimmingHelper.AppendToDictionary: + SlimmingHelper.AppendToDictionary[_cont] = _type + addTruth3ContentToSlimmerTool(SlimmingHelper) + SlimmingHelper.AllVariables += ['TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm','TruthPileupParticles','InTimeAntiKt4TruthJets','OutOfTimeAntiKt4TruthJets'] + +def add_ExtraVariables_to_SlimmingHelper(SlimmingHelper): + SlimmingHelper.ExtraVariables += PHYSVAL_FTAG1_FTAG2_ExtraVariables + from DerivationFrameworkEGamma.ElectronsCPDetailedContent import GSFTracksCPDetailedContent + SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent + +## Common function used in FTAG1 and FTAG2 +def trigger_setup(SlimmingHelper, option=''): + SlimmingHelper.IncludeTriggerNavigation = False + SlimmingHelper.IncludeJetTriggerContent = False + SlimmingHelper.IncludeMuonTriggerContent = False + SlimmingHelper.IncludeEGammaTriggerContent = False + SlimmingHelper.IncludeJetTauEtMissTriggerContent = False + SlimmingHelper.IncludeTauTriggerContent = False + SlimmingHelper.IncludeEtMissTriggerContent = False + SlimmingHelper.IncludeBJetTriggerContent = False + SlimmingHelper.IncludeBPhysTriggerContent = False + SlimmingHelper.IncludeMinBiasTriggerContent = False + if option == 'FTAG2': + SlimmingHelper.IncludeMuonTriggerContent = True + SlimmingHelper.IncludeEGammaTriggerContent = True + SlimmingHelper.IncludeBJetTriggerContent = True + SlimmingHelper.IncludeBPhysTriggerContent = True + +def trigger_matching(SlimmingHelper, TriggerListsHelper, ConfigFlags): + # Trigger matching + # Run 2 + if ConfigFlags.Trigger.EDMVersion == 2: + from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper + AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = SlimmingHelper, + OutputContainerPrefix = "TrigMatch_", + TriggerList = TriggerListsHelper.Run2TriggerNamesTau) + AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = SlimmingHelper, + OutputContainerPrefix = "TrigMatch_", + TriggerList = TriggerListsHelper.Run2TriggerNamesNoTau) + # Run 3 + if ConfigFlags.Trigger.EDMVersion == 3: + from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper + AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(SlimmingHelper) + # Run 2 is added here temporarily to allow testing/comparison/debugging + from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper + AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = SlimmingHelper, + OutputContainerPrefix = "TrigMatch_", + TriggerList = TriggerListsHelper.Run3TriggerNamesTau) + AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = SlimmingHelper, + OutputContainerPrefix = "TrigMatch_", + TriggerList = TriggerListsHelper.Run3TriggerNamesNoTau) + diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py index c50bb54ce2b33abef3f157cf88a61c02557bd124..2bdb7fe9125248fe02e42a08182f3b2860c0cde0 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py @@ -11,38 +11,6 @@ from DerivationFrameworkEGamma.ElectronsCPDetailedContent import GSFTracksCPDeta ## Common items used in PHYSVAL, FTAG1 and FTAG2 PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary = { - 'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer', - 'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer', - 'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer', - 'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer', - 'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer', - 'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer', - 'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer', - 'TruthBSM':'xAOD::TruthParticleContainer','TruthBSMAux':'xAOD::TruthParticleAuxContainer', - 'TruthBoson':'xAOD::TruthParticleContainer','TruthBosonAux':'xAOD::TruthParticleAuxContainer', - 'TruthTop':'xAOD::TruthParticleContainer','TruthTopAux':'xAOD::TruthParticleAuxContainer', - 'TruthForwardProtons':'xAOD::TruthParticleContainer','TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer', - 'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer', - 'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer','TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer', - 'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer','TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer', - 'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer','TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer', - 'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer','TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer', - 'HardScatterParticles':'xAOD::TruthParticleContainer','HardScatterParticlesAux':'xAOD::TruthParticleAuxContainer', - 'HardScatterVertices':'xAOD::TruthVertexContainer','HardScatterVerticesAux':'xAOD::TruthVertexAuxContainer', - 'TruthHFWithDecayParticles':'xAOD::TruthParticleContainer','TruthHFWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer', - 'TruthHFWithDecayVertices':'xAOD::TruthVertexContainer','TruthHFWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer', - 'TruthCharm':'xAOD::TruthParticleContainer','TruthCharmAux':'xAOD::TruthParticleAuxContainer', - 'TruthPrimaryVertices':'xAOD::TruthVertexContainer','TruthPrimaryVerticesAux':'xAOD::TruthVertexAuxContainer', - 'AntiKt10TruthTrimmedPtFrac5SmallR20Jets':'xAOD::JetContainer', 'AntiKt10TruthTrimmedPtFrac5SmallR20JetsAux':'xAOD::JetAuxContainer', - 'AntiKt10LCTopoJets':'xAOD::JetContainer', 'AntiKt10LCTopoJetsAux':'xAOD::JetAuxContainer', - 'AntiKt10PV0TrackJets':'xAOD::JetContainer','AntiKt10PV0TrackJetsAux':'xAOD::JetAuxContainer', - 'BTagging_AntiKtVR30Rmax4Rmin02Track':'xAOD::BTaggingContainer','BTagging_AntiKtVR30Rmax4Rmin02TrackAux':'xAOD::BTaggingAuxContainer', - 'EMOriginTopoClusters':'xAOD::CaloClusterContainer', 'EMOriginTopoClustersAux':'xAOD::ShallowAuxContainer', - 'LCOriginTopoClusters':'xAOD::CaloClusterContainer', 'LCOriginTopoClustersAux':'xAOD::ShallowAuxContainer', - 'BTagging_AntiKt4EMPFlowJFVtx':'xAOD::BTagVertexContainer','BTagging_AntiKt4EMPFlowJFVtxAux':'xAOD::BTagVertexAuxContainer', - 'BTagging_AntiKt4EMPFlowSecVtx':'xAOD::VertexContainer','BTagging_AntiKt4EMPFlowSecVtxAux':'xAOD::VertexAuxContainer', - 'CHSGChargedParticleFlowObjects': 'xAOD::FlowElementContainer', 'CHSGChargedParticleFlowObjectsAux':'xAOD::ShallowAuxContainer', - 'CHSGNeutralParticleFlowObjects': 'xAOD::FlowElementContainer', 'CHSGNeutralParticleFlowObjectsAux':'xAOD::ShallowAuxContainer', } PHYSVAL_FTAG1_FTAG2_ExtraVariables = ["AntiKt10TruthTrimmedPtFrac5SmallR20Jets.Tau1_wta.Tau2_wta.Tau3_wta.D2.GhostBHadronsFinalCount", diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py index 07dce68d09bfd498f7c8f0205d69f906217caa79..394089b5d9cf338f8135a927bbe6fd9cf9bbaa99 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py @@ -106,10 +106,6 @@ FtagCommon.add_truth_to_SlimmingHelper(FTAG1SlimmingHelper) # Add ExtraVariables FtagCommon.add_ExtraVariables_to_SlimmingHelper(FTAG1SlimmingHelper) -# Add trigger matching -PhysCommonTrigger.trigmatching_helper_notau.add_to_slimming(FTAG1SlimmingHelper) -PhysCommonTrigger.trigmatching_helper_tau.add_to_slimming(FTAG1SlimmingHelper) - # Final construction of output stream FTAG1SlimmingHelper.AppendContentToStream(FTAG1Stream) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py index 57d8c30a447c9f7a86ebd5bc5e91deaf0eb871a3..60423a4723c3755ad1a9d783345a461d25cf37c9 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py @@ -154,3 +154,12 @@ def DiTauTrackParticleThinningCfg(ConfigFlags, name, **kwargs): acc.addPublicTool(DiTauTrackParticleThinning(name, **kwargs), primary = True) return acc + +# Tool for thinning TrackParticles that are associated with jets +def JetTrackParticleThinningCfg(ConfigFlags, name, **kwargs): + """Configure the JetTrackParticleThinning tool""" + acc = ComponentAccumulator() + JetTrackParticleThinning = CompFactory.DerivationFramework.JetTrackParticleThinning + acc.addPublicTool(JetTrackParticleThinning(name,**kwargs), + primary = True) + return acc diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt10UFOCSSKJetsCPContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt10UFOCSSKJetsCPContent.py index 19809b2ee81306174c9b6c4cefefec628407d386..83062a3e1b69577b6c26b2b78ce5156c85507185 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt10UFOCSSKJetsCPContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt10UFOCSSKJetsCPContent.py @@ -7,4 +7,5 @@ AntiKt10UFOCSSKJetsCPContent = [ "AntiKt10UFOCSSKJetsAux.GhostBHadronsFinalCount.GhostHBosonsCount.GhostTQuarksFinalCount.GhostTrack.GhostWBosonsCount.GhostZBosonsCount", "AntiKt10UFOCSSKJetsAux.GhostAntiKtVR30Rmax4Rmin02PV0TrackJets", "AntiKt10UFOCSSKJetsAux.HadronConeExclExtendedTruthLabelID.HadronConeExclTruthLabelID.NumTrkPt500.SumPtTrkPt500", +"AntiKt10UFOCSSKJetsAux.HadronGhostExtendedTruthLabelID.GhostTausFinalCount.GhostCHadronsFinalCount", ]