ATLAS Offline Software
ITkTrackingSiPatternConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3 
4 # ------------------------------------------------------------
5 #
6 # ----------- Setup Si Pattern for New tracking
7 #
8 # ------------------------------------------------------------
9 
10 
12  InputCollections=None,
13  ResolvedTrackCollectionKey=None,
14  SiSPSeededTrackCollectionKey=None,
15  ClusterSplitProbContainer='',
16  previousActsExtension=None):
17  acc = ComponentAccumulator()
18  #
19  # --- get list of already associated hits (always do this, even if no other tracking ran before)
20  #
21  if flags.Tracking.ActiveConfig.usePrdAssociationTool:
22  from InDetConfig.InDetTrackPRD_AssociationConfig import (
23  ITkTrackPRD_AssociationCfg)
25  flags,
26  name=('ITkTrackPRD_Association' +
27  flags.Tracking.ActiveConfig.extension),
28  TracksName=list(InputCollections)))
29 
30  runTruth = True
31  runActsTrackTruth = False
32 
33  # Can use FastTrackFinder instead of SiSPSeededTrackFinder
34  if flags.Tracking.useITkFTF:
35 
36  # ------------------------------------------------------------
37  #
38  # ----------- FastTrackFinder
39  #
40  # ------------------------------------------------------------
41 
42  from TrigFastTrackFinder.ITkFastTrackFinderStandaloneConfig import (
43  ITkFastTrackFinderStandaloneCfg)
45  flags, SiSPSeededTrackCollectionKey))
46 
47  else:
48 
49  # ------------------------------------------------------------
50  #
51  # ----------- SiSPSeededTrackFinder
52  #
53  # ------------------------------------------------------------
54 
55  runTruth = flags.Tracking.ActiveConfig.doAthenaTrack or flags.Tracking.ActiveConfig.doActsToAthenaTrack or flags.Tracking.ActiveConfig.doGNNTrack
56 
57 
58  # Athena Track
59  if flags.Tracking.ActiveConfig.doAthenaTrack:
60  if flags.Tracking.ActiveConfig.extension in ["Conversion", "ActsValidateConversionSeeds"]:
61  from InDetConfig.SiSPSeededTrackFinderConfig import ITkSiSPSeededTrackFinderROIConvCfg
62  acc.merge(ITkSiSPSeededTrackFinderROIConvCfg(flags,
63  TracksLocation=SiSPSeededTrackCollectionKey))
64  else:
65  from InDetConfig.SiSPSeededTrackFinderConfig import ITkSiSPSeededTrackFinderCfg
66  acc.merge(ITkSiSPSeededTrackFinderCfg(flags, TracksLocation=SiSPSeededTrackCollectionKey))
67 
68  # GNN Track
69  if flags.Tracking.ActiveConfig.doGNNTrack:
70  from InDetGNNTracking.InDetGNNTrackingConfig import GNNTrackMakerCfg
71  acc.merge(GNNTrackMakerCfg(
72  flags,
73  TracksLocation=SiSPSeededTrackCollectionKey))
74 
75  # FPGA seed
76  if flags.Tracking.ActiveConfig.doFPGASeed:
77  from FPGATrackSimConfTools import FPGATrackSimAnalysisConfig
78  acc.merge(FPGATrackSimAnalysisConfig.FPGATrackSimSeedingCfg(flags))
79 
80  # ACTS seed
81  if flags.Tracking.ActiveConfig.doActsSeed:
82 
83  from ActsConfig.ActsSeedingConfig import (
84  ActsSeedingCfg)
85  acc.merge(ActsSeedingCfg(flags))
86 
87  # ACTS track
88  if flags.Tracking.ActiveConfig.doActsTrack:
89  from ActsConfig.ActsTrackFindingConfig import ActsTrackFindingCfg
90  acc.merge(ActsTrackFindingCfg(flags))
91  runActsTrackTruth = flags.Tracking.doTruth
92 
93  # Convert Tracks Acts -> Athena (before ambi)
94  if flags.Tracking.ActiveConfig.doActsToAthenaTrack:
95  from ActsConfig.ActsEventCnvConfig import ActsToTrkConvertorAlgCfg
96  acc.merge(ActsToTrkConvertorAlgCfg(flags,
97  ACTSTracksLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks",
98  TracksLocation=SiSPSeededTrackCollectionKey))
99 
100  # Convert tracks Athena -> Acts (before ambi)
101  if flags.Tracking.ActiveConfig.doAthenaToActsTrack:
102  from ActsConfig.ActsEventCnvConfig import TrkToActsConvertorAlgCfg
103  acc.merge(TrkToActsConvertorAlgCfg(flags,
104  TrackContainerLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks",
105  TrackCollectionKeys=[SiSPSeededTrackCollectionKey]))
106 
107 
108  from InDetConfig.ITkTrackTruthConfig import ITkTrackTruthCfg
109  if flags.Tracking.doTruth and runTruth:
110  acc.merge(ITkTrackTruthCfg(
111  flags,
112  Tracks=SiSPSeededTrackCollectionKey,
113  DetailedTruth=SiSPSeededTrackCollectionKey+"DetailedTruth",
114  TracksTruth=SiSPSeededTrackCollectionKey+"TruthCollection"))
115 
116  # ------------------------------------------------------------
117  #
118  # ---------- Ambiguity solving
119  #
120  # ------------------------------------------------------------
121  runTruth = True
122 
123  # if do GNN without ambi resolution, create a CopyAlgForAmbi
124  doGNNWithoutAmbiReso = flags.Tracking.ActiveConfig.doGNNTrack and (not flags.Tracking.GNN.doAmbiResolution)
125 
126  if (flags.Tracking.doITkFastTracking and flags.Tracking.ActiveConfig.doAthenaTrack or doGNNWithoutAmbiReso):
127 
128  from TrkConfig.TrkCollectionAliasAlgConfig import CopyAlgForAmbiCfg
129  acc.merge(CopyAlgForAmbiCfg(
130  flags,
131  "ITkCopyAlgForAmbi"+flags.Tracking.ActiveConfig.extension,
132  CollectionName=SiSPSeededTrackCollectionKey, # Input
133  AliasName=ResolvedTrackCollectionKey)) # Output
134 
135  else:
136  # If we run Athena tracking we also want CTIDE ambi
137  if flags.Tracking.ActiveConfig.doAthenaAmbiguityResolution:
138  # with Acts.doAmbiguityResolution the converter will directly produce
139  # tracks with the key ResolvedTrackCollectionKey
140  from TrkConfig.TrkAmbiguitySolverConfig import (
141  ITkTrkAmbiguityScoreCfg, ITkTrkAmbiguitySolverCfg)
142  acc.merge(ITkTrkAmbiguityScoreCfg(
143  flags,
144  SiSPSeededTrackCollectionKey=SiSPSeededTrackCollectionKey,
145  ClusterSplitProbContainer=ClusterSplitProbContainer))
146 
147  acc.merge(ITkTrkAmbiguitySolverCfg(
148  flags,
149  ResolvedTrackCollectionKey=ResolvedTrackCollectionKey))
150 
151  runTruth = True
152 
153  # If we run Acts tracking we may want Acts ambi, depending on the flag
154  if flags.Tracking.ActiveConfig.doActsAmbiguityResolution:
155  # Schedule ACTS ambi. resolution and eventually the track convertions
156  from ActsConfig.ActsTrackFindingConfig import ActsAmbiguityResolutionCfg
157  acc.merge(ActsAmbiguityResolutionCfg(flags))
158  runTruth = False
159 
160  from ActsConfig.ActsPrdAssociationConfig import ActsPrdAssociationAlgCfg
161  acc.merge(ActsPrdAssociationAlgCfg(flags,
162  name = f'{flags.Tracking.ActiveConfig.extension}PrdAssociationAlg',
163  previousActsExtension=previousActsExtension))
164 
165  if flags.Tracking.ActiveConfig.doActsToAthenaResolvedTrack:
166  from ActsConfig.ActsEventCnvConfig import ActsToTrkConvertorAlgCfg
167  acc.merge(ActsToTrkConvertorAlgCfg(flags,
168  ACTSTracksLocation=f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks",
169  TracksLocation=ResolvedTrackCollectionKey))
170  runTruth = False
171 
172 
173  if flags.Tracking.doTruth and runTruth:
174  acc.merge(ITkTrackTruthCfg(
175  flags,
176  Tracks=ResolvedTrackCollectionKey,
177  DetailedTruth=ResolvedTrackCollectionKey+"DetailedTruth",
178  TracksTruth=ResolvedTrackCollectionKey+"TruthCollection"))
179 
180  if runActsTrackTruth :
181  from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
182  acts_tracks=f"{flags.Tracking.ActiveConfig.extension}Tracks" if not flags.Acts.doAmbiguityResolution else f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
183  acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
184  name=f"{acts_tracks}TrackToTruthAssociationAlg",
185  ACTSTracksLocation=acts_tracks,
186  AssociationMapOut=acts_tracks+"ToTruthParticleAssociation"))
187 
188  acc.merge(ActsTrackFindingValidationAlgCfg(flags,
189  name=f"{acts_tracks}TrackFindingValidationAlg",
190  TrackToTruthAssociationMap=acts_tracks+"ToTruthParticleAssociation"
191  ))
192 
193 
194  return acc
ActsTrackFindingConfig.ActsTrackFindingCfg
ComponentAccumulator ActsTrackFindingCfg(flags, **kwargs)
Definition: ActsTrackFindingConfig.py:232
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.ITkTrackTruthConfig.ITkTrackTruthCfg
def ITkTrackTruthCfg(flags, Tracks="CombinedITkTracks", DetailedTruth="CombinedITkTracksDetailedTrackTruth", TracksTruth="CombinedITkTracksTrackTruthCollection")
Definition: ITkTrackTruthConfig.py:10
ActsTruthConfig.ActsTrackToTruthAssociationAlgCfg
ComponentAccumulator ActsTrackToTruthAssociationAlgCfg(flags, str name='ActsTracksToTruthAssociationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:65
python.TrkAmbiguitySolverConfig.ITkTrkAmbiguitySolverCfg
def ITkTrkAmbiguitySolverCfg(flags, name="ITkAmbiguitySolver", ResolvedTrackCollectionKey=None, **kwargs)
Definition: TrkAmbiguitySolverConfig.py:208
ITkFastTrackFinderStandaloneConfig.ITkFastTrackFinderStandaloneCfg
def ITkFastTrackFinderStandaloneCfg(flags, SiSPSeededTrackCollectionKey=None)
Definition: ITkFastTrackFinderStandaloneConfig.py:49
python.InDetTrackPRD_AssociationConfig.ITkTrackPRD_AssociationCfg
def ITkTrackPRD_AssociationCfg(flags, name='ITkTrackPRD_Association', **kwargs)
Definition: InDetTrackPRD_AssociationConfig.py:27
ActsPrdAssociationConfig.ActsPrdAssociationAlgCfg
ComponentAccumulator ActsPrdAssociationAlgCfg(flags, str name="ActsPrdAssociationAlg", *str previousActsExtension=None, **kwargs)
Definition: ActsPrdAssociationConfig.py:6
python.TrkAmbiguitySolverConfig.ITkTrkAmbiguityScoreCfg
def ITkTrkAmbiguityScoreCfg(flags, name="ITkAmbiguityScore", SiSPSeededTrackCollectionKey=None, ClusterSplitProbContainer='', **kwargs)
Definition: TrkAmbiguitySolverConfig.py:74
ActsTruthConfig.ActsTrackFindingValidationAlgCfg
ComponentAccumulator ActsTrackFindingValidationAlgCfg(flags, str name='ActsTracksValidationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:162
ActsEventCnvConfig.TrkToActsConvertorAlgCfg
ComponentAccumulator TrkToActsConvertorAlgCfg(flags, str name="", **kwargs)
Definition: ActsEventCnvConfig.py:43
ActsEventCnvConfig.ActsToTrkConvertorAlgCfg
ComponentAccumulator ActsToTrkConvertorAlgCfg(flags, str name="ActsToTrkConvertorAlg", **kwargs)
Definition: ActsEventCnvConfig.py:54
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.TrkCollectionAliasAlgConfig.CopyAlgForAmbiCfg
def CopyAlgForAmbiCfg(flags, name="CopyAlgForAmbi", **kwargs)
Definition: TrkCollectionAliasAlgConfig.py:6
python.SiSPSeededTrackFinderConfig.ITkSiSPSeededTrackFinderROIConvCfg
def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", **kwargs)
Definition: SiSPSeededTrackFinderConfig.py:186
ActsTrackFindingConfig.ActsAmbiguityResolutionCfg
ComponentAccumulator ActsAmbiguityResolutionCfg(flags, **kwargs)
Definition: ActsTrackFindingConfig.py:389
ActsSeedingConfig.ActsSeedingCfg
ComponentAccumulator ActsSeedingCfg(flags, **kwargs)
Definition: ActsSeedingConfig.py:446
python.SiSPSeededTrackFinderConfig.ITkSiSPSeededTrackFinderCfg
def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", **kwargs)
Definition: SiSPSeededTrackFinderConfig.py:111
python.ITkTrackingSiPatternConfig.ITkTrackingSiPatternCfg
def ITkTrackingSiPatternCfg(flags, InputCollections=None, ResolvedTrackCollectionKey=None, SiSPSeededTrackCollectionKey=None, ClusterSplitProbContainer='', previousActsExtension=None)
Definition: ITkTrackingSiPatternConfig.py:11
python.InDetGNNTrackingConfig.GNNTrackMakerCfg
def GNNTrackMakerCfg(flags, name="GNNTrackMaker", **kwargs)
Definition: InDetGNNTrackingConfig.py:118