ATLAS Offline Software
STDM6.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 # STDM6.py - derivation dedicated for the special runs at low mu (AFP analysis)
3 
4 # Based on PHYS derivation:
5 # * no skimming
6 # * slimming by default as in PHYS derivation
7 # * added content wrt PHYS:
8 # - forward protons
9 # - InDet tracks/particles
10 # - ["TruthEvents", "TruthParticles", "TruthVertices", "AntiKt4TruthJets","AntiKt4TruthWZJets"]
11 # - Calo clusters
12 # * Nov 2024 update: added JET-M1 containers
13 
14 
15 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
16 from AthenaConfiguration.ComponentFactory import CompFactory
17 from AthenaConfiguration.Enums import MetadataCategory
18 from AthenaCommon.Logging import logging
19 logSTDM6 = logging.getLogger('STDM6')
20 
21 
22 
23 # Main algorithm config
24 def STDM6KernelCfg(flags, name='STDM6Kernel', **kwargs):
25  """Configure the derivation framework driving algorithm (kernel) for STDM6"""
26  acc = ComponentAccumulator()
27 
28  # Common augmentations
29  from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
31  flags,
32  TriggerListsHelper = kwargs['TriggerListsHelper'],
33  TauJets_EleRM_in_input = kwargs['TauJets_EleRM_in_input']
34  ))
35 
36  from DerivationFrameworkInDet.InDetToolsConfig import InDetTrackSelectionToolWrapperCfg
37  DFCommonTrackSelection = acc.getPrimaryAndMerge(InDetTrackSelectionToolWrapperCfg(
38  flags,
39  name = "DFJETM1CommonTrackSelectionLoose",
40  CutLevel = "Loose",
41  DecorationName = "DFJETM1Loose"))
42 
43  acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation("JETM1CommonKernel", AugmentationTools = [DFCommonTrackSelection]))
44 
45  # Thinning tools
46  # These are set up in PhysCommonThinningConfig. Only thing needed here the list of tools to schedule
47  thinningToolsArgs = {
48  'TrackParticleThinningToolName' : "STDM6TrackParticleThinningTool",
49  'MuonTPThinningToolName' : "STDM6MuonTPThinningTool",
50  'TauJetThinningToolName' : "STDM6TauJetThinningTool",
51  'TauJets_MuonRMThinningToolName' : "STDM6TauJets_MuonRMThinningTool",
52  'DiTauThinningToolName' : "STDM6DiTauThinningTool",
53  'DiTauTPThinningToolName' : "STDM6DiTauTPThinningTool",
54  'DiTauLowPtThinningToolName' : "STDM6DiTauLowPtThinningTool",
55  'DiTauLowPtTPThinningToolName' : "STDM6DiTauLowPtTPThinningTool",
56  }
57  # for AOD produced before 24.0.17, the electron removal tau is not available
58  if kwargs.get('TauJets_EleRM_in_input', False):
59  thinningToolsArgs['TauJets_EleRMThinningToolName'] = "STDM6TauJets_EleRMThinningTool"
60  # Configure the thinning tools
61  from DerivationFrameworkPhys.PhysCommonThinningConfig import PhysCommonThinningCfg
62  acc.merge(PhysCommonThinningCfg(flags, StreamName = kwargs['StreamName'], **thinningToolsArgs))
63  # Get them from the CA so they can be added to the kernel
64  thinningTools = []
65  for key in thinningToolsArgs:
66  thinningTools.append(acc.getPublicTool(thinningToolsArgs[key]))
67 
68  # The kernel algorithm itself
69  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
70  acc.addEventAlgo(DerivationKernel(name, ThinningTools = thinningTools))
71 
72  # not using the thinning from the JET-M1 derivation!
73 
74  # From JET-M1 - extra jet content:
75  acc.merge(JETM1ExtraContentCfg(flags))
76 
77  return acc
78 
80 
81  acc = ComponentAccumulator()
82 
83  from JetRecConfig.JetRecConfig import JetRecCfg, getModifier
84  from JetRecConfig.StandardJetMods import stdJetModifiers
85  from JetRecConfig.StandardSmallRJets import AntiKt4PV0Track, AntiKt4EMPFlow, AntiKt4EMPFlowNoPtCut, AntiKt4EMPFlowML, AntiKt4EMTopoNoPtCut
86 
87  #=======================================
88  # Schedule additional jet decorations
89  #=======================================
90  bJVTTool = getModifier(AntiKt4EMPFlow, stdJetModifiers['bJVT'], stdJetModifiers['bJVT'].modspec, flags=flags)
91  acc.addEventAlgo(CompFactory.JetDecorationAlg(name='bJVTAlg',
92  JetContainer='AntiKt4EMPFlowJets',
93  Decorators=[bJVTTool]))
94 
95  #=======================================
96  # R = 0.4 track-jets (needed for Rtrk)
97  #=======================================
98  jetList = [AntiKt4PV0Track]
99 
100  #=======================================
101  # SCHEDULE SMALL-R JETS WITH NO PT CUT
102  #=======================================
103  if flags.Input.isMC:
104  jetList += [AntiKt4EMPFlowNoPtCut, AntiKt4EMPFlowML, AntiKt4EMTopoNoPtCut]
105 
106  #=======================================
107  # CSSK R = 0.4 UFO jets
108  #=======================================
109  if flags.Input.isMC:
110  from JetRecConfig.StandardSmallRJets import AntiKt4UFOCSSKNoPtCut
111  AntiKt4UFOCSSKNoPtCut_JETM1 = AntiKt4UFOCSSKNoPtCut.clone(
112  modifiers = AntiKt4UFOCSSKNoPtCut.modifiers+("NNJVT",)
113  )
114  jetList += [AntiKt4UFOCSSKNoPtCut_JETM1]
115  else:
116  from JetRecConfig.StandardSmallRJets import AntiKt4UFOCSSK
117  AntiKt4UFOCSSK_JETM1 = AntiKt4UFOCSSK.clone(
118  modifiers = AntiKt4UFOCSSK.modifiers+("NNJVT",)
119  )
120  jetList += [AntiKt4UFOCSSK_JETM1]
121 
122 
123  for jd in jetList:
124  acc.merge(JetRecCfg(flags,jd))
125 
126  #=======================================
127  # UFO CSSK event shape
128  #=======================================
129 
130  from JetRecConfig.JetRecConfig import getConstitPJGAlg
131  from JetRecConfig.StandardJetConstits import stdConstitDic as cst
132  from JetRecConfig.JetInputConfig import buildEventShapeAlg
133 
134  acc.addEventAlgo(buildEventShapeAlg(cst.UFOCSSK,'', suffix=None))
135  acc.addEventAlgo(getConstitPJGAlg(cst.UFOCSSK, suffix='Neut'))
136  acc.addEventAlgo(buildEventShapeAlg(cst.UFOCSSK,'', suffix='Neut'))
137 
138  #=======================================
139  # More detailed truth information
140  #=======================================
141 
142  if flags.Input.isMC:
143  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTopQuarkAndDownstreamParticlesCfg
144  acc.merge(AddTopQuarkAndDownstreamParticlesCfg(flags, generations=4,rejectHadronChildren=True))
145 
146  #=======================================
147  # Add Run-2 jet trigger collections
148  # Only needed for Run-2 due to different aux container type (JetTrigAuxContainer) which required special wrapper for conversion to AuxContainerBase
149  # In Run-3, the aux. container type is directly JetAuxContainer (no conversion needed)
150  #=======================================
151 
152  if flags.Trigger.EDMVersion == 2:
153  triggerNames = ["JetContainer_a4tcemsubjesFS", "JetContainer_a4tcemsubjesISFS", "JetContainer_GSCJet",
154  "JetContainer_a10tclcwsubjesFS", "JetContainer_a10tclcwsubFS", "JetContainer_a10ttclcwjesFS"]
155 
156  for trigger in triggerNames:
157  wrapperName = trigger+'AuxWrapper'
158  auxContainerName = 'HLT_xAOD__'+trigger+'Aux'
159 
160  acc.addEventAlgo(CompFactory.xAODMaker.AuxStoreWrapper( wrapperName, SGKeys = [ auxContainerName+"." ] ))
161 
162  return acc
163 
164 
165 def STDM6CoreCfg(flags, name_tag='STDM6', StreamName='StreamDAOD_STDM6', TriggerListsHelper=None, TauJets_EleRM_in_input=None):
166 
167  if TriggerListsHelper is None:
168  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
169  TriggerListsHelper = TriggerListsHelper(flags)
170 
171  if TauJets_EleRM_in_input is None:
172  # for AOD produced before 24.0.17, the electron removal tau is not available
173  TauJets_EleRM_in_input = (flags.Input.TypedCollections.count('xAOD::TauJetContainer#TauJets_EleRM') > 0)
174 
175  acc = ComponentAccumulator()
176 
177 
178  from DerivationFrameworkHiggs.HiggsPhysContent import HiggsAugmentationAlgsCfg
179  acc.merge(HiggsAugmentationAlgsCfg(flags))
180 
181 
183  from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
184  acc.merge(IsoCloseByAlgsCfg(flags, suff = "_"+name_tag, isPhysLite = False, stream_name = StreamName))
185 
186  #===================================================
187  # HEAVY FLAVOR CLASSIFICATION FOR ttbar+jets EVENTS
188  #===================================================
189  from DerivationFrameworkMCTruth.HFClassificationCommonConfig import HFClassificationCommonCfg
190  acc.merge(HFClassificationCommonCfg(flags))
191 
192  # ============================
193  # Define contents of the format
194  # =============================
195  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
196  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
197  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
198 
199  STDM6SlimmingHelper = SlimmingHelper(name_tag+"SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
200  STDM6SlimmingHelper.SmartCollections = ["EventInfo",
201  "Electrons",
202  "Photons",
203  "Muons",
204  "PrimaryVertices",
205  "InDetTrackParticles",
206  "AntiKt4EMTopoJets",
207  "AntiKt4EMPFlowJets",
208  "AntiKt10UFOCSSKJets",
209  "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
210  "MET_Baseline_AntiKt4EMTopo",
211  "MET_Baseline_AntiKt4EMPFlow",
212  "TauJets",
213  "TauJets_MuonRM",
214  "DiTauJets",
215  "DiTauJetsLowPt",
216  "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
217  "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
218  ]
219  if TauJets_EleRM_in_input:
220  STDM6SlimmingHelper.SmartCollections.append("TauJets_EleRM")
221 
222  # STDM6 needs additionally full info on:
223  # - AFP
224  # - Calo clusters
225  STDM6SlimmingHelper.AllVariables += [ "AFPSiHitContainer",
226  "AFPToFHitContainer",
227  "AFPSiHitsClusterContainer",
228  "AFPTrackContainer",
229  "AFPToFTrackContainer",
230  "AFPProtonContainer",
231  "AFPVertexContainer",
232  "CaloCalTopoClusters",
233  ]
234 
235  # additional contenct from JET-M1
236  # Maciej LewickiL: I'd rather keep it the way it is because it will be easier to keep up with any future changes in JET-M1
237  STDM6SlimmingHelper.AllVariables += ["MuonSegments", "EventInfo",
238  "Kt4EMTopoOriginEventShape","Kt4EMPFlowEventShape","Kt4EMPFlowPUSBEventShape","Kt4EMPFlowNeutEventShape","Kt4UFOCSSKEventShape","Kt4UFOCSSKNeutEventShape",
239  "AntiKt4EMPFlowJets"]
240 
241  excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
242  StaticContent = []
243  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
244  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
245  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
246  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
247  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
248  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
249 
250  STDM6SlimmingHelper.StaticContent = StaticContent
251 
252  # Extra content
253  STDM6SlimmingHelper.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",
254  "AntiKt4EMPFlowJets.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.isJvtHS.isJvtPU",
255  "TruthPrimaryVertices.t.x.y.z",
256  "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
257  "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification",
258  "TauJets.dRmax.etOverPtLeadTrk",
259  "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
260  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
261  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
262  if TauJets_EleRM_in_input:
263  STDM6SlimmingHelper.ExtraVariables += ["TauJets_EleRM.dRmax.etOverPtLeadTrk"]
264 
265  # additional content from JET-M1
266  # Maciej Lewicki: I'd rather keep it the way it is because it will be easier to keep up with any future changes in JET-M1
267  STDM6SlimmingHelper.ExtraVariables += ["AntiKt4EMTopoJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1",
268  "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1",
269  "AntiKt4EMPFlowJets.passOnlyBJVT.DFCommonJets_bJvt.isJvtHS.isJvtPU",
270  "InDetTrackParticles.truthMatchProbability",
271  "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack",
272  "AntiKt10UFOCSSKJets.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack"]
273 
274 
275  # FTAG Xbb extra content
276  extraList = []
277  for tagger in ["GN2Xv00", "GN2XWithMassv00", "GN2Xv01"]:
278  for score in ["phbb", "phcc", "ptop", "pqcd"]:
279  extraList.append(f"{tagger}_{score}")
280  STDM6SlimmingHelper.ExtraVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets." + ".".join(extraList)]
281 
282  # Truth extra content
283  # ---> extetnding deafult PHYS conttents with:
284  # - AntiKt4EMTTopoJets
285  # - AntiKt4EMPFlowJets
286  # - TruthPrimaryVertices
287  # - InDetTrackParticles
288  if flags.Input.isMC:
289 
290  from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
291  addTruth3ContentToSlimmerTool(STDM6SlimmingHelper)
292 
293  # coming from the JET-M1 derivation
294  STDM6SlimmingHelper.AppendToDictionary.update({'TruthParticles': 'xAOD::TruthParticleContainer',
295  'TruthParticlesAux': 'xAOD::TruthParticleAuxContainer'})
296 
297  STDM6SlimmingHelper.AllVariables += ['TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm','TruthPileupParticles','InTimeAntiKt4TruthJets','OutOfTimeAntiKt4TruthJets']
298  STDM6SlimmingHelper.AllVariables += ["TruthEvents", "TruthParticles", "TruthVertices", "AntiKt4TruthJets","AntiKt4TruthWZJets"]
299  STDM6SlimmingHelper.ExtraVariables += ["Electrons.TruthLink",
300  "Muons.TruthLink",
301  "Photons.TruthLink",
302  "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",
303  "AntiKt4EMPFlowJets.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",
304  "TruthPrimaryVertices.t.x.y.z",
305  "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
306  "PrimaryVertices.x.y.z.covariance.trackWeights.vertexType.sumPt2",
307  ]
308 
309  # Maciej Lewicki: coming from the JET-M1 derivation
310  STDM6SlimmingHelper.SmartCollections += ["AntiKt4TruthWZJets"]
311  STDM6SlimmingHelper.AllVariables += ["TruthTopQuarkWithDecayParticles","TruthTopQuarkWithDecayVertices",
312  "AntiKt4TruthJets", "InTimeAntiKt4TruthJets", "OutOfTimeAntiKt4TruthJets", "TruthParticles"]
313  STDM6SlimmingHelper.ExtraVariables += ["TruthVertices.uid.z"]
314 
315  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTauAndDownstreamParticlesCfg
316  acc.merge(AddTauAndDownstreamParticlesCfg(flags))
317  STDM6SlimmingHelper.AllVariables += ['TruthTausWithDecayParticles','TruthTausWithDecayVertices']
318 
319  STDM6SlimmingHelper.AppendToDictionary.update({'Kt4UFOCSSKEventShape':'xAOD::EventShape',
320  'Kt4UFOCSSKEventShapeAux':'xAOD::EventShapeAuxInfo',
321  'Kt4UFOCSSKNeutEventShape':'xAOD::EventShape',
322  'Kt4UFOCSSKNeutEventShapeAux':'xAOD::EventShapeAuxInfo'})
323 
324 
325  from DerivationFrameworkHiggs.HiggsPhysContent import setupHiggsSlimmingVariables
326  setupHiggsSlimmingVariables(flags, STDM6SlimmingHelper)
327 
328  # Trigger content
329  STDM6SlimmingHelper.IncludeTriggerNavigation = False
330  # modification from JET-M1 derivation:
331  STDM6SlimmingHelper.IncludeJetTriggerContent = True
332  STDM6SlimmingHelper.IncludeMuonTriggerContent = False
333  STDM6SlimmingHelper.IncludeEGammaTriggerContent = False
334  STDM6SlimmingHelper.IncludeJetTauEtMissTriggerContent = False
335  STDM6SlimmingHelper.IncludeTauTriggerContent = False
336  STDM6SlimmingHelper.IncludeEtMissTriggerContent = False
337  STDM6SlimmingHelper.IncludeBJetTriggerContent = False
338  STDM6SlimmingHelper.IncludeBPhysTriggerContent = False
339  STDM6SlimmingHelper.IncludeMinBiasTriggerContent = False
340 
341  # Trigger matching
342  # Run 2
343  if flags.Trigger.EDMVersion == 2:
344  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
345  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = STDM6SlimmingHelper,
346  OutputContainerPrefix = "TrigMatch_",
347  TriggerList = TriggerListsHelper.Run2TriggerNamesTau)
348  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = STDM6SlimmingHelper,
349  OutputContainerPrefix = "TrigMatch_",
350  TriggerList = TriggerListsHelper.Run2TriggerNamesNoTau)
351  triggerNames = ["a4tcemsubjesFS", "a4tcemsubjesISFS", "a10tclcwsubjesFS", "a10tclcwsubFS", "a10ttclcwjesFS", "GSCJet"]
352  for trigger in triggerNames:
353  STDM6SlimmingHelper.FinalItemList.append('xAOD::AuxContainerBase!#HLT_xAOD__JetContainer_'+trigger+'Aux.pt.eta.phi.m')
354 
355  # Run 3, or Run 2 with navigation conversion
356  if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
357  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
359 
360  jetOutputList = ["AntiKt4PV0TrackJets", "AntiKt4UFOCSSKJets"]
361  if flags.Input.isMC:
362  jetOutputList = ["AntiKt4PV0TrackJets","AntiKt4UFOCSSKNoPtCutJets","AntiKt4EMPFlowNoPtCutJets","AntiKt4EMTopoNoPtCutJets","AntiKt4EMPFlowMLJets"]
363  from DerivationFrameworkJetEtMiss.JetCommonConfig import addJetsToSlimmingTool
364  addJetsToSlimmingTool(STDM6SlimmingHelper, jetOutputList, STDM6SlimmingHelper.SmartCollections)
365 
366 
367  # Output stream
368  STDM6ItemList = STDM6SlimmingHelper.GetItemList()
369  acc.merge(OutputStreamCfg(flags, "DAOD_"+name_tag, ItemList=STDM6ItemList, AcceptAlgs=[name_tag+"Kernel"]))
370  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_"+name_tag, AcceptAlgs=[name_tag+"Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
371 
372  return acc
373 
374 def STDM6Cfg(flags):
375 
376  logSTDM6.info('****************** STARTING STDM6 *****************')
377 
378  stream_name = 'StreamDAOD_STDM6'
379  acc = ComponentAccumulator()
380 
381  # Get the lists of triggers needed for trigger matching.
382  # This is needed at this scope (for the slimming) and further down in the config chain
383  # for actually configuring the matching, so we create it here and pass it down
384  # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
385  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
386  STDM6TriggerListsHelper = TriggerListsHelper(flags)
387 
388  # for AOD produced before 24.0.17, the electron removal tau is not available
389  TauJets_EleRM_in_input = (flags.Input.TypedCollections.count('xAOD::TauJetContainer#TauJets_EleRM') > 0)
390  if TauJets_EleRM_in_input:
391  logSTDM6.info("TauJets_EleRM is in the input AOD. Relevant containers will be scheduled")
392  else:
393  logSTDM6.info("TauJets_EleRM is Not in the input AOD. No relevant containers will be written")
394 
395  # Common augmentations
396  acc.merge(STDM6KernelCfg(
397  flags,
398  name="STDM6Kernel",
399  StreamName = stream_name,
400  TriggerListsHelper = STDM6TriggerListsHelper,
401  TauJets_EleRM_in_input=TauJets_EleRM_in_input
402  ))
403  # STDM6 content
404  acc.merge(STDM6CoreCfg(
405  flags,
406  "STDM6",
407  StreamName = stream_name,
408  TriggerListsHelper = STDM6TriggerListsHelper,
409  TauJets_EleRM_in_input=TauJets_EleRM_in_input
410  ))
411 
412  return acc
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=None, MetadataItemList=None, disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=None, HelperTools=None)
Definition: OutputStreamConfig.py:13
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:99
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:342
python.InDetToolsConfig.InDetTrackSelectionToolWrapperCfg
def InDetTrackSelectionToolWrapperCfg(flags, name, CutLevel="TightPrimary", **kwargs)
Definition: InDetToolsConfig.py:484
python.STDM6.STDM6CoreCfg
def STDM6CoreCfg(flags, name_tag='STDM6', StreamName='StreamDAOD_STDM6', TriggerListsHelper=None, TauJets_EleRM_in_input=None)
Definition: STDM6.py:165
python.PhysCommonThinningConfig.PhysCommonThinningCfg
def PhysCommonThinningCfg(flags, StreamName="StreamDAOD_PHYS", **kwargs)
Definition: PhysCommonThinningConfig.py:9
python.JetInputConfig.buildEventShapeAlg
def buildEventShapeAlg(jetOrConstitdef, inputspec, voronoiRf=0.9, radius=0.4, suffix=None)
Definition: JetInputConfig.py:140
python.MCTruthCommonConfig.AddTauAndDownstreamParticlesCfg
def AddTauAndDownstreamParticlesCfg(flags, generations=-1, rejectHadronChildren=False)
Definition: MCTruthCommonConfig.py:279
python.JetRecConfig.getModifier
def getModifier(jetdef, moddef, modspec, flags=None)
Definition: JetRecConfig.py:668
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:29
python.MCTruthCommonConfig.AddTopQuarkAndDownstreamParticlesCfg
def AddTopQuarkAndDownstreamParticlesCfg(flags, generations=1, rejectHadronChildren=False)
Definition: MCTruthCommonConfig.py:269
python.STDM6.JETM1ExtraContentCfg
def JETM1ExtraContentCfg(flags)
Definition: STDM6.py:79
python.JetRecConfig.JetRecCfg
def JetRecCfg(flags, jetdef, returnConfiguredDef=False)
Top level functions returning ComponentAccumulator out of JetDefinition.
Definition: JetRecConfig.py:36
python.JetCommonConfig.addJetsToSlimmingTool
def addJetsToSlimmingTool(slimhelper, contentlist, smartlist=[])
Definition: JetCommonConfig.py:237
python.STDM6.STDM6KernelCfg
def STDM6KernelCfg(flags, name='STDM6Kernel', **kwargs)
Definition: STDM6.py:24
python.HiggsPhysContent.HiggsAugmentationAlgsCfg
def HiggsAugmentationAlgsCfg(flags)
Definition: HiggsPhysContent.py:4
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.JetRecConfig.getConstitPJGAlg
def getConstitPJGAlg(constitdef, suffix=None, flags=None, parent_jetdef=None)
Definition: JetRecConfig.py:350
python.MCTruthCommonConfig.addTruth3ContentToSlimmerTool
def addTruth3ContentToSlimmerTool(slimmer)
Definition: MCTruthCommonConfig.py:502
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:13
python.STDM6.STDM6Cfg
def STDM6Cfg(flags)
Definition: STDM6.py:374
python.HFClassificationCommonConfig.HFClassificationCommonCfg
def HFClassificationCommonCfg(flags)
Definition: HFClassificationCommonConfig.py:100
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