Main ID tracking config #####################.
848def InDetTrackRecoCfg(flags):
849
850
851 if flags.Detector.GeometryITk:
852 from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
853 return ITkTrackRecoCfg(flags)
854
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
868
869
870
871
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
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
888 if flags.Tracking.doTrackSegmentsTRT:
889 result.merge(TRTTrackRecoCfg(flags, extensions_list=_extensions_list))
890
891 flags_set = CombinedTrackingPassFlagSets(flags, resetCache=True)
892
893
894 if flags.Beam.Type is BeamType.Cosmics:
895 flagsCosmics = flags_set[0]
896 result.merge(InDetCosmicsTrackRecoPreProcessingCfg(flagsCosmics))
897
898
899
900
901
902
903
904
905 InputCombinedInDetTracks = []
906
907 InputExtendedInDetTracks = []
908 ClusterSplitProbContainer = ""
909 StatTrackCollections = []
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
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
936
937
938
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
954
955
956 if isPrimaryPass:
957
958
959
960
961
962 if flags.Tracking.doTRTSegments:
963 from InDetConfig.TRTSegmentFindingConfig import (
964 TRTSegmentFindingCfg)
965
966
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
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
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
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
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],
1034 StatTrackCollections=StatTrackCollections,
1035 StatTrackTruthCollections=StatTrackTruthCollections))
1036
1037
1038
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
1050 from InDetConfig.InDetTrackOutputConfig import InDetTrackRecoOutputCfg
1051 result.merge(InDetTrackRecoOutputCfg(flags, _extensions_list))
1052
1053
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
1065