3 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    4 from AthenaConfiguration.Enums 
import BeamType, Format
 
    5 from TrkConfig.TrackingPassFlags 
import printActiveConfig, printPrimaryConfig
 
   19     flags = flags.cloneAndReplace(
 
   20         "Tracking.ActiveConfig",
 
   21         f
"Tracking.{flags.Tracking.PrimaryPassConfig.value}Pass",
 
   28     if flags.Tracking.doLargeD0 
or flags.Tracking.doLowPtLargeD0:
 
   30         if flags.Tracking.doLowPtLargeD0:
 
   31             flagsLRT = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   32                                              "Tracking.LowPtLargeD0Pass")
 
   33         elif flags.Tracking.doLargeD0:
 
   34             flagsLRT = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   35                                              "Tracking.R3LargeD0Pass")
 
   37         flags_set += [flagsLRT]
 
   40     if flags.Tracking.doLowPtRoI:
 
   41         flagsLowPtRoI = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   42                                               "Tracking.LowPtRoIPass")
 
   43         flags_set += [flagsLowPtRoI]
 
   46     if flags.Tracking.doLowPt:
 
   47         flagsLowPt = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   49         flags_set += [flagsLowPt]
 
   52     if flags.Tracking.doVeryLowPt:
 
   53         flagsVeryLowPt = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   54                                                "Tracking.VeryLowPtPass")
 
   55         flags_set += [flagsVeryLowPt]
 
   58     if flags.Tracking.doTRTStandalone:
 
   59         flagsTRTStandalone = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   60                                                    "Tracking.TRTStandalonePass")
 
   61         flags_set += [flagsTRTStandalone]
 
   64     if flags.Tracking.doForwardTracks:
 
   65         flagsForward = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   66                                              "Tracking.ForwardPass")
 
   67         flags_set += [flagsForward]
 
   70     if flags.Tracking.doTrackSegmentsDisappearing:
 
   71         flagsDisappearing = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   72                                                   "Tracking.DisappearingPass")
 
   73         flags_set += [flagsDisappearing]
 
   76     if flags.Tracking.doBeamGas:
 
   77         flagsBeamGas = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
   78                                              "Tracking.BeamGasPass")
 
   79         flags_set += [flagsBeamGas]
 
   81     _flags_set = flags_set  
 
   87     if flags.Detector.GeometryITk:
 
   88         from InDetConfig.ITkTrackRecoConfig 
import (
 
   89             ITkClusterSplitProbabilityContainerName)
 
   93     extension = flags_set[-1].Tracking.ActiveConfig.extension
 
   96     if extension == 
"TRTStandalone":
 
   97         extension = flags_set[-2].Tracking.ActiveConfig.extension
 
   99     ClusterSplitProbContainer = 
"InDetAmbiguityProcessorSplitProb" + extension
 
  102     if len(flags_set) == 1 
and flags.Tracking.doBackTracking:
 
  103         ClusterSplitProbContainer = (
 
  104             "InDetTRT_SeededAmbiguityProcessorSplitProb" + extension)
 
  105     return ClusterSplitProbContainer
 
  113     from InDetConfig.TrackingSiPatternConfig 
import TrackingSiPatternCfg
 
  117         ResolvedTrackCollectionKey=
"ResolvedTracks",
 
  118         SiSPSeededTrackCollectionKey=
"SiSPSeededTracks"))
 
  120     if flags.Detector.EnableTRT:
 
  121         from InDetConfig.TRTExtensionConfig 
import NewTrackingTRTExtensionPhaseCfg
 
  124             SiTrackCollection=
"ResolvedTracks",
 
  125             ExtendedTrackCollection=
"ExtendedTracksPhase",
 
  126             ExtendedTracksMap=
"ExtendedTracksMapPhase"))
 
  128         from InDetConfig.TRTSegmentFindingConfig 
import TRTSegmentFinding_Phase_Cfg
 
  131         from InDetConfig.InDetTrackPRD_AssociationConfig 
import (
 
  132             InDetTrackPRD_AssociationCfg)
 
  134             flags, name=
'InDetTRTonly_TrackPRD_AssociationPhase',
 
  135             AssociationMapName=
'InDetTRTonly_PRDtoTrackMapPhase',
 
  138         from InDetConfig.TRT_SegmentsToTrackConfig 
import (
 
  139             TRT_Cosmics_SegmentsToTrackCfg)
 
  141             flags, name=
'InDetTRT_Cosmics_SegmentsToTrack_Phase',
 
  142             InputSegmentsCollection=
"TRTSegments_Phase",
 
  143             OutputTrackCollection=
