ATLAS Offline Software
Loading...
Searching...
No Matches
python.TrackRecoConfig Namespace Reference

Functions

 CombinedTrackingPassFlagSets (flags, resetCache=False)
 ClusterSplitProbabilityContainerName (flags)
 InDetCosmicsTrackRecoPreProcessingCfg (flags)
 InDetPreProcessingCfg (flags)
 SiDetectorElementStatusCfg (flags, suffix="")
 SiSubDetTrackRecoCfg (flags, detector="", extensions_list=None, ClusterSplitProbContainer="")
 TRTTrackRecoCfg (flags, extensions_list=None)
 TRTStandalonePassRecoCfg (flags, InputCombinedInDetTracks=None, InputExtendedInDetTracks=None, StatTrackCollections=None, StatTrackTruthCollections=None)
 StoreTrackSeparateContainerCfg (flags, TrackContainer="", ClusterSplitProbContainer="")
 TrackOverlayResolvedTracksName (flags)
 TrackOverlayRoIRemovedTracksName (flags)
 BackTrackingRecoCfg (flags, InputCombinedInDetTracks=None, InputExtendedInDetTracks=None, StatTrackCollections=None, StatTrackTruthCollections=None, ClusterSplitProbContainer="")
 TrackRecoPassCfg (flags, extension="", doTrackingSiPattern=True, InputCombinedInDetTracks=None, InputExtendedInDetTracks=None, StatTrackCollections=None, StatTrackTruthCollections=None, ClusterSplitProbContainer="")
 TrackFinalCfg (flags, InputCombinedInDetTracks=None, StatTrackCollections=None, StatTrackTruthCollections=None)
 PseudoTrackFinalCfg (flags)
 ObserverTrackFinalCfg (flags)
 TrackSeedsFinalCfg (flags)
 SiSPSeededTracksFinalCfg (flags)
 InDetStatsCfg (flags, StatTrackCollections=None, StatTrackTruthCollections=None)
 ExtendedPRDInfoCfg (flags)
 InDetTrackRecoCfg (flags)
 Main ID tracking config #####################.
 TrackRecoConfigTest (flags=None)

Variables

list _flags_set = []
list _extensions_list = []

Function Documentation

◆ BackTrackingRecoCfg()

BackTrackingRecoCfg ( flags,
InputCombinedInDetTracks = None,
InputExtendedInDetTracks = None,
StatTrackCollections = None,
StatTrackTruthCollections = None,
ClusterSplitProbContainer = "" )

Definition at line 385 of file TrackRecoConfig.py.

390 ClusterSplitProbContainer=""):
391 result = ComponentAccumulator()
392
393 if InputCombinedInDetTracks is None:
394 InputCombinedInDetTracks = []
395 if InputExtendedInDetTracks is None:
396 InputExtendedInDetTracks = []
397 if StatTrackCollections is None:
398 StatTrackCollections = []
399 if StatTrackTruthCollections is None:
400 StatTrackTruthCollections = []
401
402 from InDetConfig.BackTrackingConfig import BackTrackingCfg
403 result.merge(BackTrackingCfg(
404 flags,
405 InputCollections=InputCombinedInDetTracks,
406 ClusterSplitProbContainer=ClusterSplitProbContainer))
407
408 ClusterSplitProbContainer = (
409 "InDetTRT_SeededAmbiguityProcessorSplitProb" +
410 flags.Tracking.ActiveConfig.extension)
411 TRTSeededTracks = "TRTSeededTracks"
412 ResolvedTRTSeededTracks = "ResolvedTRTSeededTracks"
413 InputCombinedInDetTracks += [ResolvedTRTSeededTracks]
414 InputExtendedInDetTracks += [ResolvedTRTSeededTracks]
415 StatTrackCollections += [TRTSeededTracks,
416 ResolvedTRTSeededTracks]
417 StatTrackTruthCollections += [TRTSeededTracks+"TruthCollection",
418 ResolvedTRTSeededTracks+"TruthCollection"]
419
420 return result, ClusterSplitProbContainer
421
422
423# Returns CA + ClusterSplitProbContainer

◆ ClusterSplitProbabilityContainerName()

ClusterSplitProbabilityContainerName ( flags)

Definition at line 89 of file TrackRecoConfig.py.

89def ClusterSplitProbabilityContainerName(flags):
90 if flags.Detector.GeometryITk:
91 from InDetConfig.ITkTrackRecoConfig import (
92 ITkClusterSplitProbabilityContainerName)
93 return ITkClusterSplitProbabilityContainerName(flags)
94
95 flags_set = CombinedTrackingPassFlagSets(flags)
96 extension = flags_set[-1].Tracking.ActiveConfig.extension
97
98 # No ambi processing for TRT standalone, so pick the previous pass
99 if extension == "TRTStandalone":
100 extension = flags_set[-2].Tracking.ActiveConfig.extension
101
102 ClusterSplitProbContainer = "InDetAmbiguityProcessorSplitProb" + extension
103
104 # Only primary pass + back-tracking
105 if len(flags_set) == 1 and flags.Tracking.doBackTracking:
106 ClusterSplitProbContainer = (
107 "InDetTRT_SeededAmbiguityProcessorSplitProb" + extension)
108 return ClusterSplitProbContainer
109
110# TODO find config to validate this
111
112

◆ CombinedTrackingPassFlagSets()

CombinedTrackingPassFlagSets ( flags,
resetCache = False )

Definition at line 11 of file TrackRecoConfig.py.

