ATLAS Offline Software
IDTIDE.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 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  skimmingTools = []
72  if not flags.Input.isMC:
73 
74  sel_jet600 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 600.*GeV'
75  sel_jet800 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 800.*GeV'
76  sel_jet1000 = 'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 1000.*GeV'
77 
78  desd_jetA = '( HLT_j110_pf_ftf_preselj80_L1J30 || HLT_j175_pf_ftf_preselj140_L1J50 || HLT_j260_pf_ftf_preselj200_L1J75 )'
79  desd_jetC = '( HLT_j360_pf_ftf_preselj225_L1J100 )'
80  desd_jetD = '( HLT_j420_pf_ftf_preselj225_L1J100 && !HLT_j460_pf_ftf_preselj225_L1J100 )'
81  desd_jetE = '( HLT_j460_pf_ftf_preselj225_L1J100 )'
82  desd_jetF = '( HLT_j460_pf_ftf_preselj225_L1J100 && count(' + \
83  sel_jet600+')>0 && count('+sel_jet800+')==0 )'
84  desd_jetG = '( HLT_j460_pf_ftf_preselj225_L1J100 && count(' + \
85  sel_jet800+')>0 && count('+sel_jet1000+')==0 )'
86  desd_jetH = '( HLT_j460_pf_ftf_preselj225_L1J100 && count('+sel_jet1000+')>0 )'
87 
88  prescaleA = 20
89  prescaleC = 40
90  prescaleD = 30
91  prescaleE = 20
92  prescaleF = 10
93  prescaleG = 5
94  # prescaleH = 1 Unused
95 
96  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
97  xAODStringSkimmingToolCfg,
98  PrescaleToolCfg,
99  FilterCombinationANDCfg,
100  FilterCombinationORCfg)
101 
102  IDTIDE_SkimmingToolA = acc.getPrimaryAndMerge(
103  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolA",
104  expression=desd_jetA))
105  IDTIDE_PrescaleToolA = acc.getPrimaryAndMerge(PrescaleToolCfg(
106  flags, name="IDTIDE_PrescaleToolA", Prescale=prescaleA))
107  IDTIDE_ANDToolA = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
108  flags, name="IDTIDE_ANDToolA",
109  FilterList=[IDTIDE_SkimmingToolA, IDTIDE_PrescaleToolA]))
110 
111  IDTIDE_SkimmingToolC = acc.getPrimaryAndMerge(
112  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolC",
113  expression=desd_jetC))
114  IDTIDE_PrescaleToolC = acc.getPrimaryAndMerge(PrescaleToolCfg(
115  flags, name="IDTIDE_PrescaleToolC", Prescale=prescaleC))
116  IDTIDE_ANDToolC = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
117  flags, name="IDTIDE_ANDToolC",
118  FilterList=[IDTIDE_SkimmingToolC, IDTIDE_PrescaleToolC]))
119 
120  IDTIDE_SkimmingToolD = acc.getPrimaryAndMerge(
121  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolD",
122  expression=desd_jetD))
123  IDTIDE_PrescaleToolD = acc.getPrimaryAndMerge(PrescaleToolCfg(
124  flags, name="IDTIDE_PrescaleToolD", Prescale=prescaleD))
125  IDTIDE_ANDToolD = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
126  flags, name="IDTIDE_ANDToolD",
127  FilterList=[IDTIDE_SkimmingToolD, IDTIDE_PrescaleToolD]))
128 
129  IDTIDE_SkimmingToolE = acc.getPrimaryAndMerge(
130  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolE",
131  expression=desd_jetE))
132  IDTIDE_PrescaleToolE = acc.getPrimaryAndMerge(PrescaleToolCfg(
133  flags, name="IDTIDE_PrescaleToolE", Prescale=prescaleE))
134  IDTIDE_ANDToolE = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
135  flags, name="IDTIDE_ANDToolE",
136  FilterList=[IDTIDE_SkimmingToolE, IDTIDE_PrescaleToolE]))
137 
138  IDTIDE_SkimmingToolF = acc.getPrimaryAndMerge(
139  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolF",
140  expression=desd_jetF))
141  IDTIDE_PrescaleToolF = acc.getPrimaryAndMerge(PrescaleToolCfg(
142  flags, name="IDTIDE_PrescaleToolF", Prescale=prescaleF))
143  IDTIDE_ANDToolF = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
144  flags, name="IDTIDE_ANDToolF",
145  FilterList=[IDTIDE_SkimmingToolF, IDTIDE_PrescaleToolF]))
146 
147  IDTIDE_SkimmingToolG = acc.getPrimaryAndMerge(
148  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolG",
149  expression=desd_jetG))
150  IDTIDE_PrescaleToolG = acc.getPrimaryAndMerge(PrescaleToolCfg(
151  flags, name="IDTIDE_PrescaleToolG", Prescale=prescaleG))
152  IDTIDE_ANDToolG = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
153  flags, name="IDTIDE_ANDToolG",
154  FilterList=[IDTIDE_SkimmingToolG, IDTIDE_PrescaleToolG]))
155 
156  IDTIDE_SkimmingToolH = acc.getPrimaryAndMerge(
157  xAODStringSkimmingToolCfg(flags, name="IDTIDE_SkimmingToolH",
158  expression=desd_jetH))
159 
160  IDTIDE_ORTool = acc.getPrimaryAndMerge(FilterCombinationORCfg(
161  flags, name="IDTIDELogicalCombination",
162  FilterList=[IDTIDE_ANDToolA, IDTIDE_ANDToolC, IDTIDE_ANDToolD,
163  IDTIDE_ANDToolE, IDTIDE_ANDToolF,
164  IDTIDE_ANDToolG, IDTIDE_SkimmingToolH]))
165 
166  skimmingTools.append(IDTIDE_ORTool)
167  # End of: if not flags.Input.isMC
168 
169  acc.addEventAlgo(
170  CompFactory.DerivationFramework.DerivationKernel(
171  "IDTIDEKernelPresel", SkimmingTools=skimmingTools))
172 
173  # ====================================================================
174  # CREATE THE DERIVATION KERNEL ALGORITHM AND PASS THE ABOVE TOOLS
175  # ====================================================================
176  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
177  name,
178  AugmentationTools=augmentationTools,
179  SkimmingTools=skimmingTools,
180  ThinningTools=[],
181  RunSkimmingFirst=True,
182  OutputLevel=INFO))
183 
184  return acc
185 
186 
187 def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName=""):
188  acc = ComponentAccumulator()
189 
190  # ====================================================================
191  # THINNING TOOLS
192  # ====================================================================
193  thinningTools = []
194 
195  # TrackParticles directly
196  if flags.Detector.GeometryID:
197  from DerivationFrameworkInDet.InDetToolsConfig import (
198  IDTIDEThinningToolCfg)
199  thinningTools.append(acc.getPrimaryAndMerge(
200  IDTIDEThinningToolCfg(flags, StreamName=StreamName)))
201  if flags.Detector.GeometryITk:
202  from DerivationFrameworkInDet.InDetToolsConfig import (
203  ITkTIDEThinningToolCfg)
204  thinningTools.append(acc.getPrimaryAndMerge(
205  ITkTIDEThinningToolCfg(flags, StreamName=StreamName)))
206 
207  # MC truth thinning
208  if flags.Input.isMC:
209  from DerivationFrameworkInDet.InDetToolsConfig import (
210  IDTIDETruthThinningToolCfg)
211  thinningTools.append(acc.getPrimaryAndMerge(
212  IDTIDETruthThinningToolCfg(flags, StreamName=StreamName)))
213 
214  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
215  name,
216  AugmentationTools=[],
217  ThinningTools=thinningTools,
218  OutputLevel=INFO))
219  return acc
220 
221 def IDTIDEKernelCfg(flags, StreamName=""):
222  """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
223  acc = ComponentAccumulator()
224 
225  # Sequence for skimming kernel (if running on data) -> PrepDataToxAOD -> IDTIDE kernel
226  # sequence to be used for algorithm which should run before the IDTIDEPresel
227  # Disabled as currently blocks decoration of Z0 and thus crashes thinning
228  IDTIDEPreselSequenceName='IDTIDEPreselSequence'
229  acc.addSequence(seqAND(IDTIDEPreselSequenceName))
230 
231  acc.merge(IDTIDEKernelCommonCfg(flags), sequenceName=IDTIDEPreselSequenceName)
232 
233  # Add decoration with truth parameters if running on simulation
234  # No idea what to do with this
235  # if flags.Input.isMC:
236  # # add track parameter decorations to truth particles but only if the decorations have not been applied already
237  # import InDetPhysValMonitoring.InDetPhysValDecoration
238  # meta_data = InDetPhysValMonitoring.InDetPhysValDecoration.getMetaData()
239  # from AthenaCommon.Logging import logging
240  # logger = logging.getLogger( "DerivationFramework" )
241  # if len(meta_data) == 0 :
242  # truth_track_param_decor_alg = InDetPhysValMonitoring.InDetPhysValDecoration.getInDetPhysValTruthDecoratorAlg()
243  # if InDetPhysValMonitoring.InDetPhysValDecoration.findAlg([truth_track_param_decor_alg.getName()]) == None :
244  # IDTIDESequencePre += truth_track_param_decor_alg
245  # else :
246  # logger.info('Decorator %s already present not adding again.' % (truth_track_param_decor_alg.getName() ))
247  # else :
248  # logger.info('IDPVM decorations to track particles already applied to input file not adding again.')
249 
250  IDTIDEPreselAlgSequenceName='IDTIDEPreselAlgSequence'
251  acc.addSequence(parAND(IDTIDEPreselAlgSequenceName),
252  parentName=IDTIDEPreselSequenceName)
253 
254  from InDetConfig.InDetPrepRawDataToxAODConfig import InDetPrepDataToxAODCfg
255  acc.merge(InDetPrepDataToxAODCfg(flags),
256  sequenceName=IDTIDEPreselAlgSequenceName)
257 
258  IDTIDEPostProcSequenceName='IDTIDEPostProcSequence'
259  acc.addSequence(parAND(IDTIDEPostProcSequenceName),
260  parentName=IDTIDEPreselSequenceName)
261 
262  from DerivationFrameworkInDet.InDetToolsConfig import (
263  DFInDetTSOSKernelCfg)
264  acc.merge(DFInDetTSOSKernelCfg(flags),
265  sequenceName=IDTIDEPostProcSequenceName)
266  acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName),
267  sequenceName=IDTIDEPostProcSequenceName)
268  return acc
269 
270 def ITkTIDEKernelCfg(flags, StreamName=""):
271  """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
272  acc = ComponentAccumulator()
273 
274  IDTIDEPreselSequenceName='IDTIDEPreselSequence'
275  acc.addSequence(seqAND(IDTIDEPreselSequenceName))
276 
277  acc.merge(IDTIDEKernelCommonCfg(flags), sequenceName=IDTIDEPreselSequenceName)
278 
279  IDTIDEPreselAlgSequenceName='IDTIDEPreselAlgSequence'
280  acc.addSequence(parAND(IDTIDEPreselAlgSequenceName),
281  parentName=IDTIDEPreselSequenceName)
282 
283  from InDetConfig.InDetPrepRawDataToxAODConfig import ITkPrepDataToxAODCfg
284  acc.merge(ITkPrepDataToxAODCfg(flags),
285  sequenceName=IDTIDEPreselAlgSequenceName)
286 
287  IDTIDEPostProcSequenceName='IDTIDEPostProcSequence'
288  acc.addSequence(parAND(IDTIDEPostProcSequenceName),
289  parentName=IDTIDEPreselSequenceName)
290 
291  # if the flags.Tracking.writeExtendedSi_PRDInfo is enabled
292  # the TSOS_CommonKernelCfg( is scheduled, which would do the same
293  # augemntation as the (DFITkTSOSKernel
294  if not flags.Tracking.writeExtendedSi_PRDInfo:
295  from DerivationFrameworkInDet.InDetToolsConfig import DFITkTSOSKernelCfg
296  acc.merge(DFITkTSOSKernelCfg(flags),
297  sequenceName=IDTIDEPostProcSequenceName)
298  acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName),
299  sequenceName=IDTIDEPostProcSequenceName)
300  return acc
301 
302 # Main config
303 
304 def IDTIDECfg(flags):
305  """Main config fragment for IDTIDE"""
306  acc = ComponentAccumulator()
307 
308  # Main algorithm (kernel)
309  if flags.Detector.GeometryID:
310  acc.merge(IDTIDEKernelCfg(flags, StreamName='StreamDAOD_IDTIDE'))
311  if flags.Detector.GeometryITk:
312  acc.merge(ITkTIDEKernelCfg(flags, StreamName='StreamDAOD_IDTIDE'))
313 
314  # =============================
315  # Define contents of the format
316  # =============================
317  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
318  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
319  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
320  IDTIDESlimmingHelper = SlimmingHelper(
321  "IDTIDESlimmingHelper",
322  NamesAndTypes=flags.Input.TypedCollections,
323  flags=flags)
324 
325  AllVariables = []
326  StaticContent = []
327  SmartCollections = []
328  ExtraVariables = []
329 
330  IDTIDESlimmingHelper.AppendToDictionary.update({
331  "EventInfo": "xAOD::EventInfo", "EventInfoAux": "xAOD::EventAuxInfo",
332  "Muons": "xAOD::MuonContainer", "MuonsAux": "xAOD::MuonAuxContainer",
333  "Electrons": "xAOD::ElectronContainer",
334  "ElectronsAux": "xAOD::ElectronAuxContainer",
335  "Photons": "xAOD::PhotonContainer",
336  "PhotonsAux": "xAOD::PhotonAuxContainer",
337  "JetETMissNeutralParticleFlowObjects": "xAOD::FlowElementContainer",
338  "JetETMissNeutralParticleFlowObjectsAux": "xAOD::FlowElementAuxContainer",
339  "JetETMissChargedParticleFlowObjects": "xAOD::FlowElementContainer",
340  "JetETMissChargedParticleFlowObjectsAux": "xAOD::FlowElementAuxContainer",
341  "TauJets": "xAOD::TauJetContainer",
342  "TauJetsAux": "xAOD::TauJetAuxContainer",
343  "InDetTrackParticles": "xAOD::TrackParticleContainer",
344  "InDetTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
345  "InDetLargeD0TrackParticles": "xAOD::TrackParticleContainer",
346  "InDetLargeD0TrackParticlesAux": "xAOD::TrackParticleAuxContainer",
347  "Kt4EMTopoOriginEventShape": "xAOD::EventShape",
348  "Kt4EMTopoOriginEventShapeAux": "xAOD::EventShapeAuxInfo",
349  "Kt4LCTopoOriginEventShape": "xAOD::EventShape",
350  "Kt4LCTopoOriginEventShapeAux": "xAOD::EventShapeAuxInfo",
351  "NeutralParticleFlowIsoCentralEventShape": "xAOD::EventShape",
352  "NeutralParticleFlowIsoCentralEventShapeAux": "xAOD::EventShapeAuxInfo",
353  "NeutralParticleFlowIsoForwardEventShape": "xAOD::EventShape",
354  "NeutralParticleFlowIsoForwardEventShapeAux": "xAOD::EventShapeAuxInfo",
355  "TopoClusterIsoCentralEventShape": "xAOD::EventShape",
356  "TopoClusterIsoCentralEventShapeAux": "xAOD::EventShapeAuxInfo",
357  "TopoClusterIsoForwardEventShape": "xAOD::EventShape",
358  "TopoClusterIsoForwardEventShapeAux": "xAOD::EventShapeAuxInfo"}
359  )
360  if flags.Detector.GeometryID:
361  IDTIDESlimmingHelper.AppendToDictionary.update({
362  "PixelClusters": "xAOD::TrackMeasurementValidationContainer",
363  "PixelClustersAux": "xAOD::TrackMeasurementValidationAuxContainer",
364  "SCT_Clusters": "xAOD::TrackMeasurementValidationContainer",
365  "SCT_ClustersAux": "xAOD::TrackMeasurementValidationAuxContainer"
366  })
367  if flags.Detector.GeometryITk:
368  IDTIDESlimmingHelper.AppendToDictionary.update({
369  "ITkPixelClusters": "xAOD::TrackMeasurementValidationContainer",
370  "ITkPixelClustersAux": "xAOD::TrackMeasurementValidationAuxContainer",
371  "ITkStripClusters": "xAOD::TrackMeasurementValidationContainer",
372  "ITkStripClustersAux": "xAOD::TrackMeasurementValidationAuxContainer"
373  })
374 
375  SmartCollections += ["Muons", "Electrons", "Photons"]
376 
377  AllVariables += ["EventInfo",
378  "JetETMissNeutralParticleFlowObjects",
379  "JetETMissChargedParticleFlowObjects",
380  "InDetTrackParticles",
381  "InDetLargeD0TrackParticles",
382  "PixelClusters",
383  "SCT_Clusters",
384  "Kt4EMTopoOriginEventShape",
385  "Kt4LCTopoOriginEventShape",
386  "NeutralParticleFlowIsoCentralEventShape",
387  "NeutralParticleFlowIsoForwardEventShape",
388  "TopoClusterIsoCentralEventShape",
389  "TopoClusterIsoForwardEventShape",
390  ]
391  if flags.Detector.GeometryID:
392  AllVariables += ["PixelClusters", "SCT_Clusters"]
393  if flags.Detector.GeometryITk:
394  AllVariables += ["ITkPixelClusters", "ITkStripClusters"]
395 
396  IDTIDESlimmingHelper.AppendToDictionary.update({
397  "Kt4EMPFlowEventShape": "xAOD::EventShape",
398  "Kt4EMPFlowEventShapeAux": "xAOD::EventShapeAuxInfo",
399  "PrimaryVertices": "xAOD::VertexContainer",
400  "PrimaryVerticesAux": "xAOD::VertexAuxContainer",
401  "InDetTrackParticlesClusterAssociations": "xAOD::TrackParticleClusterAssociationContainer",
402  "InDetTrackParticlesClusterAssociationsAux": "xAOD::TrackParticleClusterAssociationAuxContainer",
403  "AntiKt4EMTopoJets": "xAOD::JetContainer",
404  "AntiKt4EMTopoJetsAux": "xAOD::JetAuxContainer",
405  "AntiKt4EMPFlowJets": "xAOD::JetContainer",
406  "AntiKt4EMPFlowJetsAux": "xAOD::JetAuxContainer",
407  "BTagging_AntiKt4EMTopo": "xAOD::BTaggingContainer",
408  "BTagging_AntiKt4EMTopoAux": "xAOD::BTaggingAuxContainer",
409  "BTagging_AntiKt4EMPFlow": "xAOD::BTaggingContainer",
410  "BTagging_AntiKt4EMPFlowAux": "xAOD::BTaggingAuxContainer"})
411 
412  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"]
413  ExtraVariables += ["PrimaryVertices.sumPt2.x.y.z"]
414 
415  AllVariables += ["Kt4EMPFlowEventShape",
416  "InDetTrackParticlesClusterAssociations",
417  "AntiKt4EMTopoJets", "AntiKt4EMPFlowJets",
418  "BTagging_AntiKt4EMTopo", "BTagging_AntiKt4EMPFlow"]
419 
420  if flags.Detector.EnablePixel:
421  IDTIDESlimmingHelper.AppendToDictionary.update(
422  {'PixelMSOSs': 'xAOD::TrackStateValidationContainer',
423  'PixelMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
424  AllVariables += ["PixelMSOSs"]
425 
426  if flags.Detector.EnableSCT:
427  IDTIDESlimmingHelper.AppendToDictionary.update(
428  {'SCT_MSOSs': 'xAOD::TrackStateValidationContainer',
429  'SCT_MSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
430  AllVariables += ["SCT_MSOSs"]
431 
432  if flags.Detector.EnableTRT:
433  IDTIDESlimmingHelper.AppendToDictionary.update(
434  {'TRT_MSOSs': 'xAOD::TrackStateValidationContainer',
435  'TRT_MSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
436  AllVariables += ["TRT_MSOSs"]
437 
438  if flags.Detector.EnableITkPixel:
439  IDTIDESlimmingHelper.AppendToDictionary.update(
440  {'ITkPixelMSOSs': 'xAOD::TrackStateValidationContainer',
441  'ITkPixelMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
442  AllVariables += ["ITkPixelMSOSs"]
443 
444  if flags.Detector.EnableITkStrip:
445  IDTIDESlimmingHelper.AppendToDictionary.update(
446  {'ITkStripMSOSs': 'xAOD::TrackStateValidationContainer',
447  'ITkStripMSOSsAux': 'xAOD::TrackStateValidationAuxContainer'})
448  AllVariables += ["ITkStripMSOSs"]
449 
450  if flags.Input.isMC:
451 
452  IDTIDESlimmingHelper.AppendToDictionary.update({
453  "AntiKt4TruthJets": "xAOD::JetContainer",
454  "AntiKt4TruthJetsAux": "xAOD::JetAuxContainer",
455  "JetInputTruthParticles": "xAOD::TruthParticleContainer",
456  "JetInputTruthParticlesNoWZ": "xAOD::TruthParticleContainer",
457  "TruthEvents": "xAOD::TruthEventContainer",
458  "TruthEventsAux": "xAOD::TruthEventAuxContainer",
459  "TruthParticles": "xAOD::TruthParticleContainer",
460  "TruthParticlesAux": "xAOD::TruthParticleAuxContainer",
461  "egammaTruthParticles": "xAOD::TruthParticleContainer",
462  "egammaTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
463  "MuonTruthParticles": "xAOD::TruthParticleContainer",
464  "MuonTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
465  "LRTegammaTruthParticles": "xAOD::TruthParticleContainer",
466  "LRTegammaTruthParticlesAux": "xAOD::TruthParticleAuxContainer",
467  "TruthVertices": "xAOD::TruthVertexContainer",
468  "TruthVerticesAux": "xAOD::TruthVertexAuxContainer"})
469 
470  AllVariables += ["AntiKt4TruthJets",
471  "JetInputTruthParticles",
472  "JetInputTruthParticlesNoWZ",
473  "TruthEvents",
474  "TruthParticles",
475  "egammaTruthParticles",
476  "MuonTruthParticles",
477  "LRTegammaTruthParticles",
478  "TruthVertices"]
479 
480  list_aux = ["BHadronsFinal", "BHadronsInitial", "BQuarksFinal",
481  "CHadronsFinal", "CHadronsInitial", "CQuarksFinal",
482  "HBosons", "Partons", "TQuarksFinal", "TausFinal",
483  "WBosons", "ZBosons"]
484  for item in list_aux:
485  label = "TruthLabel"+item
486  labelAux = label+"Aux"
487  IDTIDESlimmingHelper.AppendToDictionary.update(
488  {label: "xAOD::TruthParticleContainer",
489  labelAux: "xAOD::TruthParticleAuxContainer"})
490  AllVariables += [label]
491  # End of isMC block
492 
493  # Trigger info is actually stored only when running on data...
494  IDTIDESlimmingHelper.IncludeTriggerNavigation = True
495  IDTIDESlimmingHelper.IncludeAdditionalTriggerContent = True
496 
497  IDTIDESlimmingHelper.AllVariables = AllVariables
498  IDTIDESlimmingHelper.StaticContent = StaticContent
499  IDTIDESlimmingHelper.SmartCollections = SmartCollections
500  IDTIDESlimmingHelper.ExtraVariables = ExtraVariables
501 
502  # Output stream
503  IDTIDEItemList = IDTIDESlimmingHelper.GetItemList()
504  acc.merge(OutputStreamCfg(flags, "DAOD_IDTIDE",
505  ItemList=IDTIDEItemList, AcceptAlgs=["IDTIDEKernel"]))
506  acc.merge(SetupMetaDataForStreamCfg(
507  flags, "DAOD_IDTIDE", AcceptAlgs=["IDTIDEKernel"],
508  createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TriggerMenuMetaData]))
509 
510  return acc
python.InDetPrepRawDataToxAODConfig.InDetPrepDataToxAODCfg
def InDetPrepDataToxAODCfg(flags)
Definition: InDetPrepRawDataToxAODConfig.py:160
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.IDTIDE.ITkTIDEKernelCfg
def ITkTIDEKernelCfg(flags, StreamName="")
Definition: IDTIDE.py:270
python.DerivationFrameworkToolsConfig.FilterCombinationANDCfg
def FilterCombinationANDCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:59
python.InDetToolsConfig.TrackParametersAtPVCfg
def TrackParametersAtPVCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:365
python.IDTIDE.IDTIDEThinningKernelCfg
def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName="")
Definition: IDTIDE.py:187
python.InDetToolsConfig.DFInDetTSOSKernelCfg
def DFInDetTSOSKernelCfg(flags, name='DFInDetTSOSKernel')
Definition: InDetToolsConfig.py:139
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:556
python.InDetToolsConfig.IDTIDEThinningToolCfg
def IDTIDEThinningToolCfg(flags, name="IDTIDEThinningTool", **kwargs)
Definition: InDetToolsConfig.py:437
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:221
python.InDetPrepRawDataToxAODConfig.ITkPrepDataToxAODCfg
def ITkPrepDataToxAODCfg(flags)
Definition: InDetPrepRawDataToxAODConfig.py:178
python.InDetToolsConfig.ITkTIDEThinningToolCfg
def ITkTIDEThinningToolCfg(flags, name="ITkTIDEThinningTool", **kwargs)
Definition: InDetToolsConfig.py:475
python.InDetToolsConfig.IDTIDETruthThinningToolCfg
def IDTIDETruthThinningToolCfg(flags, name="IDTIDETruthThinningTool", **kwargs)
Definition: InDetToolsConfig.py:573
UsedInVertexFitTrackDecoratorConfig.UsedInVertexFitTrackDecoratorCfg
def UsedInVertexFitTrackDecoratorCfg(flags, trackCont='InDetTrackParticles', vtxCont='PrimaryVertices')
Definition: UsedInVertexFitTrackDecoratorConfig.py:32
python.InDetToolsConfig.DFITkTSOSKernelCfg
def DFITkTSOSKernelCfg(flags, name='DFITkTSOSKernel')
Definition: InDetToolsConfig.py:298
python.DerivationFrameworkToolsConfig.PrescaleToolCfg
def PrescaleToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:50
python.IDTIDE.IDTIDECfg
def IDTIDECfg(flags)
Definition: IDTIDE.py:304
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:216
SlimmingHelper
Definition: SlimmingHelper.py:1
python.CFElements.parAND
def parAND(name, subs=[])
Definition: CFElements.py:7