"TRT_Tracks_Phase"))
 
  145         from InDetConfig.InDetCosmicsEventPhaseConfig 
import (
 
  146             InDetCosmicsEventPhaseCfg)
 
  149             InputTracksNames=[
"TRT_Tracks_Phase"]))
 
  151         from InDetConfig.InDetPrepRawDataFormationConfig 
import (
 
  152             InDetTRT_Phase_RIO_MakerCfg)
 
  162     if flags.Input.Format 
is Format.BS:
 
  163         if flags.Detector.EnablePixel:
 
  164             from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig 
import (
 
  165                 PixelRawDataProviderAlgCfg)
 
  168         if flags.Detector.EnableSCT:
 
  169             from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig 
import (
 
  170                 SCTRawDataProviderCfg, SCTEventFlagWriterCfg)
 
  174         if flags.Detector.EnableTRT:
 
  175             from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig 
import (
 
  176                 TRTRawDataProviderCfg)
 
  179     if flags.Detector.EnablePixel 
or flags.Detector.EnableSCT:
 
  180         from InDetConfig.SiliconPreProcessing 
import InDetRecPreProcessingSiliconCfg
 
  182     if flags.Detector.EnableTRT:
 
  183         from InDetConfig.TRTPreProcessing 
import TRTPreProcessingCfg
 
  190     if flags.Detector.GeometryITk:
 
  191         if flags.Detector.EnableITkPixel:
 
  192             from PixelConditionsAlgorithms.ITkPixelConditionsConfig 
import (
 
  193                 ITkPixelDetectorElementStatusAlgCfg)
 
  195         if flags.Detector.EnableITkStrip:
 
  196             from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig 
import  (
 
  197                 ITkStripDetectorElementStatusAlgCfg)
 
  204                          extensions_list=None,
 
  205                          ClusterSplitProbContainer=""):
 
  208     if extensions_list 
is None:
 
  211     flagsDet = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
  212                                      f
"Tracking.{detector}Pass")
 
  213     TrackContainer = f
"Resolved{detector}Tracks" 
  214     extensions_list.append(flagsDet.Tracking.ActiveConfig.extension)
 
  217     from InDetConfig.TrackingSiPatternConfig 
import TrackingSiPatternCfg
 
  221         ResolvedTrackCollectionKey=TrackContainer,
 
  222         SiSPSeededTrackCollectionKey=f
"SiSPSeeded{detector}Tracks",
 
  223         ClusterSplitProbContainer=ClusterSplitProbContainer))
 
  225     ClusterSplitProbContainer = (
 
  226         "InDetAmbiguityProcessorSplitProb" +
 
  227         flagsDet.Tracking.ActiveConfig.extension)
 
  229     if flags.Tracking.doTruth:
 
  230         from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  233             Tracks=TrackContainer,
 
  234             DetailedTruth=TrackContainer+
"DetailedTruth",
 
  235             TracksTruth=TrackContainer+
"TruthCollection"))
 
  237     from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  238         TrackParticleCnvAlgPIDCheckCfg)
 
  241         name=TrackContainer+
"CnvAlg",
 
  242         TrackContainerName=TrackContainer,
 
  243         xAODTrackParticlesFromTracksContainerName=(
 
  244             f
"InDet{detector}TrackParticles")))
 
  246     return result, ClusterSplitProbContainer
 
  252     if extensions_list 
is None:
 
  255     flagsTRT = flags.cloneAndReplace(
"Tracking.ActiveConfig",
 
  257     extensions_list.append(flagsTRT.Tracking.ActiveConfig.extension)
 
  260     from InDetConfig.TRTSegmentFindingConfig 
import (
 
  261         TRTSegmentFinding_TrackSegments_Cfg)
 
  264     from InDetConfig.TRTStandaloneConfig 
import TRT_TrackSegment_Cfg
 
  271                              InputCombinedInDetTracks=None,
 
  272                              InputExtendedInDetTracks=None,
 
  273                              StatTrackCollections=None,
 
  274                              StatTrackTruthCollections=None):
 
  277     if InputCombinedInDetTracks 
is None:
 
  278         InputCombinedInDetTracks = []
 
  279     if InputExtendedInDetTracks 
is None:
 
  280         InputExtendedInDetTracks = []
 
  281     if StatTrackCollections 
is None:
 
  282         StatTrackCollections = []
 
  283     if StatTrackTruthCollections 
is None:
 
  284         StatTrackTruthCollections = []
 
  286     from InDetConfig.TRTStandaloneConfig 