11def CombinedTrackingPassFlagSets(flags, resetCache=False):
12
13 global _flags_set
14 if _flags_set and not resetCache:
15 return _flags_set
16
17 flags_set = []
18
19 # Primary Pass
20 flags = flags.cloneAndReplace(
21 "Tracking.ActiveConfig",
22 f"Tracking.{flags.Tracking.PrimaryPassConfig.value}Pass",
23 # Keep original flags as some of the subsequent passes use
24 # lambda functions relying on them
25 keepOriginal=True)
26 flags_set += [flags]
27
28 # LRT pass
29 if flags.Tracking.doLargeD0 or flags.Tracking.doLowPtLargeD0:
30
31 if flags.Tracking.doLowPtLargeD0:
32 flagsLRT = flags.cloneAndReplace("Tracking.ActiveConfig",
33 "Tracking.LowPtLargeD0Pass")
34 elif flags.Tracking.doLargeD0:
35 flagsLRT = flags.cloneAndReplace("Tracking.ActiveConfig",
36 "Tracking.R3LargeD0Pass")
37
38 flags_set += [flagsLRT]
39
40 # LowPtRoI pass (low-pt tracks in high pile-up environment)
41 if flags.Tracking.doLowPtRoI:
42 flagsLowPtRoI = flags.cloneAndReplace("Tracking.ActiveConfig",
43 "Tracking.LowPtRoIPass")
44 flags_set += [flagsLowPtRoI]
45
46 # LowPt pass
47 if flags.Tracking.doLowPt:
48 from TrkConfig.TrkConfigFlags import PrimaryPassConfig
49 flagsLowPt = None
50 if flags.Tracking.PrimaryPassConfig is not PrimaryPassConfig.HeavyIon:
51 flagsLowPt = flags.cloneAndReplace("Tracking.ActiveConfig",
52 "Tracking.LowPtPass")
53 flags_set += [flagsLowPt]
54
55 # VeryLowPt pass
56 if flags.Tracking.doVeryLowPt:
57 flagsVeryLowPt = flags.cloneAndReplace("Tracking.ActiveConfig",
58 "Tracking.VeryLowPtPass")
59 flags_set += [flagsVeryLowPt]
60
61 # TRT standalone pass
62 if flags.Tracking.doTRTStandalone:
63 flagsTRTStandalone = flags.cloneAndReplace("Tracking.ActiveConfig",
64 "Tracking.TRTStandalonePass")
65 flags_set += [flagsTRTStandalone]
66
67 # Forward tracklets
68 if flags.Tracking.doForwardTracks:
69 flagsForward = flags.cloneAndReplace("Tracking.ActiveConfig",
70 "Tracking.ForwardPass")
71 flags_set += [flagsForward]
72
73 # Disappearing pixel tracklets
74 if flags.Tracking.doTrackSegmentsDisappearing:
75 flagsDisappearing = flags.cloneAndReplace("Tracking.ActiveConfig",
76 "Tracking.DisappearingPass")
77 flags_set += [flagsDisappearing]
78
79 # Beam gas
80 if flags.Tracking.doBeamGas:
81 flagsBeamGas = flags.cloneAndReplace("Tracking.ActiveConfig",
82 "Tracking.BeamGasPass")
83 flags_set += [flagsBeamGas]
84
85 _flags_set = flags_set # Put into cache
86
87 return flags_set
88

◆ ExtendedPRDInfoCfg()

ExtendedPRDInfoCfg ( flags)

Definition at line 759 of file TrackRecoConfig.py.

759def ExtendedPRDInfoCfg(flags):
760 result = ComponentAccumulator()
761
762 if (flags.Tracking.doTIDE_AmbiTrackMonitoring or
763 flags.Tracking.doPseudoTracking):
764 from InDetConfig.InDetPrepRawDataToxAODConfig import (
765 InDetPixelPrepDataToxAOD_ExtraTruthCfg as PixelPrepDataToxAODCfg,
766 InDetSCT_PrepDataToxAOD_ExtraTruthCfg as SCT_PrepDataToxAODCfg,
767 InDetTRT_PrepDataToxAOD_ExtraTruthCfg as TRT_PrepDataToxAODCfg)
768 else:
769 from InDetConfig.InDetPrepRawDataToxAODConfig import (
770 InDetPixelPrepDataToxAODCfg as PixelPrepDataToxAODCfg,
771 InDetSCT_PrepDataToxAODCfg as SCT_PrepDataToxAODCfg,
772 InDetTRT_PrepDataToxAODCfg as TRT_PrepDataToxAODCfg)
773
774 if flags.Tracking.writeExtendedSi_PRDInfo:
775 result.merge(PixelPrepDataToxAODCfg(
776 flags,
777 ClusterSplitProbabilityName=(
778 ClusterSplitProbabilityContainerName(flags))))
779 result.merge(SCT_PrepDataToxAODCfg(flags))
780
781 if flags.Tracking.writeExtendedTRT_PRDInfo:
782 result.merge(TRT_PrepDataToxAODCfg(flags))
783
784 from DerivationFrameworkInDet.InDetToolsConfig import TSOS_CommonKernelCfg
785 # Set up one algorithm for each output tracking container
786 # Always done for default pass
787 # Done for other passes if pass requests to store track seeds OR track candidates OR requests separate container
788 # Input handling/configuration of algorithm for specific cases is done in TSOS_CommonKernelCfg
789 listOfExtensionsRequesting = [
790 e for e in _extensions_list if (e == '')
791 or (flags.Tracking[f"{e}Pass"].storeTrackSeeds) # Store Si track seeds
792 or (flags.Tracking[f"{e}Pass"].storeSiSPSeededTracks) # Store Si candidate tracks
793 or (flags.Tracking[f"{e}Pass"].storeSeparateContainer) ] # Particular tracking pass requesting separate container from main pass
794 result.merge(TSOS_CommonKernelCfg(
795 flags, listOfExtensions = listOfExtensionsRequesting))
796
797 if flags.Tracking.doTIDE_AmbiTrackMonitoring:
798 from DerivationFrameworkInDet.InDetToolsConfig import (
799 ObserverTSOS_CommonKernelCfg)
800 result.merge(ObserverTSOS_CommonKernelCfg(flags))
801
802 if flags.Tracking.doPseudoTracking:
803 from DerivationFrameworkInDet.InDetToolsConfig import (
804 PseudoTSOS_CommonKernelCfg)
805 result.merge(PseudoTSOS_CommonKernelCfg(flags))
806
807 if flags.Tracking.doStoreTrackSeeds:
808 from DerivationFrameworkInDet.InDetToolsConfig import (
809 SiSPSeedsTSOS_CommonKernelCfg)
810 # Setup one algorithm for each output tracking container
811 listOfExtensionsRequesting = [
812 e for e in _extensions_list if (e == '') or
813 flags.Tracking[f"{e}Pass"].storeTrackSeeds ]
814 result.merge(SiSPSeedsTSOS_CommonKernelCfg(
815 flags, listOfExtensions = listOfExtensionsRequesting))
816
817 if flags.Tracking.doStoreSiSPSeededTracks:
818 from DerivationFrameworkInDet.InDetToolsConfig import (
819 SiSPTSOS_CommonKernelCfg)
820 # Setup one algorithm for each output tracking container
821 listOfExtensionsRequesting = [
822 e for e in _extensions_list if (e == '') or
823 flags.Tracking[f"{e}Pass"].storeSiSPSeededTracks ]
824 result.merge(SiSPTSOS_CommonKernelCfg(
825 flags, listOfExtensions = listOfExtensionsRequesting))
826
827 if flags.Tracking.doTruth:
828 #check if we want to add it for other passes
829 listOfExtensionsRequesting = [
830 e for e in _extensions_list if (e == '') or
831 (flags.Tracking[f"{e}Pass"].storeSiSPSeededTracks and
832 flags.Tracking[f"{e}Pass"].storeSeparateContainer) ]
833 from InDetPhysValMonitoring.InDetPhysValDecorationConfig import (
834 InDetPhysHitDecoratorAlgCfg)
835 for extension in listOfExtensionsRequesting:
836 result.merge(InDetPhysHitDecoratorAlgCfg(
837 flags,
838 name=f"InDetPhysHit{extension}DecoratorAlg",
839 TrackParticleContainerName=f"InDet{extension}TrackParticles"))
840
841 return result
842
843

◆ InDetCosmicsTrackRecoPreProcessingCfg()

InDetCosmicsTrackRecoPreProcessingCfg ( flags)

Definition at line 113 of file TrackRecoConfig.py.

