3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from AthenaCommon.Logging
import AthenaLogger
6 from PathResolver
import PathResolver
8 log = AthenaLogger(__name__)
11 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
12 return flags.Trigger.FPGATrackSim.baseName
13 elif (flags.Trigger.FPGATrackSim.region == 0):
14 return 'eta0103phi0305'
15 elif (flags.Trigger.FPGATrackSim.region == 1):
16 return 'eta0709phi0305'
17 elif (flags.Trigger.FPGATrackSim.region == 2):
18 return 'eta1214phi0305'
19 elif (flags.Trigger.FPGATrackSim.region == 3):
20 return 'eta2022phi0305'
21 elif (flags.Trigger.FPGATrackSim.region == 4):
22 return 'eta3234phi0305'
23 elif (flags.Trigger.FPGATrackSim.region == 5):
24 return 'eta0103phi1113'
25 elif (flags.Trigger.FPGATrackSim.region == 6):
26 return 'eta0103phi1921'
27 elif (flags.Trigger.FPGATrackSim.region == 7):
28 return 'eta0103phi3436'
36 assert(fields.startswith(
'towers'))
42 eventSelector = CompFactory.FPGATrackSimEventSelectionSvc()
43 eventSelector.regions =
"HTT/TrigHTTMaps/V1/map_file/slices_v01_Jan21.txt"
44 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
45 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
46 eventSelector.withPU =
False
47 result.addService(eventSelector, create=
True, primary=
True)
53 mappingSvc = CompFactory.FPGATrackSimMappingSvc()
54 mappingSvc.mappingType =
"FILE"
55 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
56 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".subrmap"
57 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/pmap"
58 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
59 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
61 mappingSvc.layerOverride = []
62 result.addService(mappingSvc, create=
True, primary=
True)
67 FPGATrackSimBankSvc = CompFactory.FPGATrackSimBankSvc()
68 pathBankSvc = flags.Trigger.FPGATrackSim.bankDir
if flags.Trigger.FPGATrackSim.bankDir !=
'' else f
'/eos/atlas/atlascerngroupdisk/det-htt/HTTsim/{flags.GeoModel.AtlasVersion}/21.9.16/'+
getBaseName(flags)+
'/SectorBanks/'
69 FPGATrackSimBankSvc.constantsNoGuess_1st = [
70 f
'{pathBankSvc}corrgen_raw_8L_skipPlane0.gcon',
71 f
'{pathBankSvc}corrgen_raw_8L_skipPlane1.gcon',
72 f
'{pathBankSvc}corrgen_raw_8L_skipPlane2.gcon',
73 f
'{pathBankSvc}corrgen_raw_8L_skipPlane3.gcon',
74 f
'{pathBankSvc}corrgen_raw_8L_skipPlane4.gcon',
75 f
'{pathBankSvc}corrgen_raw_8L_skipPlane5.gcon',
76 f
'{pathBankSvc}corrgen_raw_8L_skipPlane6.gcon',
77 f
'{pathBankSvc}corrgen_raw_8L_skipPlane7.gcon']
78 FPGATrackSimBankSvc.constantsNoGuess_2nd = [
79 f
'{pathBankSvc}corrgen_raw_13L_skipPlane0.gcon',
80 f
'{pathBankSvc}corrgen_raw_13L_skipPlane1.gcon',
81 f
'{pathBankSvc}corrgen_raw_13L_skipPlane2.gcon',
82 f
'{pathBankSvc}corrgen_raw_13L_skipPlane3.gcon',
83 f
'{pathBankSvc}corrgen_raw_13L_skipPlane4.gcon',
84 f
'{pathBankSvc}corrgen_raw_13L_skipPlane5.gcon',
85 f
'{pathBankSvc}corrgen_raw_13L_skipPlane6.gcon',
86 f
'{pathBankSvc}corrgen_raw_13L_skipPlane7.gcon']
87 FPGATrackSimBankSvc.constants_1st = f
'{pathBankSvc}corrgen_raw_9L_reg{flags.Trigger.FPGATrackSim.region}_checkGood1.gcon'
88 FPGATrackSimBankSvc.constants_2nd = f
'{pathBankSvc}corrgen_raw_13L_reg{flags.Trigger.FPGATrackSim.region}_checkGood1.gcon'
89 FPGATrackSimBankSvc.sectorBank_1st = f
'{pathBankSvc}sectorsHW_raw_9L_reg{flags.Trigger.FPGATrackSim.region}_checkGood1.patt'
90 FPGATrackSimBankSvc.sectorBank_2nd = f
'{pathBankSvc}sectorsHW_raw_13L_reg{flags.Trigger.FPGATrackSim.region}_checkGood1.patt'
91 FPGATrackSimBankSvc.sectorSlices = f
'{pathBankSvc}slices_9L_reg{flags.Trigger.FPGATrackSim.region}.root'
94 import FPGATrackSimConfTools.FPGATrackSimTagConfig
as FPGATrackSimTagConfig
95 bank_tag = FPGATrackSimTagConfig.getTags(stage=
'bank')[
'bank']
96 FPGATrackSimBankSvc.sectorQPtBins = bank_tag[
'sectorQPtBins']
97 FPGATrackSimBankSvc.qptAbsBinning = bank_tag[
'qptAbsBinning']
99 result.addService(FPGATrackSimBankSvc, create=
True, primary=
True)
105 RF = CompFactory.FPGATrackSimRoadUnionTool()
107 xBins = flags.Trigger.FPGATrackSim.ActiveConfig.xBins
108 xBufferBins = flags.Trigger.FPGATrackSim.ActiveConfig.xBufferBins
109 yBins = flags.Trigger.FPGATrackSim.ActiveConfig.yBins
110 yBufferBins = flags.Trigger.FPGATrackSim.ActiveConfig.yBufferBins
111 xMin = flags.Trigger.FPGATrackSim.ActiveConfig.phiMin
112 xMax = flags.Trigger.FPGATrackSim.ActiveConfig.phiMax
113 xBuffer = (xMax - xMin) / xBins * xBufferBins
114 xMin = xMin - xBuffer
115 xMax = xMax + xBuffer
116 yMin = flags.Trigger.FPGATrackSim.ActiveConfig.qptMin
117 yMax = flags.Trigger.FPGATrackSim.ActiveConfig.qptMax
118 yBuffer = (yMax - yMin) / yBins * yBufferBins
125 HoughTransform = CompFactory.FPGATrackSimHoughTransformTool(
"HoughTransform_0_" +
str(number))
128 HoughTransform.FPGATrackSimMappingSvc = FPGATrackSimMapping
129 HoughTransform.combine_layers = flags.Trigger.FPGATrackSim.ActiveConfig.combineLayers
130 HoughTransform.convSize_x = flags.Trigger.FPGATrackSim.ActiveConfig.convSizeX
131 HoughTransform.convSize_y = flags.Trigger.FPGATrackSim.ActiveConfig.convSizeY
132 HoughTransform.convolution = flags.Trigger.FPGATrackSim.ActiveConfig.convolution
133 HoughTransform.d0_max = 0
134 HoughTransform.d0_min = 0
135 HoughTransform.fieldCorrection = flags.Trigger.FPGATrackSim.ActiveConfig.fieldCorrection
136 HoughTransform.hitExtend_x = flags.Trigger.FPGATrackSim.ActiveConfig.hitExtendX
137 HoughTransform.localMaxWindowSize = flags.Trigger.FPGATrackSim.ActiveConfig.localMaxWindowSize
138 HoughTransform.nBins_x = xBins + 2 * xBufferBins
139 HoughTransform.nBins_y = yBins + 2 * yBufferBins
140 HoughTransform.phi_max = xMax
141 HoughTransform.phi_min = xMin
142 HoughTransform.qpT_max = yMax
143 HoughTransform.qpT_min = yMin
144 HoughTransform.scale = flags.Trigger.FPGATrackSim.ActiveConfig.scale
145 HoughTransform.subRegion = number
146 HoughTransform.threshold = flags.Trigger.FPGATrackSim.ActiveConfig.threshold
147 HoughTransform.traceHits =
True
148 HoughTransform.IdealGeoRoads = flags.Trigger.FPGATrackSim.ActiveConfig.IdealGeoRoads
149 HoughTransform.useSpacePoints = flags.Trigger.FPGATrackSim.spacePoints
151 tools.append(HoughTransform)
154 result.addPublicTool(RF, primary=
True)
160 RF = CompFactory.FPGATrackSimRoadUnionTool()
161 splitpt=flags.Trigger.FPGATrackSim.Hough1D.splitpt
163 for ptstep
in range(splitpt):
164 qpt_min = flags.Trigger.FPGATrackSim.Hough1D.qptMin
165 qpt_max = flags.Trigger.FPGATrackSim.Hough1D.qptMax
166 lowpt = qpt_min + (qpt_max-qpt_min)/splitpt*ptstep
167 highpt = qpt_min + (qpt_max-qpt_min)/splitpt*(ptstep+1)
169 for iSlice
in range(nSlice):
170 tool = CompFactory.FPGATrackSimHough1DShiftTool(
"Hough1DShift" +
str(iSlice)+((
"_pt{}".
format(ptstep))
if splitpt>1
else ""))
171 tool.subRegion = iSlice
if nSlice > 1
else -1
172 tool.phiMin = flags.Trigger.FPGATrackSim.Hough1D.phiMin
173 tool.phiMax = flags.Trigger.FPGATrackSim.Hough1D.phiMax
176 tool.nBins = flags.Trigger.FPGATrackSim.Hough1D.xBins
178 tool.variableExtend =
True
179 tool.drawHitMasks =
False
180 tool.phiRangeCut = flags.Trigger.FPGATrackSim.Hough1D.phiRangeCut
184 tool.threshold = flags.Trigger.FPGATrackSim.Hough1D.threshold[0]
185 tool.hitExtend = flags.Trigger.FPGATrackSim.Hough1D.hitExtendX
188 tool.FPGATrackSimMappingSvc = FPGATrackSimMapping
189 tool.IdealGeoRoads = flags.Trigger.FPGATrackSim.ActiveConfig.IdealGeoRoads
190 tool.useSpacePoints = flags.Trigger.FPGATrackSim.spacePoints
195 result.addPublicTool(RF, primary=
True)
204 FPGATrackSimRawLogic = CompFactory.FPGATrackSimRawToLogicalHitsTool()
205 FPGATrackSimRawLogic.SaveOptional = 2
206 if (flags.Trigger.FPGATrackSim.ActiveConfig.sampleType ==
'skipTruth'):
207 FPGATrackSimRawLogic.SaveOptional = 1
208 FPGATrackSimRawLogic.TowersToMap = [0]
211 result.addPublicTool(FPGATrackSimRawLogic, primary=
True)
216 DataFlowTool = CompFactory.FPGATrackSimDataFlowTool()
219 DataFlowTool.THistSvc = CompFactory.THistSvc()
220 result.setPrivateTools(DataFlowTool)
225 SpacePointTool = CompFactory.FPGATrackSimSpacePointsTool()
226 SpacePointTool.Filtering = flags.Trigger.FPGATrackSim.ActiveConfig.spacePointFiltering
227 SpacePointTool.FilteringClosePoints =
False
228 SpacePointTool.PhiWindow = 0.004
229 SpacePointTool.Duplication =
True
230 result.addPublicTool(SpacePointTool, primary=
True)
236 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
237 HitFilteringTool.barrelStubDphiCut = 3.0
238 HitFilteringTool.doRandomRemoval =
False
239 HitFilteringTool.doStubs =
False
240 HitFilteringTool.endcapStubDphiCut = 1.5
241 HitFilteringTool.pixelClusRmFrac = 0
242 HitFilteringTool.pixelHitRmFrac = 0
243 HitFilteringTool.stripClusRmFrac = 0
244 HitFilteringTool.stripHitRmFrac = 0
245 HitFilteringTool.useNstrips =
False
246 result.addPublicTool(HitFilteringTool, primary=
True)
252 HoughRootOutputTool = CompFactory.FPGATrackSimHoughRootOutputTool()
255 HoughRootOutputTool.THistSvc = CompFactory.THistSvc()
256 result.setPrivateTools(HoughRootOutputTool)
261 LRTRoadFinder =CompFactory.FPGATrackSimHoughTransform_d0phi0_Tool()
264 LRTRoadFinder.combine_layers = flags.Trigger.FPGATrackSim.ActiveConfig.lrtStraighttrackCombineLayers
265 LRTRoadFinder.convolution = flags.Trigger.FPGATrackSim.ActiveConfig.lrtStraighttrackConvolution
266 LRTRoadFinder.hitExtend_x = flags.Trigger.FPGATrackSim.ActiveConfig.lrtStraighttrackHitExtendX
267 LRTRoadFinder.scale = flags.Trigger.FPGATrackSim.ActiveConfig.scale
268 LRTRoadFinder.threshold = flags.Trigger.FPGATrackSim.ActiveConfig.lrtStraighttrackThreshold
269 result.setPrivateTools(LRTRoadFinder)
274 NNTrackTool = CompFactory.FPGATrackSimNNTrackTool()
275 NNTrackTool.THistSvc = CompFactory.THistSvc()
277 result.setPrivateTools(NNTrackTool)
282 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutput")
283 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
284 FPGATrackSimWriteOutput.RWstatus =
"RECREATE"
285 FPGATrackSimWriteOutput.RunSecondStage = flags.Trigger.FPGATrackSim.ActiveConfig.secondStage
286 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
291 TF_1st = CompFactory.FPGATrackSimTrackFitterTool(
"FPGATrackSimTrackFitterTool_1st")
292 TF_1st.GuessHits = flags.Trigger.FPGATrackSim.ActiveConfig.guessHits
293 TF_1st.IdealCoordFitType = flags.Trigger.FPGATrackSim.ActiveConfig.idealCoordFitType
296 TF_1st.chi2DofRecoveryMax = flags.Trigger.FPGATrackSim.ActiveConfig.chi2DoFRecoveryMax
297 TF_1st.chi2DofRecoveryMin = flags.Trigger.FPGATrackSim.ActiveConfig.chi2DoFRecoveryMin
298 TF_1st.doMajority = flags.Trigger.FPGATrackSim.ActiveConfig.doMajority
299 TF_1st.nHits_noRecovery = flags.Trigger.FPGATrackSim.ActiveConfig.nHitsNoRecovery
300 TF_1st.DoDeltaGPhis = flags.Trigger.FPGATrackSim.ActiveConfig.doDeltaGPhis
301 TF_1st.DoMissingHitsChecks = flags.Trigger.FPGATrackSim.ActiveConfig.doMissingHitsChecks
302 result.addPublicTool(TF_1st, primary=
True)
307 OR_1st = CompFactory.FPGATrackSimOverlapRemovalTool(
"FPGATrackSimOverlapRemovalTool_1st")
308 OR_1st.ORAlgo =
"Normal"
309 OR_1st.doFastOR =flags.Trigger.FPGATrackSim.ActiveConfig.doFastOR
310 OR_1st.NumOfHitPerGrouping = 5
312 if flags.Trigger.FPGATrackSim.ActiveConfig.hough:
313 OR_1st.nBins_x = flags.Trigger.FPGATrackSim.ActiveConfig.xBins + 2 * flags.Trigger.FPGATrackSim.ActiveConfig.xBufferBins
314 OR_1st.nBins_y = flags.Trigger.FPGATrackSim.ActiveConfig.yBins + 2 * flags.Trigger.FPGATrackSim.ActiveConfig.yBufferBins
315 OR_1st.localMaxWindowSize = flags.Trigger.FPGATrackSim.ActiveConfig.localMaxWindowSize
316 OR_1st.roadSliceOR = flags.Trigger.FPGATrackSim.ActiveConfig.roadSliceOR
318 result.addPublicTool(OR_1st, primary=
True)
324 OR_2nd = CompFactory.FPGATrackSimOverlapRemovalTool(
"FPGATrackSimOverlapRemovalTool_2nd")
326 if flags.Trigger.FPGATrackSim.ActiveConfig.secondStage:
327 OR_2nd.DoSecondStage =
True
328 OR_2nd.ORAlgo =
"Normal"
329 OR_2nd.doFastOR = flags.Trigger.FPGATrackSim.ActiveConfig.doFastOR
330 OR_2nd.NumOfHitPerGrouping = 5
331 result.setPrivateTools(OR_2nd)
337 TF_2nd = CompFactory.FPGATrackSimTrackFitterTool(name=
"FPGATrackSimTrackFitterTool_2nd")
340 if flags.Trigger.FPGATrackSim.ActiveConfig.secondStage:
341 TF_2nd.Do2ndStageTrackFit =
True
342 result.setPrivateTools(TF_2nd)
347 InputTool = CompFactory.FPGATrackSimInputHeaderTool(name=
"FPGATrackSimReadInput",
348 InFileName = flags.Trigger.FPGATrackSim.wrapperFileName)
349 result.addPublicTool(InputTool, primary=
True)
353 newFlags = flags.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag)
358 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
359 result.setPrivateTools(FPGAClusterConverter)
365 FPGAActsTrkConverter = CompFactory.FPGAActsTrkConverter()
366 result.setPrivateTools(FPGAActsTrkConverter)
376 theFPGATrackSimLogicalHistProcessAlg=CompFactory.FPGATrackSimLogicalHitsProcessAlg()
377 theFPGATrackSimLogicalHistProcessAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
378 theFPGATrackSimLogicalHistProcessAlg.writeOutputData = flags.Trigger.FPGATrackSim.ActiveConfig.writeOutputData
379 theFPGATrackSimLogicalHistProcessAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
380 theFPGATrackSimLogicalHistProcessAlg.tracking = flags.Trigger.FPGATrackSim.tracking
381 theFPGATrackSimLogicalHistProcessAlg.outputHitTxt = flags.Trigger.FPGATrackSim.ActiveConfig.outputHitTxt
382 theFPGATrackSimLogicalHistProcessAlg.RunSecondStage = flags.Trigger.FPGATrackSim.ActiveConfig.secondStage
383 theFPGATrackSimLogicalHistProcessAlg.DoMissingHitsChecks = flags.Trigger.FPGATrackSim.ActiveConfig.doMissingHitsChecks
384 theFPGATrackSimLogicalHistProcessAlg.DoHoughRootOutput =
False
385 theFPGATrackSimLogicalHistProcessAlg.DoNNTrack =
False
389 theFPGATrackSimLogicalHistProcessAlg.FPGATrackSimMapping = FPGATrackSimMaping
394 if (flags.Trigger.FPGATrackSim.ActiveConfig.hough1D):
399 theFPGATrackSimLogicalHistProcessAlg.RawToLogicalHitsTool = result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flags))
402 if flags.Trigger.FPGATrackSim.wrapperFileName != []
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
404 theFPGATrackSimLogicalHistProcessAlg.InputTool2 =
""
405 theFPGATrackSimLogicalHistProcessAlg.SGInputTool =
""
407 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
409 theFPGATrackSimLogicalHistProcessAlg.InputTool =
""
410 theFPGATrackSimLogicalHistProcessAlg.InputTool2 =
""
411 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
417 if (flags.Trigger.FPGATrackSim.ActiveConfig.etaPatternFilter):
418 EtaPatternFilter = CompFactory.FPGATrackSimEtaPatternFilterTool()
419 EtaPatternFilter.FPGATrackSimMappingSvc = FPGATrackSimMaping
420 EtaPatternFilter.threshold = flags.Trigger.FPGATrackSim.Hough1D.threshold[0]
421 EtaPatternFilter.EtaPatterns = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".patt"
422 theFPGATrackSimLogicalHistProcessAlg.RoadFilter = EtaPatternFilter
423 theFPGATrackSimLogicalHistProcessAlg.FilterRoads =
True
425 if (flags.Trigger.FPGATrackSim.ActiveConfig.phiRoadFilter):
426 RoadFilter2 = CompFactory.FPGATrackSimPhiRoadFilterTool()
427 RoadFilter2.FPGATrackSimMappingSvc = FPGATrackSimMaping
428 RoadFilter2.threshold = flags.Trigger.FPGATrackSim.Hough1D.threshold[0]
429 RoadFilter2.fieldCorrection = flags.Trigger.FPGATrackSim.ActiveConfig.fieldCorrection
431 windows = [flags.Trigger.FPGATrackSim.Hough1D.phifilterwindow
for i
in range(len(flags.Trigger.FPGATrackSim.ActiveConfig.hitExtendX))]
432 RoadFilter2.window = windows
434 theFPGATrackSimLogicalHistProcessAlg.RoadFilter2 = RoadFilter2
435 theFPGATrackSimLogicalHistProcessAlg.FilterRoads2 =
True
440 LRTRoadFilter = CompFactory.FPGATrackSimLLPRoadFilterTool()
441 result.addPublicTool(LRTRoadFilter)
442 theFPGATrackSimLogicalHistProcessAlg.LRTRoadFilter = LRTRoadFilter
444 theFPGATrackSimLogicalHistProcessAlg.LRTRoadFinder = result.getPrimaryAndMerge(
LRTRoadFinderCfg(flags))
445 theFPGATrackSimLogicalHistProcessAlg.NNTrackTool = result.getPrimaryAndMerge(
NNTrackToolCfg(flags))
447 theFPGATrackSimLogicalHistProcessAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
455 if flags.Trigger.FPGATrackSim.spacePoints:
456 SPRoadFilter = CompFactory.FPGATrackSimSpacepointRoadFilterTool()
457 SPRoadFilter.filtering = flags.Trigger.FPGATrackSim.ActiveConfig.spacePointFiltering
458 SPRoadFilter.minSpacePlusPixel = flags.Trigger.FPGATrackSim.minSpacePlusPixel
460 if (flags.Trigger.FPGATrackSim.ActiveConfig.hough1D):
461 SPRoadFilter.threshold = flags.Trigger.FPGATrackSim.Hough1D.threshold[0]
463 SPRoadFilter.threshold = flags.Trigger.FPGATrackSim.ActiveConfig.threshold[0]
464 theFPGATrackSimLogicalHistProcessAlg.SPRoadFilterTool = SPRoadFilter
465 theFPGATrackSimLogicalHistProcessAlg.Spacepoints =
True
467 if flags.Trigger.FPGATrackSim.ActiveConfig.secondStage:
468 FPGATrackSimExtrapolatorTool = CompFactory.FPGATrackSimExtrapolator()
469 FPGATrackSimExtrapolatorTool.Ncombinations = 16
470 theFPGATrackSimLogicalHistProcessAlg.Extrapolator = FPGATrackSimExtrapolatorTool
473 if flags.Trigger.FPGATrackSim.ActiveConfig.lrt:
474 assert flags.Trigger.FPGATrackSim.ActiveConfig.lrtUseBasicHitFilter != flags.Trigger.FPGATrackSim.ActiveConfig.lrtUseMlHitFilter,
'Inconsistent LRT hit filtering setup, need either ML of Basic filtering enabled'
475 assert flags.Trigger.FPGATrackSim.ActiveConfig.lrtUseStraightTrackHT != flags.Trigger.FPGATrackSim.ActiveConfig.lrtUseDoubletHT,
'Inconsistent LRT HT setup, need either double or strightTrack enabled'
476 theFPGATrackSimLogicalHistProcessAlg.doLRT =
True
477 theFPGATrackSimLogicalHistProcessAlg.LRTHitFiltering = (
not flags.Trigger.FPGATrackSim.ActiveConfig.lrtSkipHitFiltering)
479 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimLogicalHitsProcessAlgMonitoringCfg
482 result.addEventAlgo(theFPGATrackSimLogicalHistProcessAlg)
493 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters%s" %(stage))
494 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
495 kwargs.setdefault(
"FPGATrackSimHitInRoadsKey",
"FPGAHitsInRoads%s" %(stage))
496 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads%s" %(stage))
497 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks%s" %(stage))
498 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClusters%sFromFPGACluster" %(stage))
499 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClusters%sFromFPGACluster" %(stage))
500 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
501 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
502 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
503 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
504 kwargs.setdefault(
"doHits",
True)
505 kwargs.setdefault(
"doClusters",
True)
506 kwargs.setdefault(
"doActsTrk",
False)
510 result.addEventAlgo(CompFactory.FPGAConversionAlgorithm(name, **kwargs))
517 from InDetConfig.InDetPrepRawDataFormationConfig
import ITkInDetToXAODClusterConversionCfg
518 additional_kwargs = {
519 'InputPixelClustersName' :
"FPGAInDetPixelClusterContainer",
520 'OutputPixelClustersName':
"FPGAxAODPixelClusters",
521 'InputStripClustersName' :
"FPGAInDetStripsClusterContainer",
522 'OutputStripClustersName':
"FPGAxAODSctClusters"
531 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
533 toAOD += [f
"xAOD::PixelClusterContainer#xAODPixelClusters{stage}FromFPGACluster",f
"xAOD::PixelClusterAuxContainer#xAODPixelClusters{stage}FromFPGAClusterAux.",
534 f
"xAOD::StripClusterContainer#xAODStripClusters{stage}FromFPGACluster",f
"xAOD::StripClusterAuxContainer#xAODStripClusters{stage}FromFPGAClusterAux.",
538 result.merge(
addToAOD(flags, toAOD))
543 if __name__ ==
"__main__":
544 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
545 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
550 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
551 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN4
552 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
553 log.info(
"wrapperFile is string, converting to list")
554 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
555 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
559 FinalProtoTrackChainxAODTracksKey=
"xAODFPGAProtoTracks"
560 flags.Detector.EnableCalo =
False
563 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=
True
564 flags.Tracking.ITkMainPass.doAthenaToActsCluster=
True
566 flags.Acts.doRotCorrection =
False
569 flags.PhysVal.IDPVM.doExpertOutput =
True
570 flags.PhysVal.IDPVM.doPhysValOutput =
True
571 flags.PhysVal.IDPVM.doHitLevelPlots =
True
572 flags.PhysVal.IDPVM.runDecoration =
True
573 flags.PhysVal.IDPVM.validateExtraTrackCollections = [f
"{FinalProtoTrackChainxAODTracksKey}TrackParticles"]
574 flags.PhysVal.IDPVM.doTechnicalEfficiency =
False
575 flags.PhysVal.OutputFileName =
"IDPVM.root"
579 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.MainPass")
582 acc.addService(CompFactory.THistSvc(Output = [
"EXPERT DATAFILE='monitoring.root', OPT='RECREATE'"]))
583 acc.addService(CompFactory.THistSvc(Output = [
"MONITOROUT DATAFILE='dataflow.root', OPT='RECREATE'"]))
586 if not flags.Trigger.FPGATrackSim.wrapperFileName:
587 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
591 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
594 if flags.Detector.EnableCalo:
595 from CaloRec.CaloRecoConfig
import CaloRecoCfg
598 if not flags.Reco.EnableTrackOverlay:
599 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
603 if flags.Trigger.FPGATrackSim.doEDMConversion:
606 from FPGATrackSimPrototrackFitter.FPGATrackSimPrototrackFitterConfig
import FPGAPrototrackFitAndMonitoringCfg
609 if flags.Trigger.FPGATrackSim.writeToAOD: acc.merge(
WriteToAOD(flags, stage =
'_1st'))
610 if flags.Trigger.FPGATrackSim.Hough.secondStage : acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg_2nd', stage =
'_2nd'))
611 if flags.Trigger.FPGATrackSim.convertUnmappedHits: acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlgUnmapped_1st', stage =
'Unmapped_1st', doClusters =
False))
612 if flags.Trigger.FPGATrackSim.Hough.hitFiltering : acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlgFiltered_1st', stage =
'Filtered_1st', doHits =
False))
616 from InDetPhysValMonitoring.InDetPhysValDecorationConfig
import AddDecoratorCfg
620 from InDetPhysValMonitoring.InDetPhysValMonitoringConfig
import InDetPhysValMonitoringCfg
623 acc.store(
open(
'AnalysisConfig.pkl',
'wb'))
625 statusCode = acc.run(flags.Exec.MaxEvents)
626 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"