import TRTStandaloneCfg
 
  288                                   InputCollections=InputCombinedInDetTracks))
 
  290     TRTTrackContainer = 
"TRTStandaloneTracks" 
  291     InputCombinedInDetTracks += [TRTTrackContainer]
 
  292     InputExtendedInDetTracks += [TRTTrackContainer]
 
  293     StatTrackCollections += [TRTTrackContainer]
 
  294     StatTrackTruthCollections += [TRTTrackContainer+
"TruthCollection"]
 
  296     if flags.Tracking.doTrackSegmentsTRT:
 
  297         from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  298             TrackParticleCnvAlgNoPIDCfg)
 
  300             flags, TRTTrackContainer+
"CnvAlg",
 
  301             TrackContainerName=TRTTrackContainer,
 
  302             xAODTrackParticlesFromTracksContainerName=(
 
  303                 "InDetTRTTrackParticles")))
 
  310                                    ClusterSplitProbContainer=""):
 
  312     if hasattr(flags.TrackOverlay, 
"ActiveConfig"):
 
  313        doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, 
"doTrackOverlay", 
None)
 
  315        doTrackOverlay = flags.Overlay.doTrackOverlay
 
  322     AssociationMapName = 
"" 
  323     extension = flags.Tracking.ActiveConfig.extension
 
  325     if extension == 
"Disappearing" or doTrackOverlay:
 
  326         if extension == 
"Disappearing":
 
  327             InputTracks = [TrackContainer]
 
  329                 InputTracks += [flags.Overlay.BkgPrefix +
 
  330                                 extension + 
"Tracks"]
 
  331             TrackContainer = extension+
"Tracks" 
  332             AssociationMapName = 
"PRDtoTrackMapMerge_" + TrackContainer
 
  333             MergerOutputTracks = TrackContainer
 
  336             InputTracks = [flags.Overlay.SigPrefix+TrackContainer,
 
  337                            flags.Overlay.BkgPrefix+TrackContainer]
 
  338             AssociationMapName = (
"PRDtoTrackMapMerge_Resolved" +
 
  339                                   extension + 
"Tracks")
 
  340             MergerOutputTracks = TrackContainer
 
  342         from TrkConfig.TrkTrackCollectionMergerConfig 
import (
 
  343             TrackCollectionMergerAlgCfg)
 
  346             name = 
"TrackCollectionMergerAlgCfg"+extension,
 
  347             InputCombinedTracks=InputTracks,
 
  348             OutputCombinedTracks=MergerOutputTracks,
 
  349             AssociationMapName=AssociationMapName))
 
  351     if flags.Tracking.doTruth:
 
  352         from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  355             Tracks=TrackContainer,
 
  356             DetailedTruth=TrackContainer+
"DetailedTruth",
 
  357             TracksTruth=TrackContainer+
"TruthCollection"))
 
  361     xAODTrackParticlesName = (
 
  362         "InDetLargeD0TrackParticles" if "LargeD0" in extension 
else 
  363         "InDet" + extension + 
"TrackParticles")
 
  365     from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  366         TrackParticleCnvAlgPIDCheckCfg)
 
  369         name = extension + 
"TrackParticleCnvAlg",
 
  370         TrackContainerName=TrackContainer,
 
  371         xAODTrackParticlesFromTracksContainerName=xAODTrackParticlesName,
 
  372         ClusterSplitProbabilityName=ClusterSplitProbContainer,
 
  373         AssociationMapName=AssociationMapName))
 
  375     return result, TrackContainer
 
  380                         InputCombinedInDetTracks=None,
 
  381                         InputExtendedInDetTracks=None,
 
  382                         StatTrackCollections=None,
 
  383                         StatTrackTruthCollections=None,
 
  384                         ClusterSplitProbContainer=""):
 
  387     if InputCombinedInDetTracks 
is None:
 
  388         InputCombinedInDetTracks = []
 
  389     if InputExtendedInDetTracks 
is None:
 
  390         InputExtendedInDetTracks = []
 
  391     if StatTrackCollections 
is None:
 
  392         StatTrackCollections = []
 
  393     if StatTrackTruthCollections 
is None:
 
  394         StatTrackTruthCollections = []
 
  396     from InDetConfig.BackTrackingConfig 
import BackTrackingCfg
 
  399         InputCollections=InputCombinedInDetTracks,
 
  400         ClusterSplitProbContainer=ClusterSplitProbContainer))
 
  402     ClusterSplitProbContainer = (
 
  403         "InDetTRT_SeededAmbiguityProcessorSplitProb" +
 
  404         flags.Tracking.ActiveConfig.extension)
 
  405     TRTSeededTracks = 