113def InDetCosmicsTrackRecoPreProcessingCfg(flags):
114 result = ComponentAccumulator()
115
116 from InDetConfig.TrackingSiPatternConfig import TrackingSiPatternCfg
117 result.merge(TrackingSiPatternCfg(
118 flags,
119 InputCollections=[],
120 ResolvedTrackCollectionKey="ResolvedTracks",
121 SiSPSeededTrackCollectionKey="SiSPSeededTracks"))
122
123 if flags.Detector.EnableTRT:
124 from InDetConfig.TRTExtensionConfig import NewTrackingTRTExtensionPhaseCfg
125 result.merge(NewTrackingTRTExtensionPhaseCfg(
126 flags,
127 SiTrackCollection="ResolvedTracks",
128 ExtendedTrackCollection="ExtendedTracksPhase",
129 ExtendedTracksMap="ExtendedTracksMapPhase"))
130
131 from InDetConfig.TRTSegmentFindingConfig import TRTSegmentFinding_Phase_Cfg
132 result.merge(TRTSegmentFinding_Phase_Cfg(flags))
133
134 from InDetConfig.InDetTrackPRD_AssociationConfig import (
135 InDetTrackPRD_AssociationCfg)
136 result.merge(InDetTrackPRD_AssociationCfg(
137 flags, name='InDetTRTonly_TrackPRD_AssociationPhase',
138 AssociationMapName='InDetTRTonly_PRDtoTrackMapPhase',
139 TracksName=[]))
140
141 from InDetConfig.TRT_SegmentsToTrackConfig import (
142 TRT_Cosmics_SegmentsToTrackCfg)
143 result.merge(TRT_Cosmics_SegmentsToTrackCfg(
144 flags, name='InDetTRT_Cosmics_SegmentsToTrack_Phase',
145 InputSegmentsCollection="TRTSegments_Phase",
146 OutputTrackCollection="TRT_Tracks_Phase"))
147
148 from InDetConfig.InDetCosmicsEventPhaseConfig import (
149 InDetCosmicsEventPhaseCfg)
150 result.merge(InDetCosmicsEventPhaseCfg(
151 flags,
152 InputTracksNames=["TRT_Tracks_Phase"]))
153
154 from InDetConfig.InDetPrepRawDataFormationConfig import (
155 InDetTRT_Phase_RIO_MakerCfg)
156 result.merge(InDetTRT_Phase_RIO_MakerCfg(flags))
157
158 return result
159
160

◆ InDetPreProcessingCfg()

InDetPreProcessingCfg ( flags)

Definition at line 161 of file TrackRecoConfig.py.

161def InDetPreProcessingCfg(flags):
162 result = ComponentAccumulator()
163
164 # Detector ByteStream pre-processing
165 if flags.Input.Format is Format.BS:
166 if flags.Detector.EnablePixel:
167 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig import (
168 PixelRawDataProviderAlgCfg)
169 result.merge(PixelRawDataProviderAlgCfg(flags))
170
171 if flags.Detector.EnableSCT:
172 from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import (
173 SCTRawDataProviderCfg, SCTEventFlagWriterCfg)
174 result.merge(SCTRawDataProviderCfg(flags))
175 result.merge(SCTEventFlagWriterCfg(flags))
176
177 if flags.Detector.EnableTRT:
178 from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig import (
179 TRTRawDataProviderCfg)
180 result.merge(TRTRawDataProviderCfg(flags))
181
182 if flags.Detector.EnablePixel or flags.Detector.EnableSCT:
183 from InDetConfig.SiliconPreProcessing import InDetRecPreProcessingSiliconCfg
184 result.merge(InDetRecPreProcessingSiliconCfg(flags))
185 if flags.Detector.EnableTRT:
186 from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
187 result.merge(TRTPreProcessingCfg(flags))
188
189 return result
190

◆ InDetStatsCfg()

InDetStatsCfg ( flags,
StatTrackCollections = None,
StatTrackTruthCollections = None )

Definition at line 737 of file TrackRecoConfig.py.

738 StatTrackTruthCollections=None):
739 result = ComponentAccumulator()
740
741 from InDetConfig.InDetRecStatisticsConfig import (
742 InDetRecStatisticsAlgCfg)
743 result.merge(InDetRecStatisticsAlgCfg(
744 flags,
745 TrackCollectionKeys=StatTrackCollections,
746 TrackTruthCollectionKeys=(
747 StatTrackTruthCollections if flags.Tracking.doTruth else [])))
748
749 if flags.Tracking.doTruth:
750 from InDetConfig.InDetTrackClusterAssValidationConfig import (
751 InDetTrackClusterAssValidationCfg)
752 result.merge(InDetTrackClusterAssValidationCfg(
753 flags,
754 TracksLocation=StatTrackCollections))
755
756 return result
757
758

◆ InDetTrackRecoCfg()

InDetTrackRecoCfg ( flags)

Main ID tracking config #####################.

Definition at line 848 of file TrackRecoConfig.py.

