Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
PHYS.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 #====================================================================
3 # DAOD_PHYS.py
4 # This defines DAOD_PHYS, an unskimmed DAOD format for Run 3.
5 # It contains the variables and objects needed for the large majority
6 # of physics analyses in ATLAS.
7 # It requires the flag PHYS in Derivation_tf.py
8 #====================================================================
9 
10 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
11 from AthenaConfiguration.ComponentFactory import CompFactory
12 from AthenaConfiguration.Enums import MetadataCategory
13 from AthenaCommon.Logging import logging
14 logPHYS = logging.getLogger('PHYS')
15 
16 # Main algorithm config
17 def PHYSKernelCfg(flags, name='PHYSKernel', **kwargs):
18  """Configure the derivation framework driving algorithm (kernel) for PHYS"""
19  acc = ComponentAccumulator()
20 
21  from TrkConfig.VertexFindingFlags import VertexSortingSetup
22  if flags.Tracking.PriVertex.sortingSetup is VertexSortingSetup.GNNSorting:
23  from DerivationFrameworkPhys.GNNVertexConfig import GNNVertexCfg
24  acc.merge(GNNVertexCfg(flags))
25 
26  # Common augmentations
27  from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
29  flags,
30  TriggerListsHelper = kwargs['TriggerListsHelper']
31  ))
32 
33  # Thinning tools
34  # These are set up in PhysCommonThinningConfig. Only thing needed here the list of tools to schedule
35  nametag = name.replace('Kernel', '') #get the name to label the tools below such that other formats can use this KernelCfg
36  thinningToolsArgs = {
37  'TrackParticleThinningToolName' : nametag+"TrackParticleThinningTool",
38  'MuonTPThinningToolName' : nametag+"MuonTPThinningTool",
39  'TauJetThinningToolName' : nametag+"TauJetThinningTool",
40  'TauJets_MuonRMThinningToolName' : nametag+"TauJets_MuonRMThinningTool",
41  'DiTauTPThinningToolName' : nametag+"DiTauTPThinningTool",
42  'DiTauLowPtThinningToolName' : nametag+"DiTauLowPtThinningTool",
43  'DiTauLowPtTPThinningToolName' : nametag+"DiTauLowPtTPThinningTool",
44  }
45  # for AOD produced before 24.0.17, the electron removal tau is not available
46  if flags.Tau.TauEleRM_isAvailable:
47  thinningToolsArgs['TauJets_EleRMThinningToolName'] = nametag+"TauJets_EleRMThinningTool"
48  # Configure the thinning tools
49  from DerivationFrameworkPhys.PhysCommonThinningConfig import PhysCommonThinningCfg
50  acc.merge(PhysCommonThinningCfg(flags, StreamName = kwargs['StreamName'], **thinningToolsArgs))
51  # Get them from the CA so they can be added to the kernel
52  thinningTools = []
53  for key in thinningToolsArgs:
54  thinningTools.append(acc.getPublicTool(thinningToolsArgs[key]))
55 
56  # The kernel algorithm itself
57  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
58  acc.addEventAlgo(DerivationKernel(name, ThinningTools = thinningTools))
59  return acc
60 
61 
62 def PHYSCoreCfg(flags, name_tag='PHYS', StreamName='StreamDAOD_PHYS', TriggerListsHelper=None):
63 
64  if TriggerListsHelper is None:
65  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
66  TriggerListsHelper = TriggerListsHelper(flags)
67 
68  acc = ComponentAccumulator()
69 
70 
71  from DerivationFrameworkHiggs.HiggsPhysContent import HiggsAugmentationAlgsCfg
72  acc.merge(HiggsAugmentationAlgsCfg(flags))
73 
74 
75  from DerivationFrameworkFlavourTag.FtagDerivationConfig import JetCollectionsBTaggingCfg
76  acc.merge(JetCollectionsBTaggingCfg(flags, ["AntiKt4EMPFlowJets"]))
77 
78 
80  from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
81  acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite = False, stream_name = StreamName))
82 
83 
84  from LeptonTaggers.LeptonTaggersConfig import DecoratePLITAlgsCfg
85  acc.merge(DecoratePLITAlgsCfg(flags))
86 
87  #===================================================
88  # HEAVY FLAVOR CLASSIFICATION FOR ttbar+jets EVENTS
89  #===================================================
90  from DerivationFrameworkMCTruth.HFClassificationCommonConfig import HFClassificationCommonCfg
91  acc.merge(HFClassificationCommonCfg(flags))
92 
93  # ============================
94  # Define contents of the format
95  # =============================
96  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
97  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
98  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
99 
100  PHYSSlimmingHelper = SlimmingHelper(name_tag+"SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
101  PHYSSlimmingHelper.SmartCollections = ["EventInfo",
102  "Electrons",
103  "Photons",
104  "Muons",
105  "PrimaryVertices",
106  "InDetTrackParticles",
107  "AntiKt4EMTopoJets",
108  "AntiKt4EMPFlowJets",
109  "BTagging_AntiKt4EMPFlow",
110  "AntiKt4EMPFlowJets_FTAG",
111  "MET_Baseline_AntiKt4EMTopo",
112  "MET_Baseline_AntiKt4EMPFlow",
113  "TauJets",
114  "TauJets_MuonRM",
115  "DiTauJets",
116  "DiTauJetsLowPt",
117  "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
118  "AntiKtVR30Rmax4Rmin02PV0TrackJets",
119  ]
120  if flags.Tau.TauEleRM_isAvailable:
121  PHYSSlimmingHelper.SmartCollections.append("TauJets_EleRM")
122 
123  excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
124  StaticContent = []
125  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
126  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
127  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
128  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
129  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
130  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
131 
132  PHYSSlimmingHelper.StaticContent = StaticContent
133 
134  # Extra content
135  PHYSSlimmingHelper.ExtraVariables += ["AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.IsoFixedCone5PtPUsub",
136  "AntiKt4EMPFlowJets.QGTransformer_ConstScore.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostPartons.isJvtHS.isJvtPU.IsoFixedCone5PtPUsub",
137  "TruthPrimaryVertices.t.x.y.z",
138  "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
139  "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification",
140  "TauJets.dRmax.etOverPtLeadTrk",
141  "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
142  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
143  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
144  if flags.Tau.TauEleRM_isAvailable:
145  PHYSSlimmingHelper.ExtraVariables += ["TauJets_EleRM.dRmax.etOverPtLeadTrk"]
146 
147  # IFF extra content
148  from LeptonTaggers.LeptonTaggersConfig import GetExtraPLITVariablesForDxAOD
149  PHYSSlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
150 
151  # Truth extra content
152  if flags.Input.isMC:
153 
154  from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
155  addTruth3ContentToSlimmerTool(PHYSSlimmingHelper)
156  PHYSSlimmingHelper.AllVariables += ['TruthLHEParticles', 'TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm','TruthPileupParticles','InTimeAntiKt4TruthJets','OutOfTimeAntiKt4TruthJets']
157  PHYSSlimmingHelper.ExtraVariables += ["Electrons.TruthLink",
158  "Muons.TruthLink",
159  "Photons.TruthLink",
160  "AntiKt4TruthDressedWZJets.IsoFixedCone5Pt"]
161 
162  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTauAndDownstreamParticlesCfg
163  acc.merge(AddTauAndDownstreamParticlesCfg(flags))
164  PHYSSlimmingHelper.AllVariables += ['TruthTausWithDecayParticles','TruthTausWithDecayVertices']
165 
166 
167  from DerivationFrameworkHiggs.HiggsPhysContent import setupHiggsSlimmingVariables
168  setupHiggsSlimmingVariables(flags, PHYSSlimmingHelper)
169 
170 
171  PHYSSlimmingHelper.AllVariables += [ 'AFPSiHitContainer', 'AFPToFHitContainer' ]
172 
173  # Trigger content
174  PHYSSlimmingHelper.IncludeTriggerNavigation = False
175  PHYSSlimmingHelper.IncludeJetTriggerContent = False
176  PHYSSlimmingHelper.IncludeMuonTriggerContent = False
177  PHYSSlimmingHelper.IncludeEGammaTriggerContent = False
178  PHYSSlimmingHelper.IncludeTauTriggerContent = False
179  PHYSSlimmingHelper.IncludeEtMissTriggerContent = False
180  PHYSSlimmingHelper.IncludeBJetTriggerContent = False
181  PHYSSlimmingHelper.IncludeBPhysTriggerContent = False
182  PHYSSlimmingHelper.IncludeMinBiasTriggerContent = False
183  # Compact b-jet trigger matching info
184  PHYSSlimmingHelper.IncludeBJetTriggerByYearContent = True
185 
186  # Trigger matching
187  # Run 2
188  if flags.Trigger.EDMVersion == 2:
189  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
190  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = PHYSSlimmingHelper,
191  OutputContainerPrefix = "TrigMatch_",
192  TriggerList = TriggerListsHelper.Run2TriggerNamesTau)
193  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = PHYSSlimmingHelper,
194  OutputContainerPrefix = "TrigMatch_",
195  TriggerList = TriggerListsHelper.Run2TriggerNamesNoTau)
196  # Run 3, or Run 2 with navigation conversion
197  if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
198  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
200 
201  # L1 trigger objects
202  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import getDataYear
203  if getDataYear(flags) >= 2024:
204  # Run 3 with Phase I jet RoIs.
205  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddjFexRoIsToSlimmingHelper
206  AddjFexRoIsToSlimmingHelper(SlimmingHelper = PHYSSlimmingHelper)
207  elif getDataYear(flags) >= 2015:
208  # Run 2 and early Run 3, legacy L1 RoIs
209  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddLegacyL1JetRoIsToSlimmingHelper
210  AddLegacyL1JetRoIsToSlimmingHelper(SlimmingHelper = PHYSSlimmingHelper)
211 
212  # Output stream
213  PHYSItemList = PHYSSlimmingHelper.GetItemList()
214  acc.merge(OutputStreamCfg(flags, "DAOD_"+name_tag, ItemList=PHYSItemList, AcceptAlgs=[name_tag+"Kernel"]))
215  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_"+name_tag, AcceptAlgs=[name_tag+"Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
216 
217  return acc
218 
219 def PHYSCfg(flags):
220 
221  logPHYS.info('****************** STARTING PHYS *****************')
222 
223  stream_name = 'StreamDAOD_PHYS'
224  acc = ComponentAccumulator()
225 
226  # Get the lists of triggers needed for trigger matching.
227  # This is needed at this scope (for the slimming) and further down in the config chain
228  # for actually configuring the matching, so we create it here and pass it down
229  # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
230  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
231  PHYSTriggerListsHelper = TriggerListsHelper(flags)
232 
233  # Common augmentations
234  acc.merge(PHYSKernelCfg(
235  flags,
236  name="PHYSKernel",
237  StreamName = stream_name,
238  TriggerListsHelper = PHYSTriggerListsHelper
239  ))
240  # PHYS content
241  acc.merge(PHYSCoreCfg(
242  flags,
243  "PHYS",
244  StreamName = stream_name,
245  TriggerListsHelper = PHYSTriggerListsHelper
246  ))
247 
248  return acc
python.PHYS.PHYSKernelCfg
def PHYSKernelCfg(flags, name='PHYSKernel', **kwargs)
Definition: PHYS.py:17
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:98
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.PhysCommonThinningConfig.PhysCommonThinningCfg
def PhysCommonThinningCfg(flags, StreamName="StreamDAOD_PHYS", **kwargs)
Definition: PhysCommonThinningConfig.py:9
python.FtagDerivationConfig.JetCollectionsBTaggingCfg
def JetCollectionsBTaggingCfg(cfgFlags, jet_cols, pv_cols=None, trackAugmenterPrefix=None)
Definition: FtagDerivationConfig.py:17
python.TriggerMatchingCommonConfig.AddjFexRoIsToSlimmingHelper
def AddjFexRoIsToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:80
python.MCTruthCommonConfig.AddTauAndDownstreamParticlesCfg
def AddTauAndDownstreamParticlesCfg(flags, generations=-1, rejectHadronChildren=False)
Definition: MCTruthCommonConfig.py:267
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
python.TriggerMatchingCommonConfig.getDataYear
def getDataYear(flags)
Definition: TriggerMatchingCommonConfig.py:30
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:49
LeptonTaggersConfig.GetExtraPLITVariablesForDxAOD
def GetExtraPLITVariablesForDxAOD(name='')
Definition: LeptonTaggersConfig.py:586
python.HiggsPhysContent.HiggsAugmentationAlgsCfg
def HiggsAugmentationAlgsCfg(flags)
Definition: HiggsPhysContent.py:4
python.GNNVertexConfig.GNNVertexCfg
def GNNVertexCfg(flags, **kwargs)
Definition: GNNVertexConfig.py:216
python.MCTruthCommonConfig.addTruth3ContentToSlimmerTool
def addTruth3ContentToSlimmerTool(slimmer)
Definition: MCTruthCommonConfig.py:466
LeptonTaggersConfig.DecoratePLITAlgsCfg
ComponentAccumulator DecoratePLITAlgsCfg(ConfigFlags, name="DecoratePLITAlgsCfg", lepton_type="", **kwargs)
Definition: LeptonTaggersConfig.py:456
python.TriggerMatchingCommonConfig.AddLegacyL1JetRoIsToSlimmingHelper
def AddLegacyL1JetRoIsToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:70
python.HiggsPhysContent.setupHiggsSlimmingVariables
def setupHiggsSlimmingVariables(ConfigFlags, slimmingHelper)
Definition: HiggsPhysContent.py:13
IsolationSelectionConfig.IsoCloseByAlgsCfg
def IsoCloseByAlgsCfg(flags, suff="", isPhysLite=False, containerNames=["Muons", "Electrons", "Photons"], stream_name="", ttva_wp="Nonprompt_All_MaxWeight", useSelTools=False, isoDecSuffix="CloseByCorr", caloDecSuffix="", hasLRT=False)
Definition: IsolationSelectionConfig.py:146
python.PhysCommonConfig.PhysCommonAugmentationsCfg
def PhysCommonAugmentationsCfg(flags, **kwargs)
Definition: PhysCommonConfig.py:14
python.HFClassificationCommonConfig.HFClassificationCommonCfg
def HFClassificationCommonCfg(flags)
Definition: HFClassificationCommonConfig.py:114
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:66
python.PHYS.PHYSCoreCfg
def PHYSCoreCfg(flags, name_tag='PHYS', StreamName='StreamDAOD_PHYS', TriggerListsHelper=None)
Definition: PHYS.py:62
python.PHYS.PHYSCfg
def PHYSCfg(flags)
Definition: PHYS.py:219