"TRTSeededTracks" 
  406     ResolvedTRTSeededTracks = 
"ResolvedTRTSeededTracks" 
  407     InputCombinedInDetTracks += [ResolvedTRTSeededTracks]
 
  408     InputExtendedInDetTracks += [ResolvedTRTSeededTracks]
 
  409     StatTrackCollections += [TRTSeededTracks,
 
  410                              ResolvedTRTSeededTracks]
 
  411     StatTrackTruthCollections += [TRTSeededTracks+
"TruthCollection",
 
  412                                   ResolvedTRTSeededTracks+
"TruthCollection"]
 
  414     return result, ClusterSplitProbContainer
 
  419                      doTrackingSiPattern=True,
 
  420                      InputCombinedInDetTracks=None,
 
  421                      InputExtendedInDetTracks=None,
 
  422                      StatTrackCollections=None,
 
  423                      StatTrackTruthCollections=None,
 
  424                      ClusterSplitProbContainer=""):
 
  426     if hasattr(flags.TrackOverlay, 
"ActiveConfig"):
 
  427        doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, 
"doTrackOverlay", 
None)
 
  429        doTrackOverlay = flags.Overlay.doTrackOverlay
 
  430     if InputCombinedInDetTracks 
is None:
 
  431         InputCombinedInDetTracks = []
 
  432     if InputExtendedInDetTracks 
is None:
 
  433         InputExtendedInDetTracks = []
 
  434     if StatTrackCollections 
is None:
 
  435         StatTrackCollections = []
 
  436     if StatTrackTruthCollections 
is None:
 
  437         StatTrackTruthCollections = []
 
  439     ResolvedTracks = 
"Resolved" + extension + 
"Tracks" 
  443     if (doTrackOverlay 
and 
  444         flags.Tracking.ActiveConfig.storeSeparateContainer 
and 
  445         not flags.Tracking.ActiveConfig.useTRTExtension):
 
  446         ResolvedTracks = flags.Overlay.SigPrefix + ResolvedTracks
 
  449     if "LargeD0" in extension:
 
  450         ResolvedTracks = 
"ResolvedLargeD0Tracks" 
  456     if doTrackingSiPattern:
 
  457         SiSPSeededTracks = 
"SiSPSeeded" + extension + 
"Tracks" 
  458         from InDetConfig.TrackingSiPatternConfig 
import TrackingSiPatternCfg
 
  461             InputCollections=InputExtendedInDetTracks,
 
  462             ResolvedTrackCollectionKey=ResolvedTracks,
 
  463             SiSPSeededTrackCollectionKey=SiSPSeededTracks,
 
  464             ClusterSplitProbContainer=ClusterSplitProbContainer))
 
  465         StatTrackCollections += [SiSPSeededTracks, ResolvedTracks]
 
  466         StatTrackTruthCollections += [SiSPSeededTracks+
"TruthCollection",
 
  467                                       ResolvedTracks+
"TruthCollection"]
 
  469     TrackContainer = ResolvedTracks
 
  470     if (doTrackOverlay 
and 
  471         flags.Tracking.ActiveConfig.storeSeparateContainer):
 
  472         TrackContainer = 
"Resolved" + extension + 
"Tracks" 
  478     if flags.Tracking.ActiveConfig.useTRTExtension:
 
  479         ExtendedTracks = 
"Extended" + extension + 
"Tracks" 
  481         if extension == 
"Disappearing":
 
  482             ExtendedTracks = 
"ExtendedTracksDisappearing" 
  483         elif "LargeD0" in extension:
 
  484             ExtendedTracks = 
"ExtendedLargeD0Tracks" 
  486                 ExtendedTracks = flags.Overlay.SigPrefix+
"ExtendedLargeD0Tracks" 
  487         ExtendedTracksMap = 
"ExtendedTracksMap" + extension
 
  489         from InDetConfig.TRTExtensionConfig 
import NewTrackingTRTExtensionCfg
 
  492             SiTrackCollection=ResolvedTracks,
 
  493             ExtendedTrackCollection=ExtendedTracks,
 
  494             ExtendedTracksMap=ExtendedTracksMap))
 
  496         TrackContainer = ExtendedTracks
 
  497         if doTrackOverlay 
and "LargeD0" in extension:
 
  498             TrackContainer = 
