68def FPGATrackSimRegionMergeringAlgCfg(flagsIn,name="FPGATrackSimRegionMergingAlg",**kwargs):
69 acc = ComponentAccumulator()
70 flags = flagsIn.cloneAndReplace("Trigger.FPGATrackSim.ActiveConfig", "Trigger.FPGATrackSim." + flagsIn.Trigger.FPGATrackSim.algoTag,keepOriginal=False)
71 stage="2nd" if flags.Trigger.FPGATrackSim.ActiveConfig.secondStage else "1st"
72 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
73 regionList = convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList)
74 TrackCollections = [f"FPGATracks_{stage}_reg{region}" for region in regionList]
75 RoadCollections = [f"FPGARoads_{stage}_reg{region}" for region in regionList]
76 HitsInRoadsCollections = [f"FPGAHitsInRoads_{stage}_reg{region}" for region in regionList]
77
78 kwargs.setdefault('FPGATrackSimTrackCollections',TrackCollections)
79 kwargs.setdefault('FPGATrackSimRoadCollections',RoadCollections)
80 kwargs.setdefault('FPGATrackSimHitsInRoadsCollections',HitsInRoadsCollections)
81
82 regionMerging = CompFactory.FPGATrackSim.FPGATrackSimRegionMergingAlg(name,**kwargs)
83 regionMerging.doOverlapRemoval = flags.Trigger.FPGATrackSim.doOverlapRemovalBetweenRegions
84
85
86 regionMerging.useRoads = False
87
88 if stage == "2nd":
89 from FPGATrackSimConfTools.FPGATrackSimSecondStageConfig import FPGATrackSimOverlapRemovalToolCfg
90 regionMerging.OverlapRemovalTool = acc.getPrimaryAndMerge(FPGATrackSimOverlapRemovalToolCfg(flags,name="OLRMerge"))
91 elif stage == "1st":
92 from FPGATrackSimConfTools.FPGATrackSimAnalysisConfig import FPGATrackSimOverlapRemovalToolCfg
93 regionMerging.OverlapRemovalTool = acc.getPrimaryAndMerge(FPGATrackSimOverlapRemovalToolCfg(flags,name="OLRMerge"))
94
95
96 regionMerging.OverlapRemovalTool.MinChi2 = 1e15
97
98 acc.addEventAlgo(regionMerging)
99 return acc