848def InDetTrackRecoCfg(flags):
849
850 # Bypass to ITk config
851 if flags.Detector.GeometryITk:
852 from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
853 return ITkTrackRecoCfg(flags)
854 # Bypass to ACTS Inner Detector config
855 from TrkConfig.TrkConfigFlags import TrackingComponent
856 if TrackingComponent.ActsChain in flags.Tracking.recoChain:
857 from InDetConfig.ActsTrackRecoConfig import ActsTrackRecoCfg
858 return ActsTrackRecoCfg(flags)
859 """Configures complete ID tracking """
860 result = ComponentAccumulator()
861 result.merge(InDetPreProcessingCfg(flags))
862
863 ClusterSplitProbContainer = ''
864
865 # ------------------------------------------------------------
866 #
867 # ----------- Subdetector pattern from New Tracking
868 #
869 # ------------------------------------------------------------
870
871 # Pixel track segment finding
872 if flags.Tracking.doTrackSegmentsPixel:
873 acc, ClusterSplitProbContainer = (
874 SiSubDetTrackRecoCfg(flags, detector="Pixel",
875 extensions_list=_extensions_list,
876 ClusterSplitProbContainer=ClusterSplitProbContainer))
877 result.merge(acc)
878
879 # SCT track segment finding
880 if flags.Tracking.doTrackSegmentsSCT:
881 acc, ClusterSplitProbContainer = (
882 SiSubDetTrackRecoCfg(flags, detector="SCT",
883 extensions_list=_extensions_list,
884 ClusterSplitProbContainer=ClusterSplitProbContainer))
885 result.merge(acc)
886
887 # TRT track segment finding
888 if flags.Tracking.doTrackSegmentsTRT:
889 result.merge(TRTTrackRecoCfg(flags, extensions_list=_extensions_list))
890
891 flags_set = CombinedTrackingPassFlagSets(flags, resetCache=True)
892
893 # Pre-processing for TRT phase in cosmics
894 if flags.Beam.Type is BeamType.Cosmics:
895 flagsCosmics = flags_set[0]
896 result.merge(InDetCosmicsTrackRecoPreProcessingCfg(flagsCosmics))
897
898 # ------------------------------------------------------------
899 #
900 # ----------- Main passes for standard reconstruction
901 #
902 # ------------------------------------------------------------
903
904 # Tracks to be ultimately merged in InDetTrackParticle collection
905 InputCombinedInDetTracks = []
906 # Includes also tracks which end in standalone TrackParticle collections
907 InputExtendedInDetTracks = []
908 ClusterSplitProbContainer = ""
909 StatTrackCollections = [] # To be passed to the InDetRecStatistics alg
910 StatTrackTruthCollections = []
911 isPrimaryPass = True
912
913 printPrimaryConfig(flags)
914
915 for current_flags in flags_set:
916 printActiveConfig(current_flags)
917
918 extension = (
919 "" if isPrimaryPass else
920 current_flags.Tracking.ActiveConfig.extension)
921 _extensions_list.append(extension)
922
923 # ---------------------------------------
924 # ---- TRTStandalone pass
925 # ---------------------------------------
926
927 if flags.Tracking.doTRTStandalone and extension == "TRTStandalone":
928 result.merge(TRTStandalonePassRecoCfg(
929 current_flags,
930 InputCombinedInDetTracks=InputCombinedInDetTracks,
931 InputExtendedInDetTracks=InputExtendedInDetTracks,
932 StatTrackCollections=StatTrackCollections,
933 StatTrackTruthCollections=StatTrackTruthCollections))
934
935 continue # Skip rest of config for the TRTStandalone pass
936
937 # ---------------------------------------
938 # ---- All the passes but TRTStandalone
939 # ---------------------------------------
940
941 acc, ClusterSplitProbContainer = TrackRecoPassCfg(
942 current_flags, extension=extension,
943 doTrackingSiPattern=not(isPrimaryPass and
944 flags.Beam.Type is BeamType.Cosmics),
945 InputCombinedInDetTracks=InputCombinedInDetTracks,
946 InputExtendedInDetTracks=InputExtendedInDetTracks,
947 StatTrackCollections=StatTrackCollections,
948 StatTrackTruthCollections=StatTrackTruthCollections,
949 ClusterSplitProbContainer=ClusterSplitProbContainer)
950 result.merge(acc)
951
952 # ---------------------------------------
953 # --- A few passes, only after primary pass
954 # ---------------------------------------
955
956 if isPrimaryPass:
957
958 # ---------------------------------------
959 # --- TRT Segments
960 # ---------------------------------------
961
962 if flags.Tracking.doTRTSegments:
963 from InDetConfig.TRTSegmentFindingConfig import (
964 TRTSegmentFindingCfg)
965 # With RoI-limited Si overlay the removed pileup tracks also mask their
966 # hits for back-tracking
967 RemovedTracks = TrackOverlayRoIRemovedTracksName(current_flags)
968 result.merge(TRTSegmentFindingCfg(
969 current_flags,
970 InputCollections=InputCombinedInDetTracks,
971 ExtraAssociationTracks=[RemovedTracks] if RemovedTracks else None))
972
973 # ---------------------------------------
974 # --- BackTracking
975 # ---------------------------------------
976
977 if flags.Tracking.doBackTracking:
978 acc, ClusterSplitProbContainer = BackTrackingRecoCfg(
979 current_flags,
980 InputCombinedInDetTracks=InputCombinedInDetTracks,
981 InputExtendedInDetTracks=InputExtendedInDetTracks,
982 StatTrackCollections=StatTrackCollections,
983 StatTrackTruthCollections=StatTrackTruthCollections,
984 ClusterSplitProbContainer=ClusterSplitProbContainer)
985 result.merge(acc)
986
987 # ---------------------------------------
988 # --- PseudoTracking
989 # ---------------------------------------
990
991 if (flags.Tracking.doTruth and
992 (flags.Tracking.doPseudoTracking or
993 flags.Tracking.doIdealPseudoTracking)):
994
995 from TrkConfig.TrkTruthTrackAlgsConfig import TruthTrackingCfg
996 result.merge(TruthTrackingCfg(current_flags))
997
998 isPrimaryPass = False
999
1000 # ----------------------------------------------------
1001 # --- Loop over tracking passes is done, final configs
1002 # ----------------------------------------------------
1003
1004 result.merge(
1005 TrackFinalCfg(flags,
1006 InputCombinedInDetTracks=InputCombinedInDetTracks,
1007 StatTrackCollections=StatTrackCollections,
1008 StatTrackTruthCollections=StatTrackTruthCollections))
1009
1010 if (flags.Tracking.doPseudoTracking or
1011 flags.Tracking.doIdealPseudoTracking):
1012 result.merge(PseudoTrackFinalCfg(flags))
1013
1014 if flags.Tracking.doTIDE_AmbiTrackMonitoring:
1015 result.merge(ObserverTrackFinalCfg(flags))
1016
1017 if flags.Tracking.doStoreTrackSeeds:
1018 result.merge(TrackSeedsFinalCfg(flags))
1019
1020 if flags.Tracking.doStoreSiSPSeededTracks:
1021 result.merge(SiSPSeededTracksFinalCfg(flags))
1022
1023 # ---------------------------------------
1024 # --- Primary vertexing
1025 # ---------------------------------------
1026
1027 if flags.Tracking.doVertexFinding:
1028 from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg
1029 result.merge(primaryVertexFindingCfg(flags))
1030
1031 if flags.Tracking.doStats:
1032 result.merge(InDetStatsCfg(
1033 flags_set[0], # Use cuts from primary pass
1034 StatTrackCollections=StatTrackCollections,
1035 StatTrackTruthCollections=StatTrackTruthCollections))
1036
1037 # ---------------------------------------
1038 # --- Extra optional decorations
1039 # ---------------------------------------
1040
1041 if flags.Tracking.doV0Finder:
1042 from InDetConfig.InDetV0FinderConfig import InDetV0FinderCfg
1043 result.merge(InDetV0FinderCfg(flags))
1044
1045 if (flags.Tracking.writeExtendedSi_PRDInfo or
1046 flags.Tracking.writeExtendedTRT_PRDInfo):
1047 result.merge(ExtendedPRDInfoCfg(flags))
1048
1049 # output
1050 from InDetConfig.InDetTrackOutputConfig import InDetTrackRecoOutputCfg
1051 result.merge(InDetTrackRecoOutputCfg(flags, _extensions_list))
1052
1053 # Special configuration for HI
1054 from TrkConfig.TrkConfigFlags import PrimaryPassConfig
1055 if flags.Tracking.PrimaryPassConfig is PrimaryPassConfig.HeavyIon and \
1056 flags.Tracking.doLowPt:
1057 from InDetConfig.InDetHeavyIonSpecialConfig import InDetHeavyIonSpecialCfg
1058 result.merge(InDetHeavyIonSpecialCfg(flags))
1059
1060 result.printConfig(withDetails=False,
1061 summariseProps=False)
1062 return result
1063
1064# Run with python -m InDetConfig.TrackRecoConfig
1065# Works with Data RAW (Format.BS), MC RDO, and MC ESD