"ExtendedLargeD0Tracks" 
  499         StatTrackCollections += [ExtendedTracks]
 
  500         StatTrackTruthCollections += [ExtendedTracks+
"TruthCollection"]
 
  506     if flags.Tracking.ActiveConfig.storeSeparateContainer:
 
  509             TrackContainer=TrackContainer,
 
  510             ClusterSplitProbContainer=ClusterSplitProbContainer)
 
  514         ClusterSplitProbContainer = (
 
  515             "InDetAmbiguityProcessorSplitProb" +
 
  516             flags.Tracking.ActiveConfig.extension)
 
  517         InputCombinedInDetTracks += [TrackContainer]
 
  519     InputExtendedInDetTracks += [TrackContainer]
 
  521     return result, ClusterSplitProbContainer
 
  525                   InputCombinedInDetTracks=None,
 
  526                   StatTrackCollections=None,
 
  527                   StatTrackTruthCollections=None):
 
  529     if hasattr(flags.TrackOverlay, 
"ActiveConfig"):
 
  530        doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, 
"doTrackOverlay", 
None)
 
  532        doTrackOverlay = flags.Overlay.doTrackOverlay
 
  534     if InputCombinedInDetTracks 
is None:
 
  535         InputCombinedInDetTracks = []
 
  536     if StatTrackCollections 
is None:
 
  537         StatTrackCollections = []
 
  538     if StatTrackTruthCollections 
is None:
 
  539         StatTrackTruthCollections = []
 
  542         InputCombinedInDetTracks += [flags.Overlay.BkgPrefix +
 
  543                                      "CombinedInDetTracks"]
 
  545     TrackContainer = 
"CombinedInDetTracks" 
  547     from TrkConfig.TrkTrackCollectionMergerConfig 
import (
 
  548         TrackCollectionMergerAlgCfg)
 
  551         InputCombinedTracks=InputCombinedInDetTracks,
 
  552         OutputCombinedTracks=TrackContainer,
 
  553         AssociationMapName=f
"PRDtoTrackMapMerge_{TrackContainer}"))
 
  555     if flags.Tracking.doTruth:
 
  556         from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  559             Tracks=TrackContainer,
 
  560             DetailedTruth=f
"{TrackContainer}DetailedTruth",
 
  561             TracksTruth=f
"{TrackContainer}TruthCollection"))
 
  563     StatTrackCollections += [TrackContainer]
 
  564     StatTrackTruthCollections += [f
"{TrackContainer}TruthCollection"]
 
  566     if flags.Tracking.doSlimming:
 
  567         from TrkConfig.TrkTrackSlimmerConfig 
import TrackSlimmerCfg
 
  570             TrackLocation=[TrackContainer]))
 
  572     if flags.Tracking.perigeeExpression == 
"BeamLine":
 
  573         from xAODTrackingCnv.xAODTrackingCnvConfig 
import TrackParticleCnvAlgCfg
 
  578             AssociationMapName=f
"PRDtoTrackMapMerge_{TrackContainer}"))
 
  586     TrackContainer = 
"InDetPseudoTracks" 
  587     if flags.Tracking.doTruth:
 
  588         from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  591             Tracks=TrackContainer,
 
  592             DetailedTruth=TrackContainer + 
"DetailedTruth",
 
  593             TracksTruth=TrackContainer + 
"TruthCollection"))
 
  595     from xAODTrackingCnv.xAODTrackingCnvConfig 
import TrackParticleCnvAlgCfg
 
  598         name=
"PseudoTrackParticleCnvAlg",
 
  599         TrackContainerName=TrackContainer,
 
  600         xAODTrackParticlesFromTracksContainerName=(
 
  601             "InDetPseudoTrackParticles"),
 
  603             "PRDtoTrackMapMerge_CombinedInDetTracks")))
 
  611     TrackContainer = 
"ObservedTracksCollection" 
  612     if flags.Tracking.doTruth:
 
  613         from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  616             Tracks=TrackContainer,
 
  617             DetailedTruth=TrackContainer + 
"DetailedTruth",
 
  618             TracksTruth=TrackContainer + 
"TruthCollection"))
 
  620     from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  621         ObserverTrackParticleCnvAlgCfg)
 
  624         AssociationMapName = (
 
  625             "PRDtoTrackMapMerge_CombinedInDetTracks")))
 
  635     listOfExtensionsRequesting = [
 
  636         e 
for e 
in _extensions_list
 
  637         if (e == 
'' or flags.Tracking[f
"{e}Pass"].storeTrackSeeds) ]
 
  639     for extension 
in listOfExtensionsRequesting:
 
  640         TrackContainer = 
"SiSPSeedSegments"+extension
 
  642         if flags.Tracking.doTruth:
 
  643             from InDetConfig.TrackTruthConfig 
import InDetTrackTruthCfg
 
  646                 Tracks=TrackContainer,
 
  647                 DetailedTruth=f
