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