◆ ObserverTrackFinalCfg()

ObserverTrackFinalCfg ( flags)

Definition at line 652 of file TrackRecoConfig.py.

652def ObserverTrackFinalCfg(flags):
653 result = ComponentAccumulator()
654
655 TrackContainer = "ObservedTracksCollection"
656 if flags.Tracking.doTruth:
657 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
658 result.merge(InDetTrackTruthCfg(
659 flags,
660 Tracks=TrackContainer,
661 DetailedTruth=TrackContainer + "DetailedTruth",
662 TracksTruth=TrackContainer + "TruthCollection"))
663
664 from xAODTrackingCnv.xAODTrackingCnvConfig import (
665 ObserverTrackParticleCnvAlgCfg)
666 result.merge(ObserverTrackParticleCnvAlgCfg(
667 flags,
668 AssociationMapName = (
669 "PRDtoTrackMapMerge_CombinedInDetTracks")))
670
671 return result
672
673

◆ PseudoTrackFinalCfg()

PseudoTrackFinalCfg ( flags)

Definition at line 627 of file TrackRecoConfig.py.

627def PseudoTrackFinalCfg(flags):
628 result = ComponentAccumulator()
629
630 TrackContainer = "InDetPseudoTracks"
631 if flags.Tracking.doTruth:
632 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
633 result.merge(InDetTrackTruthCfg(
634 flags,
635 Tracks=TrackContainer,
636 DetailedTruth=TrackContainer + "DetailedTruth",
637 TracksTruth=TrackContainer + "TruthCollection"))
638
639 from xAODTrackingCnv.xAODTrackingCnvConfig import TrackParticleCnvAlgCfg
640 result.merge(TrackParticleCnvAlgCfg(
641 flags,
642 name="PseudoTrackParticleCnvAlg",
643 TrackContainerName=TrackContainer,
644 xAODTrackParticlesFromTracksContainerName=(
645 "InDetPseudoTrackParticles"),
646 AssociationMapName=(
647 "PRDtoTrackMapMerge_CombinedInDetTracks")))
648
649 return result
650
651

◆ SiDetectorElementStatusCfg()

SiDetectorElementStatusCfg ( flags,
suffix = "" )

Definition at line 191 of file TrackRecoConfig.py.

191def SiDetectorElementStatusCfg(flags, suffix="") :
192 result = ComponentAccumulator()
193 if flags.Detector.GeometryITk:
194 if flags.Detector.EnableITkPixel:
195 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import (
196 ITkPixelDetectorElementStatusAlgCfg)
197 result.merge(ITkPixelDetectorElementStatusAlgCfg(flags,name=f"ITkPixelDetectorElementStatusAlg{suffix}"))
198 if flags.Detector.EnableITkStrip:
199 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import (
200 ITkStripDetectorElementStatusAlgCfg)
201 result.merge(ITkStripDetectorElementStatusAlgCfg(flags,name=f"ITkStripDetectorElementStatusAlg{suffix}"))
202 return result
203
204
205# Returns CA + ClusterSplitProbContainer

◆ SiSPSeededTracksFinalCfg()

SiSPSeededTracksFinalCfg ( flags)

Definition at line 706 of file TrackRecoConfig.py.

706def SiSPSeededTracksFinalCfg(flags):
707 result = ComponentAccumulator()
708
709 primaryPassExtension = flags.Tracking[f"{flags.Tracking.PrimaryPassConfig.value}Pass"].extension
710
711 # get list of extensions requesting track candidates.
712 # Add always the Primary Pass.
713 listOfExtensionsRequesting = [
714 e for e in _extensions_list
715 if (e=='' or flags.Tracking[f"{e}Pass"].storeSiSPSeededTracks) ]
716
717 for extension in listOfExtensionsRequesting:
718 AssociationMapNameKey="PRDtoTrackMapMerge_CombinedInDetTracks"
719 if extension=='Disappearing':
720 AssociationMapNameKey = "PRDtoTrackMapMerge_DisappearingTracks"
721 elif not (extension == primaryPassExtension):
722 AssociationMapNameKey = f"InDetPRDtoTrackMap{extension}"
723
724 from xAODTrackingCnv.xAODTrackingCnvConfig import (
725 TrackParticleCnvAlgNoPIDCfg)
726 result.merge(TrackParticleCnvAlgNoPIDCfg(
727 flags,
728 name = f"SiSPSeededTracks{extension}CnvAlg",
729 TrackContainerName = f"SiSPSeeded{extension}Tracks",
730 xAODTrackParticlesFromTracksContainerName=(
731 f"SiSPSeededTracks{extension}TrackParticles"),
732 AssociationMapName=AssociationMapNameKey))
733
734 return result
735
736

◆ SiSubDetTrackRecoCfg()

SiSubDetTrackRecoCfg ( flags,
detector = "",
extensions_list = None,
ClusterSplitProbContainer = "" )

Definition at line 206 of file TrackRecoConfig.py.

208 ClusterSplitProbContainer=""):
209 result = ComponentAccumulator()
210
211 if extensions_list is None:
212 extensions_list = []
213
214 flagsDet = flags.cloneAndReplace("Tracking.ActiveConfig",
215 f"Tracking.{detector}Pass")
216 TrackContainer = f"Resolved{detector}Tracks"
217 extensions_list.append(flagsDet.Tracking.ActiveConfig.extension)
218 printActiveConfig(flagsDet)
219
220 from InDetConfig.TrackingSiPatternConfig import TrackingSiPatternCfg
221 result.merge(TrackingSiPatternCfg(
222 flagsDet,
223 InputCollections=[],
224 ResolvedTrackCollectionKey=TrackContainer,
225 SiSPSeededTrackCollectionKey=f"SiSPSeeded{detector}Tracks",
226 ClusterSplitProbContainer=ClusterSplitProbContainer))
227
228 ClusterSplitProbContainer = (
229 "InDetAmbiguityProcessorSplitProb" +
230 flagsDet.Tracking.ActiveConfig.extension)
231
232 if flags.Tracking.doTruth:
233 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
234 result.merge(InDetTrackTruthCfg(
235 flagsDet,
236 Tracks=TrackContainer,
237 DetailedTruth=TrackContainer+"DetailedTruth",
238 TracksTruth=TrackContainer+"TruthCollection"))
239
240 from xAODTrackingCnv.xAODTrackingCnvConfig import (
241 TrackParticleCnvAlgPIDCheckCfg)
242 result.merge(TrackParticleCnvAlgPIDCheckCfg(
243 flagsDet,
244 name=TrackContainer+"CnvAlg",
245 TrackContainerName=TrackContainer,
246 xAODTrackParticlesFromTracksContainerName=(
247 f"InDet{detector}TrackParticles")))
248
249 return result, ClusterSplitProbContainer
250
251

◆ StoreTrackSeparateContainerCfg()