"{TrackContainer}DetailedTruth",
 
  648                 TracksTruth=f
"{TrackContainer}TruthCollection"))
 
  650         from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  651             TrackParticleCnvAlgNoPIDCfg)
 
  654             name=f
"{TrackContainer}CnvAlg",
 
  655             TrackContainerName=TrackContainer,
 
  656             xAODTrackParticlesFromTracksContainerName=(
 
  657                 f
"{TrackContainer}TrackParticles")))
 
  665     primaryPassExtension = flags.Tracking[f
"{flags.Tracking.PrimaryPassConfig.value}Pass"].extension
 
  669     listOfExtensionsRequesting = [
 
  670         e 
for e 
in _extensions_list
 
  671         if (e==
'' or flags.Tracking[f
"{e}Pass"].storeSiSPSeededTracks) ]
 
  673     for extension 
in listOfExtensionsRequesting:
 
  674         AssociationMapNameKey=
"PRDtoTrackMapMerge_CombinedInDetTracks" 
  675         if extension==
'Disappearing':
 
  676             AssociationMapNameKey = 
"PRDtoTrackMapMerge_DisappearingTracks" 
  677         elif not (extension == primaryPassExtension):
 
  678             AssociationMapNameKey = f
"InDetPRDtoTrackMap{extension}" 
  680         from xAODTrackingCnv.xAODTrackingCnvConfig 
import (
 
  681             TrackParticleCnvAlgNoPIDCfg)
 
  684             name = f
"SiSPSeededTracks{extension}CnvAlg",
 
  685             TrackContainerName = f
"SiSPSeeded{extension}Tracks",
 
  686             xAODTrackParticlesFromTracksContainerName=(
 
  687                 f
"SiSPSeededTracks{extension}TrackParticles"),
 
  688             AssociationMapName=AssociationMapNameKey))
 
  694                   StatTrackTruthCollections=None):
 
  697     from InDetConfig.InDetRecStatisticsConfig 
import (
 
  698         InDetRecStatisticsAlgCfg)
 
  701         TrackCollectionKeys=StatTrackCollections,
 
  702         TrackTruthCollectionKeys=(
 
  703             StatTrackTruthCollections 
if flags.Tracking.doTruth 
else [])))
 
  705     if flags.Tracking.doTruth:
 
  706         from InDetConfig.InDetTrackClusterAssValidationConfig 
import (
 
  707             InDetTrackClusterAssValidationCfg)
 
  710             TracksLocation=StatTrackCollections))
 
  718     if (flags.Tracking.doTIDE_AmbiTrackMonitoring 
or 
  719         flags.Tracking.doPseudoTracking):
 
  720         from InDetConfig.InDetPrepRawDataToxAODConfig 
import (
 
  721             InDetPixelPrepDataToxAOD_ExtraTruthCfg 
as PixelPrepDataToxAODCfg,
 
  722             InDetSCT_PrepDataToxAOD_ExtraTruthCfg 
as SCT_PrepDataToxAODCfg,
 
  723             InDetTRT_PrepDataToxAOD_ExtraTruthCfg 
as TRT_PrepDataToxAODCfg)
 
  725         from InDetConfig.InDetPrepRawDataToxAODConfig 
import (
 
  726             InDetPixelPrepDataToxAODCfg 
as PixelPrepDataToxAODCfg,
 
  727             InDetSCT_PrepDataToxAODCfg 
as SCT_PrepDataToxAODCfg,
 
  728             InDetTRT_PrepDataToxAODCfg 
as TRT_PrepDataToxAODCfg)
 
  730     if flags.Tracking.writeExtendedSi_PRDInfo:
 
  731         result.merge(PixelPrepDataToxAODCfg(
 
  733             ClusterSplitProbabilityName=(
 
  735         result.merge(SCT_PrepDataToxAODCfg(flags))
 
  737     if flags.Tracking.writeExtendedTRT_PRDInfo:
 
  738         result.merge(TRT_PrepDataToxAODCfg(flags))
 
  740     from DerivationFrameworkInDet.InDetToolsConfig 
import TSOS_CommonKernelCfg
 
  745     listOfExtensionsRequesting = [
 
  746         e 
for e 
in _extensions_list 
if (e == 
'')
 
  747         or (flags.Tracking[f
"{e}Pass"].storeTrackSeeds) 
 
  748         or (flags.Tracking[f
"{e}Pass"].storeSiSPSeededTracks) 
 
  749         or (flags.Tracking[f
"{e}Pass"].storeSeparateContainer) ] 
 
  751         flags, listOfExtensions = listOfExtensionsRequesting))
 
  753     if flags.Tracking.doTIDE_AmbiTrackMonitoring:
 
  754         from DerivationFrameworkInDet.InDetToolsConfig 
import (
 
  755             ObserverTSOS_CommonKernelCfg)
 
  758     if flags.Tracking.doPseudoTracking:
 
  759         from DerivationFrameworkInDet.InDetToolsConfig 
import (
 
  760             PseudoTSOS_CommonKernelCfg)
 
  763     if flags.Tracking.doStoreTrackSeeds:
 
  764         from DerivationFrameworkInDet.InDetToolsConfig 
import (
 
  765             SiSPSeedsTSOS_CommonKernelCfg)
 
  767         listOfExtensionsRequesting = [
 
  768             e 
for e 
in _extensions_list 
if (e == 
'') 
or 
  769             flags.Tracking[f
"{e}Pass"].storeTrackSeeds ]
 
  771             flags, listOfExtensions = listOfExtensionsRequesting))
 
  773     if flags.Tracking.doStoreSiSPSeededTracks:
 
  774         from DerivationFrameworkInDet.InDetToolsConfig 
