Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
IDTIDE.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 #!/usr/bin/env python
3 # ====================================================================
4 # IDTIDE.py
5 # Contact: atlas-cp-tracking-denseenvironments@cern.ch
6 # Component accumulator version - replaces IDTIDE1
7 # IMPORTANT: this is NOT an AOD based derived data type but one built
8 # during reconstruction from HITS or RAW. It consequently has to be
9 # run from Reco_tf
10 # ====================================================================
11 
12 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
13 from AthenaConfiguration.ComponentFactory import CompFactory
14 from AthenaConfiguration.Enums import MetadataCategory
15 from AthenaCommon.CFElements import seqAND, parAND
16 from AthenaCommon.Constants import INFO
17 
18 # IDTIDE Variables to be excluded from AOD
19 IDTIDE_AOD_EXCLUDED_AUXDATA = [
20  'TrkBLX', 'TrkBLY', 'TrkBLZ', 'TrkIBLX', 'TrkIBLY', 'TrkIBLZ',
21  'TrkL1X', 'TrkL1Y', 'TrkL1Z', 'TrkL2X', 'TrkL2Y', 'TrkL2Z',
22  'IDTIDE_biased_PVd0Sigma', 'IDTIDE_biased_PVz0Sigma',
23  'IDTIDE_biased_PVz0SigmaSinTheta',
24  'IDTIDE_biased_d0', 'IDTIDE_biased_d0Sigma',
25  'IDTIDE_biased_z0', 'IDTIDE_biased_z0Sigma',
26  'IDTIDE_biased_z0SigmaSinTheta', 'IDTIDE_biased_z0SinTheta',
27  'IDTIDE_unbiased_PVd0Sigma', 'IDTIDE_unbiased_PVz0Sigma',
28  'IDTIDE_unbiased_PVz0SigmaSinTheta',
29  'IDTIDE_unbiased_d0', 'IDTIDE_unbiased_d0Sigma',
30  'IDTIDE_unbiased_z0', 'IDTIDE_unbiased_z0Sigma',
31  'IDTIDE_unbiased_z0SigmaSinTheta', 'IDTIDE_unbiased_z0SinTheta'
32  ]
33 
34 
35 def IDTIDEKernelCommonCfg(flags, name='IDTIDEKernel'):
36  acc = ComponentAccumulator()
37 
38  # ====================================================================
39  # AUGMENTATION TOOLS
40  # ====================================================================
41  augmentationTools = []
42 
43  # Add unbiased track parameters to track particles
44  from DerivationFrameworkInDet.InDetToolsConfig import (
45  TrackToVertexWrapperCfg)
46  IDTIDETrackToVertexWrapper = acc.getPrimaryAndMerge(
48  flags, name="IDTIDETrackToVertexWrapper",
49  DecorationPrefix="IDTIDE")
50  )
51  augmentationTools.append(IDTIDETrackToVertexWrapper)
52 
53  from DerivationFrameworkInDet.InDetToolsConfig import (
54  UsedInVertexFitTrackDecoratorCfg)
55  IDTIDEUsedInFitDecorator = acc.getPrimaryAndMerge(
57  augmentationTools.append(IDTIDEUsedInFitDecorator)
58 
59  # @TODO eventually computed for other extra outputs. Possible to come up with a solution to use a common Z0AtPV if there is more than one client ?
60  from DerivationFrameworkInDet.InDetToolsConfig import (
61  TrackParametersAtPVCfg)
62  DFCommonZ0AtPV = acc.getPrimaryAndMerge(TrackParametersAtPVCfg(
63  flags, name="IDTIDE_DFCommonZ0AtPV",
64  Z0SGEntryName="IDTIDEInDetTrackZ0AtPV")
65  )
66  augmentationTools.append(DFCommonZ0AtPV)
67 
68  # ====================================================================
69  # SKIMMING TOOLS
70  #
71  # the list of active triggers for a particular release & menu can be found in the
72  # menu file for example
73  # https://gitlab.cern.ch/atlas/athena/-/blob/24.0/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py
74  # ====================================================================
75  skimmingTools = []
76  if not flags.Input.isMC:
77 
78  sel_jet600 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 600.*GeV'
79  sel_jet800 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 800.*GeV'
80  sel_jet1000 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 1000.*GeV'
81 
82  #Phase1 Calo version of Jet triggers
83  jetA_ph1 = '( HLT_j110_pf_ftf_preselj80_L1jJ60 || HLT_j175_pf_ftf_preselj140_L1jJ90 || HLT_j260_pf_ftf_preselj200_L1jJ125 )'
84  jetC_ph1 = '( HLT_j360_pf_ftf_preselj225_L1jJ160 )'
85  jetD_ph1 = '( HLT_j400_pf_ftf_preselj225_L1jJ160 && !HLT_j460_pf_ftf_preselj225_L1jJ160 )'
86  jetE_ph1 = '( HLT_j460_pf_ftf_preselj225_L1jJ160 )'
87  jetF_ph1 = ' HLT_j460_pf_ftf_preselj225_L1jJ160 '
88  jetG_ph1 = ' HLT_j460_pf_ftf_preselj225_L1jJ160 '
89  jetH_ph1 = ' HLT_j460_pf_ftf_preselj225_L1jJ160 '
90 
91 
92  desd_jetA = f'( HLT_j110_pf_ftf_preselj80_L1J30 || HLT_j175_pf_ftf_preselj140_L1J50 || HLT_j260_pf_ftf_preselj200_L1J75 ) || {jetA_ph1} '
93  desd_jetC = f'( HLT_j360_pf_ftf_preselj225_L1J100 ) || {jetC_ph1} '
94  desd_jetD = f'( HLT_j420_pf_ftf_preselj225_L1J100 && !HLT_j460_pf_ftf_preselj225_L1J100 ) || {jetD_ph1} '
95  desd_jetE = f'( HLT_j460_pf_ftf_preselj225_L1J100 ) || {jetE_ph1} '
96  desd_jetF = \
97  f'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetF_ph1} ) && count({sel_jet600})>0 && count({sel_jet800})==0 )'
98  desd_jetG = \
99  f'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetG_ph1} ) && count({sel_jet800})>0 && count({sel_jet1000})==0 )'
100  desd_jetH = f'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetH_ph1} ) && count({sel_jet1000})>0 )'
101 
102 
103  prescaleA = 20
104  prescaleC = 40
105  prescaleD = 30
106  prescaleE = 20
107  prescaleF = 10
108  prescaleG = 5
109  # prescaleH = 1 Unused
110 
111  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
112  xAODStringSkimmingToolCfg,
113  PrescaleToolCfg,
114  FilterCombinationANDCfg,
115  FilterCombinationORCfg)
116 
117  IDTIDE_SkimmingToolA = acc.getPrimaryAndMerge(
118  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolA",
119  expression=desd_jetA))
120  IDTIDE_PrescaleToolA = acc.getPrimaryAndMerge(PrescaleToolCfg(
121  flags, name="IDTIDE_PrescaleToolA", Prescale=prescaleA))
122  IDTIDE_ANDToolA = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
123  flags, name="IDTIDE_ANDToolA",
124  FilterList=[IDTIDE_SkimmingToolA, IDTIDE_PrescaleToolA]))
125 
126  IDTIDE_SkimmingToolC = acc.getPrimaryAndMerge(
127  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolC",
128  expression=desd_jetC))
129  IDTIDE_PrescaleToolC = acc.getPrimaryAndMerge(PrescaleToolCfg(
130  flags, name="IDTIDE_PrescaleToolC", Prescale=prescaleC))
131  IDTIDE_ANDToolC = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
132  flags, name="IDTIDE_ANDToolC",
133  FilterList=[IDTIDE_SkimmingToolC, IDTIDE_PrescaleToolC]))
134 
135  IDTIDE_SkimmingToolD = acc.getPrimaryAndMerge(
136  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolD",
137  expression=desd_jetD))
138  IDTIDE_PrescaleToolD = acc.getPrimaryAndMerge(PrescaleToolCfg(
139  flags, name="IDTIDE_PrescaleToolD", Prescale=prescaleD))
140  IDTIDE_ANDToolD = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
141  flags, name="IDTIDE_ANDToolD",
142  FilterList=[IDTIDE_SkimmingToolD, IDTIDE_PrescaleToolD]))
143 
144  IDTIDE_SkimmingToolE = acc.getPrimaryAndMerge(
145  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolE",
146  expression=desd_jetE))
147  IDTIDE_PrescaleToolE = acc.getPrimaryAndMerge(PrescaleToolCfg(
148  flags, name="IDTIDE_PrescaleToolE", Prescale=prescaleE))
149  IDTIDE_ANDToolE = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
150  flags, name="IDTIDE_ANDToolE",
151  FilterList=[IDTIDE_SkimmingToolE, IDTIDE_PrescaleToolE]))
152 
153  IDTIDE_SkimmingToolF = acc.getPrimaryAndMerge(
154  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolF",
155  expression=desd_jetF))
156  IDTIDE_PrescaleToolF = acc.getPrimaryAndMerge(PrescaleToolCfg(
157  flags, name="IDTIDE_PrescaleToolF", Prescale=prescaleF))
158  IDTIDE_ANDToolF = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
159  flags, name="IDTIDE_ANDToolF",
160  FilterList=[IDTIDE_SkimmingToolF, IDTIDE_PrescaleToolF]))
161 
162  IDTIDE_SkimmingToolG = acc.getPrimaryAndMerge(
163  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolG",
164  expression=desd_jetG))
165  IDTIDE_PrescaleToolG = acc.getPrimaryAndMerge(PrescaleToolCfg(
166  flags, name="IDTIDE_PrescaleToolG", Prescale=prescaleG))
167  IDTIDE_ANDToolG = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
168  flags, name="IDTIDE_ANDToolG",
169  FilterList=[IDTIDE_SkimmingToolG, IDTIDE_PrescaleToolG]))
170 
171  IDTIDE_SkimmingToolH = acc.getPrimaryAndMerge(
172  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolH",
173  expression=desd_jetH))
174 
175  IDTIDE_ORTool = acc.getPrimaryAndMerge(FilterCombinationORCfg(
176  flags, name="IDTIDELogicalCombination",
177  FilterList=[IDTIDE_ANDToolA, IDTIDE_ANDToolC, IDTIDE_ANDToolD,
178  IDTIDE_ANDToolE, IDTIDE_ANDToolF,
179  IDTIDE_ANDToolG, IDTIDE_SkimmingToolH]))
180 
181  skimmingTools.append(IDTIDE_ORTool)
182  # End of: if not flags.Input.isMC
183 
184  acc.addEventAlgo(
185  CompFactory.DerivationFramework.DerivationKernel(
186  "IDTIDEKernelPresel", SkimmingTools=skimmingTools))
187 
188  # ====================================================================
189  # CREATE THE DERIVATION KERNEL ALGORITHM AND PASS THE ABOVE TOOLS
190  # ====================================================================
191  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
192  name,
193  AugmentationTools=augmentationTools,
194  SkimmingTools=skimmingTools,
195  ThinningTools=[],
196  RunSkimmingFirst=True,
197  OutputLevel=INFO))
198 
199  return acc
200 
201 
202 def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName=""):
203  acc = ComponentAccumulator()
204 
205  # ====================================================================
206  # THINNING TOOLS
207  # ====================================================================
208  thinningTools = []
209 
210  # TrackParticles directly
211  if flags.Detector.GeometryID:
212  from DerivationFrameworkInDet.InDetToolsConfig import (
213  IDTIDEThinningToolCfg)
214  thinningTools.append(acc.getPrimaryAndMerge(
215  IDTIDEThinningToolCfg(flags, StreamName=StreamName)))
216  if flags.Detector.GeometryITk:
217  from DerivationFrameworkInDet.InDetToolsConfig import (
218  ITkTIDEThinningToolCfg)
219  thinningTools.append(acc.getPrimaryAndMerge(
220  ITkTIDEThinningToolCfg(flags, StreamName=StreamName)))
221 
222  # MC truth thinning
223  if flags.Input.isMC:
224  from DerivationFrameworkInDet.InDetToolsConfig import (
225  IDTIDETruthThinningToolCfg)
226  thinningTools.append(acc.getPrimaryAndMerge(
227  IDTIDETruthThinningToolCfg(flags, StreamName=StreamName)))
228 
229  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
230  name,
231  AugmentationTools=[],
232  ThinningTools=thinningTools,
233  OutputLevel=INFO))
234  return acc
235 
236 def IDTIDEKernelCfg(flags, StreamName=""):
237  """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
238  acc = ComponentAccumulator()
239 
240  # Sequence for skimming kernel (if running on data) -> PrepDataToxAOD -> IDTIDE kernel
241  # sequence to be used for algorithm which should run before the IDTIDEPresel
242  # Disabled as currently blocks decoration of Z0 and thus crashes thinning
243  IDTIDEPreselSequenceName='IDTIDEPreselSequence'
244  acc.addSequence(seqAND(IDTIDEPreselSequenceName))
245 
246  acc.merge(IDTIDEKernelCommonCfg(flags), sequenceName=IDTIDEPreselSequenceName)
247 
248  # Add decoration with truth parameters if running on simulation
249  # No idea what to do with this
250  # if flags.Input.isMC:
251  # # add track parameter decorations to truth particles but only if the decorations have not been applied already
252  # import InDetPhysValMonitoring.InDetPhysValDecoration
253  # meta_data = InDetPhysValMonitoring.InDetPhysValDecoration.getMetaData()
254  # from AthenaCommon.Logging import logging
255  # logger = logging.getLogger( "DerivationFramework" )
256  # if len(meta_data) == 0 :
257  # truth_track_param_decor_alg = InDetPhysValMonitoring.InDetPhysValDecoration.getInDetPhysValTruthDecoratorAlg()
258  # if InDetPhysValMonitoring.InDetPhysValDecoration.findAlg([truth_track_param_decor_alg.getName()]) == None :
259  # IDTIDESequencePre += truth_track_param_decor_alg
260  # else :
261  # logger.info('Decorator %s already present not adding again.' % (truth_track_param_decor_alg.getName() ))
262  # else :
263  # logger.info('IDPVM decorations to track particles already applied to input file not adding again.')
264 
265  IDTIDEPreselAlgSequenceName='IDTIDEPreselAlgSequence'
266  acc.addSequence(parAND(IDTIDEPreselAlgSequenceName),
267  parentName=IDTIDEPreselSequenceName)
268 
269  from InDetConfig.InDetPrepRawDataToxAODConfig import InDetPrepDataToxAODCfg
270  acc.merge(InDetPrepDataToxAODCfg(flags),
271  sequenceName=IDTIDEPreselAlgSequenceName)
272 
273  IDTIDEPostProcSequenceName='IDTIDEPostProcSequence'
274  acc.addSequence(parAND(IDTIDEPostProcSequenceName),
275  parentName=IDTIDEPreselSequenceName)
276 
277  from DerivationFrameworkInDet.InDetToolsConfig import (
278  DFInDetTSOSKernelCfg)
279  acc.merge(DFInDetTSOSKernelCfg(flags),
280  sequenceName=IDTIDEPostProcSequenceName)
281  acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName),
282  sequenceName=IDTIDEPostProcSequenceName)
283  return acc
284 
285 def ITkTIDEKernelCfg(flags, StreamName=""):
286  """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
287  acc = ComponentAccumulator()
288 
289  IDTIDEPreselSequenceName='IDTIDEPreselSequence'
290  acc.addSequence(seqAND(IDTIDEPreselSequenceName))
291 
292  acc.merge(IDTIDEKernelCommonCfg(flags), sequenceName=IDTIDEPreselSequenceName)
293 
294  IDTIDEPreselAlgSequenceName='IDTIDEPreselAlgSequence'
295  acc.addSequence(parAND(IDTIDEPreselAlgSequenceName),
296  parentName=IDTIDEPreselSequenceName)
297 
298  from InDetConfig.InDetPrepRawDataToxAODConfig import ITkPrepDataToxAODCfg
299  acc.merge(ITkPrepDataToxAODCfg(flags),
300  sequenceName=IDTIDEPreselAlgSequenceName)
301 
302  IDTIDEPostProcSequenceName='IDTIDEPostProcSequence'
303  acc.addSequence(parAND(IDTIDEPostProcSequenceName),
304  parentName=IDTIDEPreselSequenceName)
305 
306  # if the flags.Tracking.writeExtendedSi_PRDInfo is enabled
307  # the TSOS_CommonKernelCfg( is scheduled, which would do the same
308  # augemntation as the (DFITkTSOSKernel
309  if not flags.Tracking.writeExtendedSi_PRDInfo:
310  from DerivationFrameworkInDet.InDetToolsConfig import DFITkTSOSKernelCfg
311  acc.merge(DFITkTSOSKernelCfg(flags),
312  sequenceName=IDTIDEPostProcSequenceName)
313  acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName),
314  sequenceName=IDTIDEPostProcSequenceName)
315  return acc
316 
317 # Main config
318 
319 def IDTIDECfg(flags):
320  """Main config fragment for IDTIDE"""
321  acc = ComponentAccumulator()
322 
323  # Main algorithm (kernel)
324  if flags.Detector.GeometryID:
325  acc.merge(IDTIDEKernelCfg(flags, StreamName='StreamDAOD_IDTIDE'))
326  if flags.Detector.GeometryITk:
327  acc.merge(ITkTIDEKernelCfg(flags, StreamName='StreamDAOD_IDTIDE'))
328 
329  # =============================
330  # Define contents of the format
331  # =============================
332  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
333  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
334  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
335  IDTIDESlimmingHelper = SlimmingHelper(
336  "IDTIDESlimmingHelper",
337  NamesAndTypes=flags.Input.TypedCollections,
338  flags=flags)
339 
340  AllVariables = []
341  StaticContent = []
342  SmartCollections = []
343  ExtraVariables = []
344 
345  IDTIDESlimmingHelper.AppendToDictionary.update({
346  "EventInfo": "xAOD::EventInfo", "EventInfoAux": "xAOD::EventAuxInfo",
347  "CombinedMuonTrackParticles": "xAOD::TrackParticleContainer", "CombinedMuonTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
348  "Muons": "xAOD::MuonContainer", "MuonsAux": "xAOD::MuonAuxContainer",
349  "Electrons": "xAOD::ElectronContainer",
350  "ElectronsAux": "xAOD::ElectronAuxContainer",
351  "Photons": "xAOD::PhotonContainer",
352  "PhotonsAux": "xAOD::PhotonAuxContainer",
353  "JetETMissNeutralParticleFlowObjects": "xAOD::FlowElementContainer",
354  "JetETMissNeutralParticleFlowObjectsAux": "xAOD::FlowElementAuxContainer",
355  "JetETMissChargedParticleFlowObjects": "xAOD::FlowElementContainer",
356  "JetETMissChargedParticleFlowObjectsAux": "xAOD::FlowElementAuxContainer",
357  "TauJets": "xAOD::TauJetContainer",
358  "TauJetsAux": "xAOD::TauJetAuxContainer",
359  "InDetTrackParticles": "xAOD::TrackParticleContainer",
360  "InDetTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
361  "InDetLargeD0TrackParticles": "xAOD::TrackParticleContainer",
362  "InDetLargeD0TrackParticlesAux": "xAOD::TrackParticleAuxContainer",
363  "Kt4EMTopoOriginEventShape": "xAOD::EventShape",
364  "Kt4EMTopoOriginEventShapeAux": "xAOD::EventShapeAuxInfo",
365  "Kt4LCTopoOriginEventShape": "xAOD::EventShape",
366  "Kt4LCTopoOriginEventShapeAux": "xAOD::EventShapeAuxInfo",
367  "NeutralParticleFlowIsoCentralEventShape": "xAOD::EventShape",
368  "NeutralParticleFlowIsoCentralEventShapeAux": "xAOD::EventShapeAuxInfo",
369  "NeutralParticleFlowIsoForwardEventShape": "xAOD::EventShape",
370  "NeutralParticleFlowIsoForwardEventShapeAux": "xAOD::EventShapeAuxInfo",
371  "TopoClusterIsoCentralEventShape": "xAOD::EventShape",
372  "TopoClusterIsoCentralEventShapeAux": "xAOD::EventShapeAuxInfo",
373  "TopoClusterIsoForwardEventShape": "xAOD::EventShape",
374  "TopoClusterIsoForwardEventShapeAux": "xAOD::EventShapeAuxInfo"}
375  )
376  if flags.Detector.GeometryID:
377  IDTIDESlimmingHelper.AppendToDictionary.update({
378  "PixelClusters": "xAOD::TrackMeasurementValidationContainer",
379  "PixelClustersAux": "xAOD::TrackMeasurementValidationAuxContainer",
380  "SCT_Clusters": "xAOD::TrackMeasurementValidationContainer",
381  "SCT_ClustersAux": "xAOD::TrackMeasurementValidationAuxContainer"
382  })
383  if flags.Detector.GeometryITk:
384  IDTIDESlimmingHelper.AppendToDictionary.update({
385  "ITkPixelMeasurements": "xAOD::TrackMeasurementValidationContainer",
386  "ITkPixelMeasurementsAux": "xAOD::TrackMeasurementValidationAuxContainer",
387  "ITkStripMeasurements": "xAOD::TrackMeasurementValidationContainer",
388  "ITkStripMeasurementsAux": "xAOD::TrackMeasurementValidationAuxContainer"
389  })
390 
391  SmartCollections += ["Muons", "Electrons", "Photons"]
392 
393  AllVariables += ["EventInfo",
394  "JetETMissNeutralParticleFlowObjects",
395  "JetETMissChargedParticleFlowObjects",
396  "InDetTrackParticles",
397  "InDetLargeD0TrackParticles",
398  "PixelClusters",
399  "SCT_Clusters",
400  "Kt4EMTopoOriginEventShape",
401  "Kt4LCTopoOriginEventShape",
402  "NeutralParticleFlowIsoCentralEventShape",
403  "NeutralParticleFlowIsoForwardEventShape",
404  "TopoClusterIsoCentralEventShape",
405  "TopoClusterIsoForwardEventShape",
406  ]
407  if flags.Detector.GeometryID:
408  AllVariables += ["PixelClusters", "SCT_Clusters"]
409  if flags.Detector.GeometryITk:
410  AllVariables += ["ITkPixelMeasurements", "ITkStripMeasurements"]
411 
412  IDTIDESlimmingHelper.AppendToDictionary.update({
413  "Kt4EMPFlowEventShape": "xAOD::EventShape",
414  "Kt4EMPFlowEventShapeAux": "xAOD::EventShapeAuxInfo",
415  "PrimaryVertices": "xAOD::VertexContainer",
416  "PrimaryVerticesAux": "xAOD::VertexAuxContainer",
417  "InDetTrackParticlesClusterAssociations": "xAOD::TrackParticleClusterAssociationContainer",
418  "InDetTrackParticlesClusterAssociationsAux": "xAOD::TrackParticleClusterAssociationAuxContainer",
419  "AntiKt4EMTopoJets": "xAOD::JetContainer",
420  "AntiKt4EMTopoJetsAux": "xAOD::JetAuxContainer",
421  "AntiKt4EMPFlowJets": "xAOD::JetContainer",
422  "AntiKt4EMPFlowJetsAux": "xAOD::JetAuxContainer",
423  "BTagging_AntiKt4EMTopo": "xAOD::BTaggingContainer",
424  "BTagging_AntiKt4EMTopoAux": "xAOD::BTaggingAuxContainer",
425  "BTagging_AntiKt4EMPFlow": "xAOD::BTaggingContainer",
426  "BTagging_AntiKt4EMPFlowAux": "xAOD::BTaggingAuxContainer"})
427 
428  ExtraVariables += ["TauJets.ABS_ETA_LEAD_TRACK.ClusterTotalEnergy.ClustersMeanCenterLambda.ClustersMeanEMProbability.ClustersMeanFirstEngDens.ClustersMeanPresamplerFrac.ClustersMeanSecondLambda.EMFRACTIONATEMSCALE_MOVEE3.EMFracFixed.GhostMuonSegmentCount.LeadClusterFrac.NNDecayMode.NNDecayModeProb_1p0n.NNDecayModeProb_1p1n.NNDecayModeProb_1pXn.NNDecayModeProb_3p0n.NNDecayModeProb_3pXn.PFOEngRelDiff.PanTau_DecayModeExtended.TAU_ABSDELTAETA.TAU_ABSDELTAPHI.TAU_SEEDTRK_SECMAXSTRIPETOVERPT.UpsilonCluster.absipSigLeadTrk.chargedFELinks.etHotShotDR1.etHotShotDR1OverPtLeadTrk.etHotShotWin.etHotShotWinOverPtLeadTrk.etaCombined.hadLeakFracFixed.leadTrackProbHT.mCombined.mu.nConversionTracks.nFakeTracks.nModifiedIsolationTracks.nVtxPU.neutralFELinks.passThinning.phiCombined.ptCombined.ptIntermediateAxisEM.rho"]
429  ExtraVariables += ["PrimaryVertices.sumPt2.x.y.z"]
430 
431  AllVariables += ["Kt4EMPFlowEventShape",
432  "InDetTrackParticlesClusterAssociations",
433  "AntiKt4EMTopoJets", "AntiKt4EMPFlowJets",
434  "BTagging_AntiKt4EMTopo", "BTagging_AntiKt4EMPFlow"]
435 
436  if flags.Detector.EnablePixel:
437  IDTIDESlimmingHelper.AppendToDictionary.update(
438  {'PixelMSOSs': 'xAOD::TrackStateValidationContainer',
439  'PixelMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
440  AllVariables += ["PixelMSOSs"]
441 
442  if flags.Detector.EnableSCT:
443  IDTIDESlimmingHelper.AppendToDictionary.update(
444  {'SCT_MSOSs': 'xAOD::TrackStateValidationContainer',
445  'SCT_MSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
446  AllVariables += ["SCT_MSOSs"]
447 
448  if flags.Detector.EnableTRT:
449  IDTIDESlimmingHelper.AppendToDictionary.update(
450  {'TRT_MSOSs': 'xAOD::TrackStateValidationContainer',
451  'TRT_MSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
452  AllVariables += ["TRT_MSOSs"]
453 
454  if flags.Detector.EnableITkPixel:
455  IDTIDESlimmingHelper.AppendToDictionary.update(
456  {'ITkPixelMSOSs': 'xAOD::TrackStateValidationContainer',
457  'ITkPixelMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
458  AllVariables += ["ITkPixelMSOSs"]
459 
460  if flags.Detector.EnableITkStrip:
461  IDTIDESlimmingHelper.AppendToDictionary.update(
462  {'ITkStripMSOSs': 'xAOD::TrackStateValidationContainer',
463  'ITkStripMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
464  AllVariables += ["ITkStripMSOSs"]
465 
466  if flags.Input.isMC:
467 
468  IDTIDESlimmingHelper.AppendToDictionary.update({
469  "AntiKt4TruthJets": "xAOD::JetContainer",
470  "AntiKt4TruthJetsAux": "xAOD::JetAuxContainer",
471  "InTimeAntiKt4TruthJets": "xAOD::JetContainer",
472  "InTimeAntiKt4TruthJetsAux": "xAOD::JetAuxContainer",
473  "JetInputTruthParticles": "xAOD::TruthParticleContainer",
474  "JetInputTruthParticlesNoWZ": "xAOD::TruthParticleContainer",
475  "TruthEvents": "xAOD::TruthEventContainer",
476  "TruthEventsAux": "xAOD::TruthEventAuxContainer",
477  "TruthParticles": "xAOD::TruthParticleContainer",
478  "TruthParticlesAux": "xAOD::TruthParticleAuxContainer",
479  "egammaTruthParticles": "xAOD::TruthParticleContainer",
480  "egammaTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
481  "MuonTruthParticles": "xAOD::TruthParticleContainer",
482  "MuonTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
483  "LRTegammaTruthParticles": "xAOD::TruthParticleContainer",
484  "LRTegammaTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
485  "TruthVertices": "xAOD::TruthVertexContainer",
486  "TruthVerticesAux": "xAOD::TruthVertexAuxContainer"})
487 
488  AllVariables += ["AntiKt4TruthJets",
489  "InTimeAntiKt4TruthJets",
490  "JetInputTruthParticles",
491  "JetInputTruthParticlesNoWZ",
492  "TruthEvents",
493  "TruthParticles",
494  "egammaTruthParticles",
495  "MuonTruthParticles",
496  "LRTegammaTruthParticles",
497  "TruthVertices"]
498 
499  list_aux = ["BHadronsFinal", "BHadronsInitial", "BQuarksFinal",
500  "CHadronsFinal", "CHadronsInitial", "CQuarksFinal",
501  "HBosons", "Partons", "TQuarksFinal", "TausFinal",
502  "WBosons", "ZBosons"]
503  for item in list_aux:
504  label = "TruthLabel"+item
505  labelAux = label+"Aux"
506  IDTIDESlimmingHelper.AppendToDictionary.update(
507  {label: "xAOD::TruthParticleContainer",
508  labelAux: "xAOD::TruthParticleAuxContainer"})
509  AllVariables += [label]
510  # End of isMC block
511 
512  # Trigger info is actually stored only when running on data...
513  IDTIDESlimmingHelper.IncludeTriggerNavigation = True
514  IDTIDESlimmingHelper.IncludeAdditionalTriggerContent = True
515 
516  IDTIDESlimmingHelper.AllVariables = AllVariables
517  IDTIDESlimmingHelper.StaticContent = StaticContent
518  IDTIDESlimmingHelper.SmartCollections = SmartCollections
519  IDTIDESlimmingHelper.ExtraVariables = ExtraVariables
520 
521  # Output stream
522  IDTIDEItemList = IDTIDESlimmingHelper.GetItemList()
523  acc.merge(OutputStreamCfg(flags, "DAOD_IDTIDE",
524  ItemList=IDTIDEItemList, AcceptAlgs=["IDTIDEKernel"]))
525  acc.merge(SetupMetaDataForStreamCfg(
526  flags, "DAOD_IDTIDE", AcceptAlgs=["IDTIDEKernel"],
527  createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TriggerMenuMetaData]))
528 
529  return acc
python.InDetPrepRawDataToxAODConfig.InDetPrepDataToxAODCfg
def InDetPrepDataToxAODCfg(flags)
Definition: InDetPrepRawDataToxAODConfig.py:211
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.IDTIDE.ITkTIDEKernelCfg
def ITkTIDEKernelCfg(flags, StreamName="")
Definition: IDTIDE.py:285
python.DerivationFrameworkToolsConfig.FilterCombinationANDCfg
def FilterCombinationANDCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:59
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.InDetToolsConfig.TrackParametersAtPVCfg
def TrackParametersAtPVCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:399
python.IDTIDE.IDTIDEThinningKernelCfg
def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName="")
Definition: IDTIDE.py:202
python.InDetToolsConfig.DFInDetTSOSKernelCfg
def DFInDetTSOSKernelCfg(flags, name='DFInDetTSOSKernel')
Definition: InDetToolsConfig.py:142
python.IDTIDE.IDTIDEKernelCommonCfg
def IDTIDEKernelCommonCfg(flags, name='IDTIDEKernel')
Definition: IDTIDE.py:35
python.CFElements.seqAND
def seqAND(name, subs=[])
Definition: CFElements.py:25
python.DerivationFrameworkToolsConfig.FilterCombinationORCfg
def FilterCombinationORCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:68
python.InDetToolsConfig.TrackToVertexWrapperCfg
def TrackToVertexWrapperCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:604
python.InDetToolsConfig.IDTIDEThinningToolCfg
def IDTIDEThinningToolCfg(flags, name="IDTIDEThinningTool", **kwargs)
Definition: InDetToolsConfig.py:485
Constants
some useful constants -------------------------------------------------—
python.DerivationFrameworkToolsConfig.xAODStringSkimmingToolCfg
def xAODStringSkimmingToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:29
python.IDTIDE.IDTIDEKernelCfg
def IDTIDEKernelCfg(flags, StreamName="")
Definition: IDTIDE.py:236
python.InDetPrepRawDataToxAODConfig.ITkPrepDataToxAODCfg
def ITkPrepDataToxAODCfg(flags)
Definition: InDetPrepRawDataToxAODConfig.py:229
python.InDetToolsConfig.ITkTIDEThinningToolCfg
def ITkTIDEThinningToolCfg(flags, name="ITkTIDEThinningTool", **kwargs)
Definition: InDetToolsConfig.py:523
python.InDetToolsConfig.IDTIDETruthThinningToolCfg
def IDTIDETruthThinningToolCfg(flags, name="IDTIDETruthThinningTool", **kwargs)
Definition: InDetToolsConfig.py:621
UsedInVertexFitTrackDecoratorConfig.UsedInVertexFitTrackDecoratorCfg
def UsedInVertexFitTrackDecoratorCfg(flags, trackCont='InDetTrackParticles', vtxCont='PrimaryVertices')
Definition: UsedInVertexFitTrackDecoratorConfig.py:32
python.InDetToolsConfig.DFITkTSOSKernelCfg
def DFITkTSOSKernelCfg(flags, name='DFITkTSOSKernel')
Definition: InDetToolsConfig.py:331
python.DerivationFrameworkToolsConfig.PrescaleToolCfg
def PrescaleToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:50
python.IDTIDE.IDTIDECfg
def IDTIDECfg(flags)
Definition: IDTIDE.py:319
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.CFElements.parAND
def parAND(name, subs=[])
Definition: CFElements.py:7