32 generateTrackCollections = [
"InDetTrackParticles"]
36 for currentFlags
in scheduledTrackingPasses:
38 if currentFlags.Tracking.ActiveConfig.storeTrackSeeds:
40 generatePixelSegments = currentFlags.Detector.EnablePixel
41 generateStripSegments = currentFlags.Detector.EnableStrip
43 if generatePixelSegments:
44 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}PixelTrackParticles']
45 if generateStripSegments:
46 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}StripTrackParticles']
47 if generatePixelSegments
and generateStripSegments:
48 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
51 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
52 generateTrackCollections += [f
'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
57 if currentFlags.Acts.doAmbiguityResolution
and currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
58 generateTrackCollections += [f
'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
60 print(
'Here is the list of generated track particle collections:')
61 for collection
in generateTrackCollections:
62 print(f
'- {collection}')
64 return generateTrackCollections
68 print(
"Scheduling the ACTS Job Option for Inner Detector Track Reconstruction")
70 acc = ComponentAccumulator()
76 previousExtension =
None
81 InputCombinedTracks = []
84 trackParticleContainerName =
"InDetTrackParticles"
85 primaryVertices =
"PrimaryVertices"
88 for currentFlags
in scheduledTrackingPasses:
90 print(f
"---- Preparing scheduling of algorithms for tracking pass: {currentFlags.Tracking.ActiveConfig.extension}")
91 print(f
"---- - Is primary pass: {isPrimaryPass(currentFlags)}")
92 from TrkConfig.TrackingPassFlags
import printActiveConfig
93 printActiveConfig(currentFlags)
97 from InDetConfig.ActsDataPreparationConfig
import ActsDataPreparationCfg
98 acc.merge(ActsDataPreparationCfg(currentFlags,
99 previousExtension = previousExtension))
103 from InDetConfig.ActsPatternRecognitionConfig
import ActsTrackReconstructionCfg
104 acc.merge(ActsTrackReconstructionCfg(currentFlags,
105 previousExtension = previousExtension))
108 previousExtension = currentFlags.Tracking.ActiveConfig.extension
109 if not currentFlags.Tracking.ActiveConfig.storeSeparateContainer
or isPrimaryPass(currentFlags):
110 acts_tracks = f
"{currentFlags.Tracking.ActiveConfig.extension}Tracks" if not currentFlags.Acts.doAmbiguityResolution
else f
"{currentFlags.Tracking.ActiveConfig.extension}ResolvedTracks"
111 InputCombinedTracks.append(acts_tracks)
115 print(f
"Creating track particle collection '{trackParticleContainerName}' from combination of following track collection:")
116 for trackCollection
in InputCombinedTracks:
117 print(f
'- {trackCollection}')
124 persistifyCollection =
True
125 particleCollection = trackParticleContainerName
126 perigeeExpression = flags.Tracking.perigeeExpression
127 if flags.Tracking.perigeeExpression
is PerigeeExpression.Vertex:
129 persistifyCollection =
False
130 particleCollection = f
"{trackParticleContainerName}Temporary"
131 perigeeExpression = PerigeeExpression.BeamLine
134 from InDetConfig.ITkActsParticleCreationConfig
import ITkActsTrackParticleCreationCfg
135 acc.merge(ITkActsTrackParticleCreationCfg(flags,
136 TrackContainers = InputCombinedTracks,
137 TrackParticleContainer = particleCollection,
138 persistifyCollection = persistifyCollection,
139 PerigeeExpression = perigeeExpression))
142 if flags.Tracking.doVertexFinding:
143 from InDetConfig.ActsPriVxFinderConfig
import primaryVertexFindingCfg
144 acc.merge(primaryVertexFindingCfg(flags,
145 name =
"ActsPriVxFinderAlg",
146 TracksName = particleCollection,
147 vxCandidatesOutputName = primaryVertices))
155 if flags.Tracking.perigeeExpression
is PerigeeExpression.Vertex:
156 assert flags.Tracking.doVertexFinding, \
157 f
"Requested the computation of track particles wrt but flags.Tracking.doVertexFinding is set to {flags.Tracking.doVertexFinding}"
158 print(
'Requesting to compute the track particle collection wrt the Vertex')
159 acc.merge(ITkActsTrackParticleCreationCfg(flags,
160 TrackContainers = InputCombinedTracks,
161 TrackParticleContainer = trackParticleContainerName))
164 print(
'Starting Post-Processing')
170 if flags.Tracking.writeExtendedSi_PRDInfo:
178 generatedTrackParticleCollections = [
"InDetTrackParticles"]
179 if flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements:
186 from InDetConfig.InDetPrepRawDataToxAODConfig
import ActsPrepDataToxAODCfg
187 acc.merge(ActsPrepDataToxAODCfg(flags,
188 TrackParticles = generatedTrackParticleCollections))
191 from ActsConfig.ActsObjectDecorationConfig
import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
192 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(flags,
193 name=f
"Acts{trackParticleContainerName}StateOnSurfaceDecoratorAlg",
194 TrackParticles=trackParticleContainerName))
197 for currentFlags
in scheduledTrackingPasses:
199 from InDetConfig.ITkActsParticleCreationConfig
import ITkActsTrackParticlePersistificationCfg
200 acc.merge(ITkActsTrackParticlePersistificationCfg(currentFlags))
206 if flags.Tracking.writeExtendedSi_PRDInfo:
207 from ActsConfig.ActsObjectDecorationConfig
import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
209 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
210 TrackParticleCollectionForMsos = f
'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
211 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
212 name=f
"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
213 TrackParticles=TrackParticleCollectionForMsos,
214 PixelMSOSs=f
"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
215 StripMSOSs=f
"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
217 if currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
222 TrackParticleCollectionForMsos = f
'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
223 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
224 name=f
"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
225 TrackParticles=TrackParticleCollectionForMsos,
226 PixelMSOSs=f
"{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
227 StripMSOSs=f
"{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
233 acc.printConfig(withDetails =
True, summariseProps =
True)