31 generateTrackCollections = [
"InDetTrackParticles"]
35 for currentFlags
in scheduledTrackingPasses:
37 if currentFlags.Tracking.ActiveConfig.storeTrackSeeds:
39 generatePixelSegments = currentFlags.Detector.EnablePixel
40 generateStripSegments = currentFlags.Detector.EnableStrip
42 if generatePixelSegments:
43 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}PixelTrackParticles']
44 if generateStripSegments:
45 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}StripTrackParticles']
46 if generatePixelSegments
and generateStripSegments:
47 generateTrackCollections += [f
'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
50 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
51 generateTrackCollections += [f
'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
56 if currentFlags.Acts.doAmbiguityResolution
and currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
57 generateTrackCollections += [f
'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
59 print(
'Here is the list of generated track particle collections:')
60 for collection
in generateTrackCollections:
61 print(f
'- {collection}')
63 return generateTrackCollections
67 print(
"Scheduling the ACTS Job Option for Inner Detector Track Reconstruction")
69 acc = ComponentAccumulator()
75 previousExtension =
None
80 InputCombinedTracks = []
83 trackParticleContainerName =
"InDetTrackParticles"
84 primaryVertices =
"PrimaryVertices"
87 for currentFlags
in scheduledTrackingPasses:
89 print(f
"---- Preparing scheduling of algorithms for tracking pass: {currentFlags.Tracking.ActiveConfig.extension}")
90 print(f
"---- - Is primary pass: {isPrimaryPass(currentFlags)}")
91 from TrkConfig.TrackingPassFlags
import printActiveConfig
92 printActiveConfig(currentFlags)
96 from InDetConfig.ActsDataPreparationConfig
import ActsDataPreparationCfg
97 acc.merge(ActsDataPreparationCfg(currentFlags,
98 previousExtension = previousExtension))
102 from InDetConfig.ActsPatternRecognitionConfig
import ActsTrackReconstructionCfg
103 acc.merge(ActsTrackReconstructionCfg(currentFlags,
104 previousExtension = previousExtension))
107 previousExtension = currentFlags.Tracking.ActiveConfig.extension
108 if not currentFlags.Tracking.ActiveConfig.storeSeparateContainer
or isPrimaryPass(currentFlags):
109 acts_tracks = f
"{currentFlags.Tracking.ActiveConfig.extension}Tracks" if not currentFlags.Acts.doAmbiguityResolution
else f
"{currentFlags.Tracking.ActiveConfig.extension}ResolvedTracks"
110 InputCombinedTracks.append(acts_tracks)
114 print(f
"Creating track particle collection '{trackParticleContainerName}' from combination of following track collection:")
115 for trackCollection
in InputCombinedTracks:
116 print(f
'- {trackCollection}')
123 persistifyCollection =
True
124 particleCollection = trackParticleContainerName
125 perigeeExpression = flags.Tracking.perigeeExpression
126 if flags.Tracking.perigeeExpression ==
"Vertex":
128 persistifyCollection =
False
129 particleCollection = f
"{trackParticleContainerName}Temporary"
130 perigeeExpression =
"BeamLine"
133 from InDetConfig.ITkActsParticleCreationConfig
import ITkActsTrackParticleCreationCfg
134 acc.merge(ITkActsTrackParticleCreationCfg(flags,
135 TrackContainers = InputCombinedTracks,
136 TrackParticleContainer = particleCollection,
137 persistifyCollection = persistifyCollection,
138 PerigeeExpression = perigeeExpression))
141 if flags.Tracking.doVertexFinding:
142 from InDetConfig.ActsPriVxFinderConfig
import primaryVertexFindingCfg
143 acc.merge(primaryVertexFindingCfg(flags,
144 name =
"ActsPriVxFinderAlg",
145 TracksName = particleCollection,
146 vxCandidatesOutputName = primaryVertices))
154 if flags.Tracking.perigeeExpression ==
"Vertex":
155 assert flags.Tracking.doVertexFinding, \
156 f
"Requested the computation of track particles wrt but flags.Tracking.doVertexFinding is set to {flags.Tracking.doVertexFinding}"
157 print(
'Requesting to compute the track particle collection wrt the Vertex')
158 acc.merge(ITkActsTrackParticleCreationCfg(flags,
159 TrackContainers = InputCombinedTracks,
160 TrackParticleContainer = trackParticleContainerName))
163 print(
'Starting Post-Processing')
169 if flags.Tracking.writeExtendedSi_PRDInfo:
177 generatedTrackParticleCollections = [
"InDetTrackParticles"]
178 if flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements:
185 from InDetConfig.InDetPrepRawDataToxAODConfig
import ActsPrepDataToxAODCfg
186 acc.merge(ActsPrepDataToxAODCfg(flags,
187 TrackParticles = generatedTrackParticleCollections))
190 from ActsConfig.ActsObjectDecorationConfig
import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
191 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(flags,
192 name=f
"Acts{trackParticleContainerName}StateOnSurfaceDecoratorAlg",
193 TrackParticles=trackParticleContainerName))
196 for currentFlags
in scheduledTrackingPasses:
198 from InDetConfig.ITkActsParticleCreationConfig
import ITkActsTrackParticlePersistificationCfg
199 acc.merge(ITkActsTrackParticlePersistificationCfg(currentFlags))
205 if flags.Tracking.writeExtendedSi_PRDInfo:
206 from ActsConfig.ActsObjectDecorationConfig
import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
208 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
209 TrackParticleCollectionForMsos = f
'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
210 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
211 name=f
"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
212 TrackParticles=TrackParticleCollectionForMsos,
213 PixelMSOSs=f
"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
214 StripMSOSs=f
"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
216 if currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
221 TrackParticleCollectionForMsos = f
'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
222 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
223 name=f
"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
224 TrackParticles=TrackParticleCollectionForMsos,
225 PixelMSOSs=f
"{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
226 StripMSOSs=f
"{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
232 acc.printConfig(withDetails =
True, summariseProps =
True)