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