StoreTrackSeparateContainerCfg ( flags,
TrackContainer = "",
ClusterSplitProbContainer = "" )

Definition at line 312 of file TrackRecoConfig.py.

313 ClusterSplitProbContainer=""):
314 result = ComponentAccumulator()
315 # Dummy Merger to fill additional info
316 # for PRD-associated pixel tracklets
317 # Can also run on all separate collections like R3LargeD0
318 # but kept consistent with legacy config
319 AssociationMapName = ""
320 extension = flags.Tracking.ActiveConfig.extension
321
322 # For track overlay: each pass owns its output container; merging of Sig/Bkg is handled earlier if needed
323 # Always run the block for Disappearing extension to ensure containers are produced
324 if extension == "Disappearing":
325 InputTracks = [TrackContainer]
326 # For TO, always use DisappearingTracks as the output container for downstream
327 TrackContainer = extension + "Tracks"
328 MergerOutputTracks = TrackContainer
329
330 from TrkConfig.TrkTrackCollectionMergerConfig import (
331 TrackCollectionMergerAlgCfg)
332 result.merge(TrackCollectionMergerAlgCfg(
333 flags,
334 name = "TrackCollectionMergerAlgCfg" + extension,
335 InputCombinedTracks=InputTracks,
336 OutputCombinedTracks=MergerOutputTracks,
337 AssociationMapName="PRDtoTrackMap" + TrackContainer))
338
339 if flags.Tracking.doTruth:
340 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
341 result.merge(InDetTrackTruthCfg(
342 flags,
343 Tracks=TrackContainer,
344 DetailedTruth=TrackContainer+"DetailedTruth",
345 TracksTruth=TrackContainer+"TruthCollection"))
346
347 # Need specific handling with TrackParticles for R3LargeD0
348 # not to break downstream configs
349 xAODTrackParticlesName = (
350 "InDetLargeD0TrackParticles" if "LargeD0" in extension else
351 "InDet" + extension + "TrackParticles")
352
353 from xAODTrackingCnv.xAODTrackingCnvConfig import (
354 TrackParticleCnvAlgPIDCheckCfg)
355 result.merge(TrackParticleCnvAlgPIDCheckCfg(
356 flags,
357 name = extension + "TrackParticleCnvAlg",
358 TrackContainerName=TrackContainer,
359 xAODTrackParticlesFromTracksContainerName=xAODTrackParticlesName,
360 ClusterSplitProbabilityName=ClusterSplitProbContainer,
361 AssociationMapName=AssociationMapName))
362
363 return result, TrackContainer
364
365

◆ TrackFinalCfg()

TrackFinalCfg ( flags,
InputCombinedInDetTracks = None,
StatTrackCollections = None,
StatTrackTruthCollections = None )

Definition at line 576 of file TrackRecoConfig.py.

579 StatTrackTruthCollections=None):
580 result = ComponentAccumulator()
581 if InputCombinedInDetTracks is None:
582 InputCombinedInDetTracks = []
583 if StatTrackCollections is None:
584 StatTrackCollections = []
585 if StatTrackTruthCollections is None:
586 StatTrackTruthCollections = []
587
588 TrackContainer = "CombinedInDetTracks"
589
590 from TrkConfig.TrkTrackCollectionMergerConfig import (
591 TrackCollectionMergerAlgCfg)
592 result.merge(TrackCollectionMergerAlgCfg(
593 flags,
594 InputCombinedTracks=InputCombinedInDetTracks,
595 OutputCombinedTracks=TrackContainer,
596 AssociationMapName=f"PRDtoTrackMapMerge_{TrackContainer}"))
597
598 if flags.Tracking.doTruth:
599 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
600 result.merge(InDetTrackTruthCfg(
601 flags,
602 Tracks=TrackContainer,
603 DetailedTruth=f"{TrackContainer}DetailedTruth",
604 TracksTruth=f"{TrackContainer}TruthCollection"))
605
606 StatTrackCollections += [TrackContainer]
607 StatTrackTruthCollections += [f"{TrackContainer}TruthCollection"]
608
609 if flags.Tracking.doSlimming:
610 from TrkConfig.TrkTrackSlimmerConfig import TrackSlimmerCfg
611 result.merge(TrackSlimmerCfg(
612 flags,
613 TrackLocation=[TrackContainer]))
614
615 if flags.Tracking.perigeeExpression in [
616 PerigeeExpression.BeamLine, PerigeeExpression.Origin]:
617 from xAODTrackingCnv.xAODTrackingCnvConfig import TrackParticleCnvAlgCfg
618 result.merge(TrackParticleCnvAlgCfg(
619 flags,
620 ClusterSplitProbabilityName=ClusterSplitProbabilityContainerName(
621 flags),
622 AssociationMapName=f"PRDtoTrackMapMerge_{TrackContainer}"))
623
624 return result
625
626

◆ TrackOverlayResolvedTracksName()

TrackOverlayResolvedTracksName ( flags)
Name of the ambiguity-resolved Si track collection of the track overlay primary pass

Definition at line 366 of file TrackRecoConfig.py.

366def TrackOverlayResolvedTracksName(flags):
367 """Name of the ambiguity-resolved Si track collection of the track overlay primary pass"""
368 ResolvedTracks = "ResolvedTracks"
369 # save resolved track name for final merged track collection
370 if flags.Tracking.ActiveConfig.storeSeparateContainer:
371 ResolvedTracks = flags.Overlay.SigPrefix + ResolvedTracks
372 return ResolvedTracks
373
374

◆ TrackOverlayRoIRemovedTracksName()

TrackOverlayRoIRemovedTracksName ( flags)
Pileup tracks re-found by the track overlay primary pass inside the RoIs of the
RoI-limited Si overlay. They are not written out, but later passes treat their clusters
as used, as the corresponding pileup tracks do in MC overlay.

Definition at line 375 of file TrackRecoConfig.py.

375def TrackOverlayRoIRemovedTracksName(flags):
376 """Pileup tracks re-found by the track overlay primary pass inside the RoIs of the
377 RoI-limited Si overlay. They are not written out, but later passes treat their clusters
378 as used, as the corresponding pileup tracks do in MC overlay."""
379 if not (flags.TrackOverlay.isTrackOverlaySeq and flags.TrackOverlay.doRoISiOverlay):
380 return None
381 return TrackOverlayResolvedTracksName(flags) + "RemovedPileup"
382
383
384# Returns CA + ClusterSplitProbContainer

◆ TrackRecoConfigTest()

TrackRecoConfigTest ( flags = None)

Definition at line 1066 of file TrackRecoConfig.py.

