ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimMultiRegionConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5
7 acc = ComponentAccumulator()
9
10 if flags.Trigger.FPGATrackSim.Hough.secondStage:
12 acc.merge(FPGATrackSimRegionMergeringAlgCfg(flags))
13
14 return acc
15
16
18 acc = ComponentAccumulator()
19 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
20 for region in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
21 flags1st = flags.clone()
22 flags1st.Trigger.FPGATrackSim.region=region
23 flags1st = flags1st.cloneAndReplace("Trigger.FPGATrackSim.ActiveConfig", "Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag,keepOriginal=True)
24 flags1st.lock()
25
26 from FPGATrackSimConfTools.FPGATrackSimAnalysisConfig import FPGATrackSimLogicalHitsProcessAlgCfg
27 acc.merge(FPGATrackSimLogicalHitsProcessAlgCfg(flags1st,
28 **{'FPGATrackSimHitKey_1st': f"FPGAHits_1st_reg{region}",
29 'FPGATrackSimHitKey_2nd': f"FPGAHits_2nd_reg{region}",
30 'FPGATrackSimHitFiltered1stKey': f"FPGAHitsFiltered_1st_reg{region}",
31 'FPGATrackSimRoad1stKey': f"FPGARoads_1st_reg{region}",
32 'FPGATrackSimTrack1stKey': f"FPGATracks_1st_reg{region}",
33 'FPGATrackSimSpacePoints1stKey': f"FPGASpacePoints_1st_reg{region}"}))
34 return acc
35
37 acc = ComponentAccumulator()
38 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
39 for region in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
40 flags2nd = flags.clone()
41 flags2nd.Trigger.FPGATrackSim.region=region
42 flags2nd = flags2nd.cloneAndReplace("Trigger.FPGATrackSim.ActiveConfig", "Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag,keepOriginal=True)
43 flags2nd.lock()
44
45 from FPGATrackSimConfTools import FPGATrackSimSecondStageConfig
46 acc.merge(FPGATrackSimSecondStageConfig.FPGATrackSimSecondStageAlgCfg(flags2nd,
47 **{'FPGATrackSimHitKey': f"FPGAHits_2nd_reg{region}",
48 'FPGATrackSimTrack1stKey': f"FPGATracks_1st_reg{region}",
49 'FPGATrackSimRoad2ndKey': f"FPGARoads_2nd_reg{region}",
50 'FPGATrackSimTrack2ndKey': f"FPGATracks_2nd_reg{region}"}))
51 return acc
52
54 acc = ComponentAccumulator()
55 from FPGATrackSimConfTools.FPGATrackSimLayerStudyConfig import FPGATrackSimLayerStudyCfg
56 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
57 for region in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
58 flagsLS = flags.clone()
59 flagsLS.Trigger.FPGATrackSim.region = region
60 flagsLS.lock()
61 acc.merge(FPGATrackSimLayerStudyCfg(flagsLS))
62
63 return acc
64
65
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 # not flags.Trigger.FPGATrackSim.tracking (maybe we'll never actually use roads at this point)
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
FPGATrackSimRegionMergeringAlgCfg(flagsIn, name="FPGATrackSimRegionMergingAlg", **kwargs)