ATLAS Offline Software
ITkTrackOutputConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from InDetConfig.InDetTrackOutputConfig import FTAG_AUXDATA
5 
6 def ITkTrackRecoOutputCfg(flags, extensions_list=None):
7  if extensions_list is None:
8  extensions_list = []
9 
10  from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD
11  toAOD = []
12  toESD = []
13 
14  # excluded track aux data
15  excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO'
16  '.-TTVA_AMVFWeights_forReco')
17  # remove track decorations used internally by FTAG software
18  excludedAuxData += '.-'.join([''] + FTAG_AUXDATA)
19 
20  # exclude TTVA decorations
21  excludedAuxData += '.-TTVA_AMVFVertices.-TTVA_AMVFWeights'
22 
23  # exclude IDTIDE decorations
24  from DerivationFrameworkInDet.IDTIDE import IDTIDE_AOD_EXCLUDED_AUXDATA
25  excludedAuxData += '.-'.join([''] + IDTIDE_AOD_EXCLUDED_AUXDATA)
26  from DerivationFrameworkInDet.IDTRKVALID import IDTRKVALID_AOD_EXCLUDED_AUXDATA
27  excludedAuxData += '.-'.join([''] + IDTRKVALID_AOD_EXCLUDED_AUXDATA)
28 
29  if not flags.Tracking.writeExtendedSi_PRDInfo:
30  excludedAuxData += '.-msosLink'
31 
32  # Save PRD
33  toESD += [
34  "InDet::SCT_ClusterContainer#ITkStripClusters",
35  "InDet::PixelClusterContainer#ITkPixelClusters",
36  "InDet::PixelGangedClusterAmbiguities#ITkPixelClusterAmbiguitiesMap",
37  ]
38  if flags.Tracking.doPixelClusterSplitting:
39  toESD += [
40  "InDet::PixelGangedClusterAmbiguities#ITkSplitClusterAmbiguityMap"]
41 
42  from InDetConfig.ITkTrackRecoConfig import ITkClusterSplitProbabilityContainerName
43  toESD += ["Trk::ClusterSplitProbabilityContainer#" +
45 
46  # Save (Detailed) Track Truth
47  if flags.Tracking.doTruth:
48  toESD += [
49  "TrackTruthCollection#CombinedITkTracksTrackTruthCollection",
50  "DetailedTrackTruthCollection#CombinedITkTracksDetailedTrackTruth"]
51 
52  if flags.Tracking.doStoreSiSPSeededTracks:
53  # get list of extensions requesting track candidates. Add always the Primary Pass.
54  listOfExtensionsRequesting = [
55  e for e in extensions_list
56  if (e == '' or flags.Tracking.__getattr__(f"ITk{e}Pass").storeSiSPSeededTracks) ]
57 
58  for extension in listOfExtensionsRequesting:
59  toAOD += [
60  f"xAOD::TrackParticleContainer#SiSPSeededTracks{extension}TrackParticles",
61  f"xAOD::TrackParticleAuxContainer#SiSPSeededTracks{extension}TrackParticlesAux.{excludedAuxData}"]
62 
63  if flags.Tracking.doStoreTrackSeeds:
64  listOfExtensionsRequesting = [
65  e for e in extensions_list
66  if (e == '' or flags.Tracking.__getattr__(f"ITk{e}Pass").storeTrackSeeds) ]
67 
68  for extension in listOfExtensionsRequesting:
69  toESD += ["TrackCollection#SiSPSeedSegments"+extension]
70 
71  toESD += ["TrackCollection#CombinedITkTracks"]
72 
73 
74  toAOD += [
75  "xAOD::TrackParticleContainer#InDetTrackParticles",
76  f"xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux.{excludedAuxData}"
77  ]
78 
79  if flags.Tracking.writeExtendedSi_PRDInfo:
80  toAOD += [
81  "xAOD::TrackMeasurementValidationContainer#ITkPixelClusters",
82  "xAOD::TrackMeasurementValidationAuxContainer#ITkPixelClustersAux.",
83  "xAOD::TrackMeasurementValidationContainer#ITkStripClusters",
84  "xAOD::TrackMeasurementValidationAuxContainer#ITkStripClustersAux.",
85  "xAOD::TrackStateValidationContainer#ITkPixelMSOSs",
86  "xAOD::TrackStateValidationAuxContainer#ITkPixelMSOSsAux.",
87  "xAOD::TrackStateValidationContainer#ITkStripMSOSs",
88  "xAOD::TrackStateValidationAuxContainer#ITkStripMSOSsAux."
89  ]
90 
91  if flags.Tracking.doStoreSiSPSeededTracks:
92  toAOD += [
93  "xAOD::TrackStateValidationContainer#SiSP_ITkPixel_MSOSs",
94  "xAOD::TrackStateValidationAuxContainer#SiSP_ITkPixel_MSOSsAux.",
95  "xAOD::TrackStateValidationContainer#SiSP_ITkStrip_MSOSs",
96  "xAOD::TrackStateValidationAuxContainer#SiSP_ITkStrip_MSOSsAux."
97  ]
98 
99  if (flags.Tracking.doLargeD0 and
100  flags.Tracking.storeSeparateLargeD0Container):
101  toAOD += [
102  "xAOD::TrackParticleContainer#InDetLargeD0TrackParticles",
103  f"xAOD::TrackParticleAuxContainer#InDetLargeD0TrackParticlesAux.{excludedAuxData}"
104  ]
105 
106 
107  result = ComponentAccumulator()
108  result.merge(addToESD(flags, toAOD+toESD))
109  result.merge(addToAOD(flags, toAOD))
110  return result
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.ITkTrackOutputConfig.ITkTrackRecoOutputCfg
def ITkTrackRecoOutputCfg(flags, extensions_list=None)
Definition: ITkTrackOutputConfig.py:6
python.ITkTrackRecoConfig.ITkClusterSplitProbabilityContainerName
def ITkClusterSplitProbabilityContainerName(flags)
Definition: ITkTrackRecoConfig.py:106
python.OutputStreamConfig.addToESD
def addToESD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:127
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:142