1066def TrackRecoConfigTest(flags=None):
1067
1068 store_config = False
1069 if flags is None:
1070 store_config = True
1071 from AthenaConfiguration.AllConfigFlags import initConfigFlags
1072 flags = initConfigFlags()
1073
1074 # Disable calo for this test
1075 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
1076 OnlyTrackingPreInclude(flags)
1077
1078 from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultConditionsTags
1079 flags.Input.Files = defaultTestFiles.RDO_RUN3
1080 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
1081 flags.Exec.MaxEvents = 1
1082
1083 flags.fillFromArgs()
1084 flags.lock()
1085
1086 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
1087 top_acc = MainServicesCfg(flags)
1088
1089 if flags.Input.Format is not Format.BS:
1090 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
1091 top_acc.merge(PoolReadCfg(flags))
1092
1093 if flags.Detector.EnableCalo:
1094 if flags.Input.Format is Format.BS:
1095 from CaloRec.CaloRecoConfig import CaloRecoCfg
1096 top_acc.merge(CaloRecoCfg(flags))
1097 else:
1098 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
1099 top_acc.merge(CaloTopoClusterCfg(flags))
1100
1101 if flags.Input.Format is not Format.BS:
1102 # TODO find better way to determine RDO vs ESD input?
1103 if "PixelRDOs" in flags.Input.Collections:
1104 if "EventInfo" not in flags.Input.Collections:
1105 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
1106 top_acc.merge(EventInfoCnvAlgCfg(flags))
1107
1108 if flags.Input.isMC:
1109 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
1110 top_acc.merge(GEN_AOD2xAODCfg(flags))
1111 else:
1112 if flags.Tracking.doTruth :
1113 from xAODTruthCnv.RedoTruthLinksConfig import RedoTruthLinksAlgCfg
1114 top_acc.merge( RedoTruthLinksAlgCfg(flags) )
1115
1116 top_acc.merge(InDetTrackRecoCfg(flags))
1117
1118 if store_config:
1119 from AthenaCommon.Constants import DEBUG
1120 top_acc.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
1121 top_acc.printConfig(withDetails=True, summariseProps=True)
1122 top_acc.store(open("TrackRecoConfig.pkl", "wb"))
1123
1124 import sys
1125 if "--norun" not in sys.argv:
1126 sc = top_acc.run()
1127 if sc.isFailure():
1128 sys.exit(-1)
1129

◆ TrackRecoPassCfg()

TrackRecoPassCfg ( flags,
extension = "",
doTrackingSiPattern = True,
InputCombinedInDetTracks = None,
InputExtendedInDetTracks = None,
StatTrackCollections = None,
StatTrackTruthCollections = None,
ClusterSplitProbContainer = "" )

Definition at line 424 of file TrackRecoConfig.py.

430 ClusterSplitProbContainer=""):
431 result = ComponentAccumulator()
432 doTrackOverlay = flags.TrackOverlay.isTrackOverlaySeq
433 if InputCombinedInDetTracks is None:
434 InputCombinedInDetTracks = []
435 if InputExtendedInDetTracks is None:
436 InputExtendedInDetTracks = []
437 if StatTrackCollections is None:
438 StatTrackCollections = []
439 if StatTrackTruthCollections is None:
440 StatTrackTruthCollections = []
441
442 ResolvedTracks = "Resolved" + extension + "Tracks"
443 # for track overlay, save resolved track name for final merged track collection
444 # Only add Sig_ prefix for primary pass (where we merge signal+pileup)
445 # Non-primary passes process signal only, so no prefix needed
446 if doTrackOverlay and extension == '':
447 ResolvedTracks = TrackOverlayResolvedTracksName(flags)
448
449 # Tweak to match old config key
450 if "LargeD0" in extension:
451 ResolvedTracks = "ResolvedLargeD0Tracks"
452
453 # ---------------------------------------
454 # --- Si pattern, if not done in the cosmic preprocessing
455 # ---------------------------------------
456
457 if doTrackingSiPattern:
458 SiSPSeededTracks = "SiSPSeeded" + extension + "Tracks"
459
460 from InDetConfig.TrackingSiPatternConfig import TrackingSiPatternCfg
461 result.merge(TrackingSiPatternCfg(
462 flags,
463 InputCollections=InputExtendedInDetTracks,
464 ResolvedTrackCollectionKey=ResolvedTracks,
465 SiSPSeededTrackCollectionKey=SiSPSeededTracks,
466 ClusterSplitProbContainer=ClusterSplitProbContainer))
467 StatTrackCollections += [SiSPSeededTracks, ResolvedTracks]
468 StatTrackTruthCollections += [SiSPSeededTracks+"TruthCollection",
469 ResolvedTracks+"TruthCollection"]
470
471 # ---------------------------------------
472 # --- For track overlay main pass: merge signal Si tracks with pileup tracks BEFORE TRT extension
473 # --- TRT extension needs to see ALL Si tracks (signal + pileup) to properly
474 # --- associate TRT hits from the overlaid TRT_RDOs with both signal and pileup tracks
475 # ---------------------------------------
476
477 TrackContainer = ResolvedTracks
478
479 # Track which Si tracks to use for TRT extension
480 SiTracksForTRTExtension = ResolvedTracks
481
482 # For track overlay: Merge signal + pileup Si tracks BEFORE TRT extension
483 # First add TrackSummary to pileup tracks
484 # Then merge and run TRT extension on combined collection
485 if doTrackOverlay and extension == '':
486 # Add TrackSummary to all pileup tracks
487 from InDetConfig.AddTrackSummaryAlgConfig import AddTrackSummaryAlgCfg
488 result.merge(AddTrackSummaryAlgCfg(
489 flags,
490 name="AddSummaryToPileupTracks",
491 InputTrackCollection="Bkg_CombinedInDetTracks",
492 OutputTrackCollection="Bkg_CombinedInDetTracksWithSummary",
493 ))
494 # Drop re-finds pileup particles as they are already counted in Bkg_CombinedInDetTracks
495 SignalTracksForMerge = ResolvedTracks
496 if flags.TrackOverlay.doRoISiOverlay:
497 from TrackOverlayRec.TrackOverlayRoIConfig import (
498 TrackOverlaySignalTrackFilterAlgCfg)
499 SignalTracksForMerge = ResolvedTracks + "Filtered"
500 RemovedTracks = TrackOverlayRoIRemovedTracksName(flags)
501 result.merge(TrackOverlaySignalTrackFilterAlgCfg(
502 flags,
503 InputTracks=ResolvedTracks,
504 OutputTracks=SignalTracksForMerge,
505 RemovedTracks=RemovedTracks))
506 # later Si passes treat their clusters as used
507 InputExtendedInDetTracks += [RemovedTracks]
508 # Merge signal + pileup Si tracks
509 from TrkConfig.TrkTrackCollectionMergerConfig import TrackCollectionMergerAlgCfg
510 result.merge(TrackCollectionMergerAlgCfg(
511 flags,
512 name="MergeSignalPileupBeforeTRTExtension",
513 InputCombinedTracks=[SignalTracksForMerge, "Bkg_CombinedInDetTracksWithSummary"],
514 OutputCombinedTracks="MergedSiTracks",
515 AssociationMapName="PRDtoTrackMapMergedSiTracks"))
516
517 # Use merged Si tracks as input for TRT extension
518 SiTracksForTRTExtension = "MergedSiTracks"
519 TrackContainer = "MergedSiTracks"
520
521 elif (doTrackOverlay and
522 flags.Tracking.ActiveConfig.storeSeparateContainer):
523 #not doing the merge in non-primary passes, so the pass’s own output container
524 TrackContainer = ResolvedTracks
525
526 # ---------------------------------------
527 # --- TRT extension
528 # ---------------------------------------
529
530 # For track overlay non-primary passes: process signal tracks normally
531 # Primary pass (extension="") merges signal+pileup Si tracks before TRT extension (done above)
532
533 if flags.Tracking.ActiveConfig.useTRTExtension:
534 ExtendedTracks = "Extended" + extension + "Tracks"
535 # Tweaks to match old config key
536 if extension == "Disappearing":
537 ExtendedTracks = "ExtendedTracksDisappearing"
538 elif "LargeD0" in extension:
539 ExtendedTracks = "ExtendedLargeD0Tracks"
540 # In track overlay, LargeD0 pass only processes signal - no Sig_ prefix needed
541 ExtendedTracksMap = "ExtendedTracksMap" + extension
542 from InDetConfig.TRTExtensionConfig import NewTrackingTRTExtensionCfg
543 result.merge(NewTrackingTRTExtensionCfg(
544 flags,
545 SiTrackCollection=SiTracksForTRTExtension,
546 ExtendedTrackCollection=ExtendedTracks,
547 ExtendedTracksMap=ExtendedTracksMap))
548
549 TrackContainer = ExtendedTracks
550 if doTrackOverlay and "LargeD0" in extension:
551 TrackContainer = "ExtendedLargeD0Tracks"
552 StatTrackCollections += [ExtendedTracks]
553 StatTrackTruthCollections += [ExtendedTracks+"TruthCollection"]
554
555 # ---------------------------------------
556 # --- Store separate container if needed
557 # ---------------------------------------
558
559 if flags.Tracking.ActiveConfig.storeSeparateContainer:
560 acc, TrackContainer = StoreTrackSeparateContainerCfg(
561 flags,
562 TrackContainer=TrackContainer,
563 ClusterSplitProbContainer=ClusterSplitProbContainer)
564 result.merge(acc)
565
566 else: # Do not store separate track container
567 ClusterSplitProbContainer = (
568 "InDetAmbiguityProcessorSplitProb" +
569 flags.Tracking.ActiveConfig.extension)
570 InputCombinedInDetTracks += [TrackContainer]
571
572 InputExtendedInDetTracks += [TrackContainer]
573 return result, ClusterSplitProbContainer
574
575

