804def InDetTrackRecoCfg(flags):
805
806
807 if flags.Detector.GeometryITk:
808 from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
809 return ITkTrackRecoCfg(flags)
810
811 """Configures complete ID tracking """
812 result = ComponentAccumulator()
813 result.merge(InDetPreProcessingCfg(flags))
814
815 ClusterSplitProbContainer = ''
816
817
818
819
820
821
822
823
824 if flags.Tracking.doTrackSegmentsPixel:
825 acc, ClusterSplitProbContainer = (
826 SiSubDetTrackRecoCfg(flags, detector="Pixel",
827 extensions_list=_extensions_list,
828 ClusterSplitProbContainer=ClusterSplitProbContainer))
829 result.merge(acc)
830
831
832 if flags.Tracking.doTrackSegmentsSCT:
833 acc, ClusterSplitProbContainer = (
834 SiSubDetTrackRecoCfg(flags, detector="SCT",
835 extensions_list=_extensions_list,
836 ClusterSplitProbContainer=ClusterSplitProbContainer))
837 result.merge(acc)
838
839
840 if flags.Tracking.doTrackSegmentsTRT:
841 result.merge(TRTTrackRecoCfg(flags, extensions_list=_extensions_list))
842
843 flags_set = CombinedTrackingPassFlagSets(flags)
844
845
846 if flags.Beam.Type is BeamType.Cosmics:
847 flagsCosmics = flags_set[0]
848 result.merge(InDetCosmicsTrackRecoPreProcessingCfg(flagsCosmics))
849
850
851
852
853
854
855
856
857 InputCombinedInDetTracks = []
858
859 InputExtendedInDetTracks = []
860 ClusterSplitProbContainer = ""
861 StatTrackCollections = []
862 StatTrackTruthCollections = []
863 isPrimaryPass = True
864
865 printPrimaryConfig(flags)
866
867 for current_flags in flags_set:
868 printActiveConfig(current_flags)
869
870 extension = (
871 "" if isPrimaryPass else
872 current_flags.Tracking.ActiveConfig.extension)
873 _extensions_list.append(extension)
874
875
876
877
878
879 if flags.Tracking.doTRTStandalone and extension == "TRTStandalone":
880 result.merge(TRTStandalonePassRecoCfg(
881 current_flags,
882 InputCombinedInDetTracks=InputCombinedInDetTracks,
883 InputExtendedInDetTracks=InputExtendedInDetTracks,
884 StatTrackCollections=StatTrackCollections,
885 StatTrackTruthCollections=StatTrackTruthCollections))
886
887 continue
888
889
890
891
892
893 acc, ClusterSplitProbContainer = TrackRecoPassCfg(
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)
902 result.merge(acc)
903
904
905
906
907
908 if isPrimaryPass:
909
910
911
912
913
914 if flags.Tracking.doTRTSegments:
915 from InDetConfig.TRTSegmentFindingConfig import (
916 TRTSegmentFindingCfg)
917 result.merge(TRTSegmentFindingCfg(
918 current_flags,
919 InputCollections=InputCombinedInDetTracks))
920
921
922
923
924
925 if flags.Tracking.doBackTracking:
926 acc, ClusterSplitProbContainer = BackTrackingRecoCfg(
927 current_flags,
928 InputCombinedInDetTracks=InputCombinedInDetTracks,
929 InputExtendedInDetTracks=InputExtendedInDetTracks,
930 StatTrackCollections=StatTrackCollections,
931 StatTrackTruthCollections=StatTrackTruthCollections,
932 ClusterSplitProbContainer=ClusterSplitProbContainer)
933 result.merge(acc)
934
935
936
937
938
939 if (flags.Tracking.doTruth and
940 (flags.Tracking.doPseudoTracking or
941 flags.Tracking.doIdealPseudoTracking)):
942
943 from TrkConfig.TrkTruthTrackAlgsConfig import TruthTrackingCfg
944 result.merge(TruthTrackingCfg(current_flags))
945
946 isPrimaryPass = False
947
948
949
950
951
952 result.merge(
953 TrackFinalCfg(flags,
954 InputCombinedInDetTracks=InputCombinedInDetTracks,
955 StatTrackCollections=StatTrackCollections,
956 StatTrackTruthCollections=StatTrackTruthCollections))
957
958 if (flags.Tracking.doPseudoTracking or
959 flags.Tracking.doIdealPseudoTracking):
960 result.merge(PseudoTrackFinalCfg(flags))
961
962 if flags.Tracking.doTIDE_AmbiTrackMonitoring:
963 result.merge(ObserverTrackFinalCfg(flags))
964
965 if flags.Tracking.doStoreTrackSeeds:
966 result.merge(TrackSeedsFinalCfg(flags))
967
968 if flags.Tracking.doStoreSiSPSeededTracks:
969 result.merge(SiSPSeededTracksFinalCfg(flags))
970
971
972
973
974
975 if flags.Tracking.doVertexFinding:
976 from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg
977 result.merge(primaryVertexFindingCfg(flags))
978
979 if flags.Tracking.doStats:
980 result.merge(InDetStatsCfg(
981 flags_set[0],
982 StatTrackCollections=StatTrackCollections,
983 StatTrackTruthCollections=StatTrackTruthCollections))
984
985
986
987
988
989 if flags.Tracking.doV0Finder:
990 from InDetConfig.InDetV0FinderConfig import InDetV0FinderCfg
991 result.merge(InDetV0FinderCfg(flags))
992
993 if (flags.Tracking.writeExtendedSi_PRDInfo or
994 flags.Tracking.writeExtendedTRT_PRDInfo):
995 result.merge(ExtendedPRDInfoCfg(flags))
996
997
998 from InDetConfig.InDetTrackOutputConfig import InDetTrackRecoOutputCfg
999 result.merge(InDetTrackRecoOutputCfg(flags, _extensions_list))
1000
1001 return result
1002
1003
1004