import (
 
  775             SiSPTSOS_CommonKernelCfg)
 
  777         listOfExtensionsRequesting = [
 
  778             e 
for e 
in _extensions_list 
if (e == 
'') 
or 
  779             flags.Tracking[f
"{e}Pass"].storeSiSPSeededTracks ]
 
  781             flags, listOfExtensions = listOfExtensionsRequesting))
 
  785         listOfExtensionsRequesting = [
 
  786             e 
for e 
in _extensions_list 
if (e == 
'') 
or 
  787             (flags.Tracking[f
"{e}Pass"].storeSiSPSeededTracks 
and 
  788              flags.Tracking[f
"{e}Pass"].storeSeparateContainer) ]
 
  789         from InDetPhysValMonitoring.InDetPhysValDecorationConfig 
import (
 
  790             InDetPhysHitDecoratorAlgCfg)
 
  791         for extension 
in listOfExtensionsRequesting:
 
  794                 name=f
"InDetPhysHit{extension}DecoratorAlg",
 
  795                 TrackParticleContainerName=f
"InDet{extension}TrackParticles"))
 
  807     if flags.Detector.GeometryITk:
 
  808         from InDetConfig.ITkTrackRecoConfig 
import ITkTrackRecoCfg
 
  811     """Configures complete ID tracking """ 
  815     ClusterSplitProbContainer = 
'' 
  824     if flags.Tracking.doTrackSegmentsPixel:
 
  825         acc, ClusterSplitProbContainer = (
 
  827                                  extensions_list=_extensions_list,
 
  828                                  ClusterSplitProbContainer=ClusterSplitProbContainer))
 
  832     if flags.Tracking.doTrackSegmentsSCT:
 
  833         acc, ClusterSplitProbContainer = (
 
  835                                  extensions_list=_extensions_list,
 
  836                                  ClusterSplitProbContainer=ClusterSplitProbContainer))
 
  840     if flags.Tracking.doTrackSegmentsTRT:
 
  846     if flags.Beam.Type 
is BeamType.Cosmics:
 
  847         flagsCosmics = flags_set[0]
 
  857     InputCombinedInDetTracks = []
 
  859     InputExtendedInDetTracks = []
 
  860     ClusterSplitProbContainer = 
"" 
  861     StatTrackCollections = []  
 
  862     StatTrackTruthCollections = []
 
  867     for current_flags 
in flags_set:
 
  871             "" if isPrimaryPass 
else 
  872             current_flags.Tracking.ActiveConfig.extension)
 
  873         _extensions_list.append(extension)
 
  879         if flags.Tracking.doTRTStandalone 
and extension == 
"TRTStandalone":
 
  882                 InputCombinedInDetTracks=InputCombinedInDetTracks,
 
  883                 InputExtendedInDetTracks=InputExtendedInDetTracks,
 
  884                 StatTrackCollections=StatTrackCollections,
 
  885                 StatTrackTruthCollections=StatTrackTruthCollections))
 
  894             current_flags, extension=extension,
 
  895             doTrackingSiPattern=not(isPrimaryPass 
and 
  896                                     flags.Beam.Type 
is BeamType.Cosmics),
 
  897             InputCombinedInDetTracks=InputCombinedInDetTracks,
 
  898             InputExtendedInDetTracks=InputExtendedInDetTracks,
 
  899             StatTrackCollections=StatTrackCollections,
 
  900             StatTrackTruthCollections=StatTrackTruthCollections,
 
  901             ClusterSplitProbContainer=ClusterSplitProbContainer)
 
  914             if flags.Tracking.doTRTSegments:
 
  915                 from InDetConfig.TRTSegmentFindingConfig 