◆ TrackSeedsFinalCfg()

TrackSeedsFinalCfg ( flags)

Definition at line 674 of file TrackRecoConfig.py.

674def TrackSeedsFinalCfg(flags):
675 result = ComponentAccumulator()
676
677 # get list of extensions requesting track seeds.
678 # Add always the Primary Pass.
679 listOfExtensionsRequesting = [
680 e for e in _extensions_list
681 if (e == '' or flags.Tracking[f"{e}Pass"].storeTrackSeeds) ]
682
683 for extension in listOfExtensionsRequesting:
684 TrackContainer = "SiSPSeedSegments"+extension
685
686 if flags.Tracking.doTruth:
687 from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg
688 result.merge(InDetTrackTruthCfg(
689 flags,
690 Tracks=TrackContainer,
691 DetailedTruth=f"{TrackContainer}DetailedTruth",
692 TracksTruth=f"{TrackContainer}TruthCollection"))
693
694 from xAODTrackingCnv.xAODTrackingCnvConfig import (
695 TrackParticleCnvAlgNoPIDCfg)
696 result.merge(TrackParticleCnvAlgNoPIDCfg(
697 flags,
698 name=f"{TrackContainer}CnvAlg",
699 TrackContainerName=TrackContainer,
700 xAODTrackParticlesFromTracksContainerName=(
701 f"{TrackContainer}TrackParticles")))
702
703 return result
704
705

◆ TRTStandalonePassRecoCfg()

TRTStandalonePassRecoCfg ( flags,
InputCombinedInDetTracks = None,
InputExtendedInDetTracks = None,
StatTrackCollections = None,
StatTrackTruthCollections = None )

Definition at line 273 of file TrackRecoConfig.py.

277 StatTrackTruthCollections=None):
278 result = ComponentAccumulator()
279
280 if InputCombinedInDetTracks is None:
281 InputCombinedInDetTracks = []
282 if InputExtendedInDetTracks is None:
283 InputExtendedInDetTracks = []
284 if StatTrackCollections is None:
285 StatTrackCollections = []
286 if StatTrackTruthCollections is None:
287 StatTrackTruthCollections = []
288
289 from InDetConfig.TRTStandaloneConfig import TRTStandaloneCfg
290 result.merge(TRTStandaloneCfg(flags,
291 InputCollections=InputCombinedInDetTracks))
292
293 TRTTrackContainer = "TRTStandaloneTracks"
294 InputCombinedInDetTracks += [TRTTrackContainer]
295 InputExtendedInDetTracks += [TRTTrackContainer]
296 StatTrackCollections += [TRTTrackContainer]
297 StatTrackTruthCollections += [TRTTrackContainer+"TruthCollection"]
298
299 if flags.Tracking.doTrackSegmentsTRT:
300 from xAODTrackingCnv.xAODTrackingCnvConfig import (
301 TrackParticleCnvAlgNoPIDCfg)
302 result.merge(TrackParticleCnvAlgNoPIDCfg(
303 flags, TRTTrackContainer+"CnvAlg",
304 TrackContainerName=TRTTrackContainer,
305 xAODTrackParticlesFromTracksContainerName=(
306 "InDetTRTTrackParticles")))
307
308 return result
309
310
311# Return CA + TrackContainer

◆ TRTTrackRecoCfg()

TRTTrackRecoCfg ( flags,
extensions_list = None )

Definition at line 252 of file TrackRecoConfig.py.

252def TRTTrackRecoCfg(flags, extensions_list=None):
253 result = ComponentAccumulator()
254
255 if extensions_list is None:
256 extensions_list = []
257
258 flagsTRT = flags.cloneAndReplace("Tracking.ActiveConfig",
259 "Tracking.TRTPass")
260 extensions_list.append(flagsTRT.Tracking.ActiveConfig.extension)
261 printActiveConfig(flagsTRT)
262
263 from InDetConfig.TRTSegmentFindingConfig import (
264 TRTSegmentFinding_TrackSegments_Cfg)
265 result.merge(TRTSegmentFinding_TrackSegments_Cfg(flagsTRT))
266
267 from InDetConfig.TRTStandaloneConfig import TRT_TrackSegment_Cfg
268 result.merge(TRT_TrackSegment_Cfg(flagsTRT))
269
270 return result
271
272

Variable Documentation

◆ _extensions_list

list python.TrackRecoConfig._extensions_list = []
protected

Definition at line 9 of file TrackRecoConfig.py.

◆ _flags_set

list python.TrackRecoConfig._flags_set = []
protected

Definition at line 8 of file TrackRecoConfig.py.