import (
 
  916                     TRTSegmentFindingCfg)
 
  919                     InputCollections=InputCombinedInDetTracks))
 
  925             if flags.Tracking.doBackTracking:
 
  928                     InputCombinedInDetTracks=InputCombinedInDetTracks,
 
  929                     InputExtendedInDetTracks=InputExtendedInDetTracks,
 
  930                     StatTrackCollections=StatTrackCollections,
 
  931                     StatTrackTruthCollections=StatTrackTruthCollections,
 
  932                     ClusterSplitProbContainer=ClusterSplitProbContainer)
 
  939             if (flags.Tracking.doTruth 
and 
  940                 (flags.Tracking.doPseudoTracking 
or 
  941                  flags.Tracking.doIdealPseudoTracking)):
 
  943                 from TrkConfig.TrkTruthTrackAlgsConfig 
import TruthTrackingCfg
 
  946             isPrimaryPass = 
False 
  954                       InputCombinedInDetTracks=InputCombinedInDetTracks,
 
  955                       StatTrackCollections=StatTrackCollections,
 
  956                       StatTrackTruthCollections=StatTrackTruthCollections))
 
  958     if (flags.Tracking.doPseudoTracking 
or 
  959         flags.Tracking.doIdealPseudoTracking):
 
  962     if flags.Tracking.doTIDE_AmbiTrackMonitoring:
 
  965     if flags.Tracking.doStoreTrackSeeds:
 
  968     if flags.Tracking.doStoreSiSPSeededTracks:
 
  975     if flags.Tracking.doVertexFinding:
 
  976         from InDetConfig.InDetPriVxFinderConfig 
import primaryVertexFindingCfg
 
  979     if flags.Tracking.doStats:
 
  982             StatTrackCollections=StatTrackCollections,
 
  983             StatTrackTruthCollections=StatTrackTruthCollections))
 
  989     if flags.Tracking.doV0Finder:
 
  990         from InDetConfig.InDetV0FinderConfig 
import InDetV0FinderCfg
 
  993     if (flags.Tracking.writeExtendedSi_PRDInfo 
or 
  994         flags.Tracking.writeExtendedTRT_PRDInfo):
 
  998     from InDetConfig.InDetTrackOutputConfig 
import InDetTrackRecoOutputCfg
 
 1007     store_config = 
False 
 1010         from AthenaConfiguration.AllConfigFlags 
import initConfigFlags
 
 1014         from InDetConfig.ConfigurationHelpers 
import OnlyTrackingPreInclude
 
 1017         from AthenaConfiguration.TestDefaults 
import defaultTestFiles, defaultConditionsTags
 
 1018         flags.Input.Files = defaultTestFiles.RDO_RUN3
 
 1019         flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
 
 1020         flags.Exec.MaxEvents = 1
 
 1024     from AthenaConfiguration.MainServicesConfig 
import MainServicesCfg
 
 1027     if flags.Input.Format 
is not Format.BS:
 
 1028         from AthenaPoolCnvSvc.PoolReadConfig 
import PoolReadCfg
 
 1031     if flags.Detector.EnableCalo:
 
 1032         if flags.Input.Format 
is Format.BS:
 
 1033             from CaloRec.CaloRecoConfig 
import CaloRecoCfg
 
 1036             from CaloRec.CaloTopoClusterConfig 
import CaloTopoClusterCfg
 
 1039     if flags.Input.Format 
is not Format.BS:
 
 1041         if "PixelRDOs" in flags.Input.Collections:
 
 1042             if "EventInfo" not in flags.Input.Collections:
 
 1043                 from xAODEventInfoCnv.xAODEventInfoCnvConfig 
import EventInfoCnvAlgCfg
 
 1046             if flags.Input.isMC:
 
 1047                 from xAODTruthCnv.xAODTruthCnvConfig 
import GEN_AOD2xAODCfg
 
 1050             if flags.Tracking.doTruth :
 
 1051                 from xAODTruthCnv.RedoTruthLinksConfig 
import RedoTruthLinksAlgCfg
 
 1058         top_acc.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
 
 1059         top_acc.printConfig(withDetails=
True, summariseProps=
True)
 
 1060         top_acc.store(
open(
"TrackRecoConfig.pkl", 
"wb"))
 
 1063     if "--norun" not in sys.argv:
 
 1068 if __name__ == 
"__main__":