ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimConfigFlags.py
Go to the documentation of this file.
1#Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3from AthenaConfiguration.Enums import FlagEnum
4
6 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
7 cf = AthConfigFlags()
8 cf.addFlag('pipeline', '')
9 cf.addFlag('algoTag', 'Hough')
10 cf.addFlag('wrapperFileName', [])
11 cf.addFlag('wrapperFileName2', [])
12 cf.addFlag('runOnPreProducedHeaderFiles', False)
13 cf.addFlag('secondInputToolN', 0)
14 cf.addFlag('mapsDir', '__MUST_BE_SET__')
15 cf.addFlag('loadRegionMap', True)
16 cf.addFlag('loadRadii', True)
17 cf.addFlag('wrapperMetaData', "Default Meta Data")
18 cf.addFlag('sampleType', 'singleMuons')
19 cf.addFlag('doMultiTruth', True)
20 cf.addFlag('SetTruthParametersForTracks', -1)
21 cf.addFlag('FPGATrackSimTestFiles', '')
22 cf.addFlag('SortTracks', False)
23 cf.addFlag('FPGATrackSimMatrixFileRegEx', [])
24 cf.addFlag('FPGATrackSimMaxnMatrixInputFiles', -1)
25 cf.addFlag('outputMergedFPGATrackSimMatrixFile', 'combined_matrix.root')
26 cf.addFlag('FPGATrackSimNBanks', 1)
27 cf.addFlag('FPGATrackSimallBanks', False)
28 cf.addFlag('region', 34)
29 cf.addFlag('regionList',"") # can take ranges, e.g. 30-52, exceptions e.g. !34-36 and regex e.g. 2*0 as comma separated list
30 cf.addFlag('d0min', -2.0)
31 cf.addFlag('d0max', +2.0)
32 cf.addFlag('z0min', -150.0)
33 cf.addFlag('z0max', +150.0)
34 cf.addFlag('qOverPtmin', -0.001)
35 cf.addFlag('qOverPtmax', +0.001)
36 cf.addFlag('oldRegionDefs', False)
37 cf.addFlag('phiShift', 0.0)
38 cf.addFlag('minSpacePlusPixel', 3)
39 cf.addFlag('dropUnpairedIfSP', False)
40 cf.addFlag('baseName', '')
41 cf.addFlag('CheckGood2ndStage', True)
42 cf.addFlag('Is2ndStage', False)
43 cf.addFlag('UseHitScaleFactor', False)
44 cf.addFlag('missHitsConsts', False)
45 cf.addFlag('tracking', False)
46 cf.addFlag('secondTracking', True)
47 cf.addFlag('layerStudyStage', 0)
48 cf.addFlag('doOverlapRemoval', True)
49 cf.addFlag('doOverlapRemovalBetweenRegions', True)
50 cf.addFlag('clustering', 1)
51 cf.addFlag('LorentzAngleShift', 2)
52 cf.addFlag('bankDir', '')
53 cf.addFlag('slicesFile', 'eventSelectionSlices/v1.0/slices.txt')
54 cf.addFlag('spacePoints', True)
55 cf.addFlag('outputMonitorFile',"monitoring.root")
56 cf.addFlag('loglevel', AthenaCommon.Constants.INFO)
57 cf.addFlag('msgLimit',-1)
58 cf.addFlag('singleTrackSample', True)
59 cf.addFlag('FakeNNonnxFile1st', 'NN/1stStage/v0.11/Class_5Hits_V007')
60 cf.addFlag('FakeNNonnxFile2nd', 'NN/2ndStage/v0.11/Class_13Hits_V007')
61 cf.addFlag('ExtensionNNVolonnxFile', 'NN/2ndStage/v0.11/NNPathfinderVol_4Hits_V011')
62 cf.addFlag('ExtensionNNHitonnxFile', 'NN/2ndStage/v0.11/NNPathfinderHit_4Hits_V011')
63 cf.addFlag('ParamNNonnxFile1st', 'NN/1stStage/v0.11/Param_5Hits_V004')
64 cf.addFlag('ParamNNonnxFile2nd', 'NN/2ndStage/v0.11/Param_13Hits_V007')
65 cf.addFlag('doNNPathFinder', False)
66 cf.addFlag('NNCartesianCoordinates', False)
67 cf.addFlag('NNBatchSize', 1)
68 cf.addFlag('windowRScaling', 1.0)
69 cf.addFlag('windowPhiScaling', 1.0)
70 cf.addFlag('windowZScaling', 1.0)
71 cf.addFlag('lowPtvalueR', -1)
72 cf.addFlag('lowPtvaluePhi', -1)
73 cf.addFlag('lowPtvalueZ', -1)
74 cf.addFlag('lowPtWindowRScaling', 1.0)
75 cf.addFlag('lowPtWindowPhiScaling', 1.0)
76 cf.addFlag('lowPtWindowZScaling', 1.0)
77 cf.addFlag('missedHitRScaling', -1.0)
78 cf.addFlag('missedHitPhiScaling', -1.0)
79 cf.addFlag('missedHitZScaling', -1.0)
80 cf.addFlag('maxBranches', [2])
81 cf.addFlag('hitThreshold', 2)
82 cf.addFlag('varyingThreshold', True)
83 cf.addFlag('varyingHitThresholds', [])
84 cf.addFlag('MinSpacePointsPerSeed',3)
85 cf.addFlag('MaxSpacePointsPerSeed',3)
86 cf.addFlag('runBaselineActs', False) # needed in case we want direct comparison with ACTS tracking (i.e. summary tables at the end of the workflow + InDetTrackParticles in the AOD output for IDTPM ratio plots)
87
88 cf.addFlag('runF150hw', False)
89
90
91 def __httHough1DFlags():
92 """Additional function delays import"""
93 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createHough1dFPGATrackSimConfigFlags
95 cf.addFlagsCategory("Hough1D", __httHough1DFlags, prefix=True )
96
97 def __httHoughFlags():
98 """Additional function delays import"""
99 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createHoughFPGATrackSimConfigFlags
101 cf.addFlagsCategory("Hough", __httHoughFlags, prefix=True )
102
103 def __httGenScanFlags():
104 """Additional function delays import"""
105 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createGenScanFPGATrackSimConfigFlags
107 cf.addFlagsCategory("GenScan", __httGenScanFlags, prefix=True )
108
109 def __httSecondStageFlags():
110 """Additional function delays import"""
111 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createSecondStageFPGATrackSimConfigFlags
113 cf.addFlagsCategory("SecondStage", __httSecondStageFlags, prefix=True )
114
115 def __httSecondStageFlags():
116 """Additional function delays import"""
117 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createSecondStageFPGATrackSimConfigFlags
119 cf.addFlagsCategory("SecondStage", __httSecondStageFlags, prefix=True )
120
121 def __httDev21_02_15Flags():
122 """Additional function delays import"""
123 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createDev21_02_15_FPGATrackSimConfigFlags
125 cf.addFlagsCategory("Dev21_02_15", __httDev21_02_15Flags, prefix=True )
126
127 def __GNNFlags():
128 """Additional function delays import"""
129 from FPGATrackSimConfTools.FPGATrackSimConfigFlags import createGNNFPGATrackSimConfigFlags
131 cf.addFlagsCategory("GNN", __GNNFlags, prefix=True )
132
133 # EDM conversion
134 cf.addFlag('doEDMConversion', False)
135 cf.addFlag('convertSPs', False)
136 cf.addFlag('convertUnmappedHits', False)
137 cf.addFlag('writeToAOD', False)
138 cf.addFlag('writeClustersToAOD', False)
139 cf.addFlag('writeOfflPRDInfo', False)
140 cf.addFlag('broadErrors', False)
141
142 # Monitoring
143 cf.addFlag('writeAdditionalOutputData', True)
144 cf.addFlag('regionToWriteDPTree', -1)
145 cf.addFlag('writeOutputEventLimit', -1)
146 cf.addFlag('writeRegion', -1)
147 cf.addFlag('readOfflineObjects', True)
148
149 # ACTS Tracking
150 cf.addFlag('runCKF',False)
151 cf.addFlag('useFPGATruthTrackMatching',False)
152
153
154 # use cut on eta and phi specific chi2 for analytical fitter
155 cf.addFlag('applyEtaPhiChi2Cuts', False)
156 cf.addFlag('applyEtaPhiChi2Cuts4HitOnly', False)
157
158 return cf
159
160
162 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
163 cf = AthConfigFlags()
164
165 # common
166 cf.addFlag('name', '')
167
168 # input
169 cf.addFlag('firstInputToolN', 1)
170 cf.addFlag('realHitsOverlay', False)
171 cf.addFlag('hitFiltering', False)
172 cf.addFlag('spacePointFiltering', False)
173 cf.addFlag('writeTestOutput', True)
174
175 # road finding selection
176 cf.addFlag('houghRootoutput1st', False)
177 cf.addFlag('houghRootoutput2nd', False)
178 cf.addFlag('hough', True)
179 cf.addFlag('hough1D', False)
180 cf.addFlag('houghType', 'Original')
181 cf.addFlag('roadMerge', False)
182 cf.addFlag('genScan', False)
183 cf.addFlag('NumOfHitPerGrouping', 5)
184
185 cf.addFlag('etaPatternFilter', False)
186 cf.addFlag('phiRoadFilter', False)
187 cf.addFlag('GNN', False)
188
189
190 # NN filtering 1st stage
191 cf.addFlag('trackNNAnalysis', False)
192 # NN filtering 2nd stage
193 cf.addFlag('trackNNAnalysis2nd', False)
194
195
196 # overlap removal
197 cf.addFlag('doFastOR', False)
198
199 #pass lowest chi2 track
200 cf.addFlag('passLowestChi2TrackOnly', False)
201
202
203 # hough
204 cf.addFlag('xVar', 'phi')
205 cf.addFlag('yVar', 'q/pt')
206 cf.addFlag('qptMin', -1.0)
207 cf.addFlag('qptMax', 1.0)
208 cf.addFlag('d0Slices', [])
209 cf.addFlag('slicing', True)
210 cf.addFlag('localMaxWindowSize', 0)
211 cf.addFlag('roadSliceOR', False)
212 cf.addFlag('fieldCorrection', True)
213 cf.addFlag('addAllHits',False)
214 cf.addFlag('detectorZoneWindows', False)
215 cf.addFlag('phiMin', 0.0)
216 cf.addFlag('phiMax', 0.0)
217 cf.addFlag('xBins', 216)
218 cf.addFlag('yBins', 216)
219 cf.addFlag('xBufferBins', 6)
220 cf.addFlag('yBufferBins', 2)
221 cf.addFlag('threshold', [8])
222 cf.addFlag('IdealGeoRoads', True)
223 cf.addFlag('convolution', [])
224 cf.addFlag('convSizeX', 0)
225 cf.addFlag('convSizeY', 0)
226 cf.addFlag('hitExtendX', [])
227
228 cf.addFlag('doMajority', 1)
229 cf.addFlag('doTracking', False)
230 cf.addFlag('outputHitTxt', False)
231
232 cf.addFlag('requirements', '')
233 # only for 2DHT Flex
234 cf.addFlag('r_max',2047)
235 cf.addFlag('phi_coord_max',65535)
236 cf.addFlag('phi_range', 6.399609375)
237 cf.addFlag('r_max_mm',1137.5)
238 cf.addFlag('bitwise_qApt_conv',204)
239 cf.addFlag('bitwise_phi0_conv',1)
240 cf.addFlag('phi0_sectors',1)
241 cf.addFlag('qApt_sectors',7)
242 cf.addFlag('pipes_qApt',8)
243 cf.addFlag('pipes_phi0',1)
244
245 # performance monitoring
246 cf.addFlag('barcodeFracMatch', 0.5)
247
248 # track Fitter
249 cf.addFlag('chi2DoFRecoveryMin', 40)
250 cf.addFlag('chi2DoFRecoveryMax', 20000)
251 cf.addFlag('nHitsNoRecovery', -1)
252 cf.addFlag('guessHits', True)
253 cf.addFlag('doMissingHitsChecks', False)
254 cf.addFlag('idealCoordFitType', 2)
255 cf.addFlag('doDeltaGPhis', False)
256 cf.addFlag('chi2cut', 2.25)
257 cf.addFlag('useVaryingChi2Cut', False)
258 cf.addFlag('fitFromRoad', True)
259
260 # second stage fitting
261 cf.addFlag('secondStage', False)
262 cf.addFlag('secondChi2Cut', 36)
263
264 # fast monitoring
265 cf.addFlag('fastMon', False)
266 cf.addFlag('canExtendHistRanges', False)
267 cf.addFlag('dataClass', 2)
268
269 # lrt settings
270 cf.addFlag('lrt', False)
271 cf.addFlag('lrtUseBasicHitFilter', False)
272 cf.addFlag('lrtUseMlHitFilter', False)
273 cf.addFlag('lrtUseStraightTrackHT', False)
274 cf.addFlag('lrtUseDoubletHT', False)
275 cf.addFlag('lrtDoubletD0Range', 120.0)
276 cf.addFlag('lrtDoubletD0Bins', 216)
277 cf.addFlag('lrtDoubletQptRange', 0.02)
278 cf.addFlag('lrtDoubletQptBins', 216)
279 cf.addFlag('lrtMonPhiRange', (0.2, 0.5))
280 cf.addFlag('lrtMonD0Range', (-100,100))
281 cf.addFlag('lrtMonZ0Range', (-300,300))
282 cf.addFlag('sampleType', '')
283
284 return cf
285
286
289
290 cf.name = 'hough_1d'
291
292 cf.hough1D = True
293
294 cf.phiMin = 0.0
295 cf.phiMax = 0.8
296 cf.xBins = 200
297 cf.threshold = [7]
298 cf.hitExtendX = [1] * 9
299
300 cf.addFlag('phiRangeCut', True)
301 cf.addFlag('splitpt', 1)
302 cf.addFlag('phifilterwindow', 0.005)
303
304 cf.outputHitTxt = ""
305
306 return cf
307
308
311
312 cf.name = 'hough'
313 cf.hough = True
314
315
316 cf.phiMin = 0.3
317 cf.phiMax = 0.5
318 cf.xBins = 216
319 cf.yBins = 216
320 cf.xBufferBins = 6
321 cf.yBufferBins = 2
322 cf.addFlag('combineLayers', [])
323 cf.addFlag('scale', [])
324 cf.hitExtendX = [2,1,0,0,0,0,0,0,0]
325
326 cf.addFlag('lrtSkipHitFiltering', False)
327 cf.addFlag('lrtPtmin', 5)
328 cf.addFlag('allowHighTruthBarcode', False)
329 cf.addFlag('mLRTpdgID', 0)
330 cf.addFlag('lrtStraighttrackXVar', 'phi')
331 cf.addFlag('lrtStraighttrackYVar', 'd0')
332 cf.addFlag('lrtStraighttrackPhiMin', 0.3)
333 cf.addFlag('lrtStraighttrackPhiMax', 0.5)
334 cf.addFlag('lrtStraighttrackD0Min', -300.0)
335 cf.addFlag('lrtStraighttrackD0Max', 300.0)
336 cf.addFlag('lrtStraighttrackXBins', 216)
337 cf.addFlag('lrtStraighttrackYBins', 216)
338 cf.addFlag('lrtStraighttrackXBufferBins', 6)
339 cf.addFlag('lrtStraighttrackYBufferBins', 2)
340 cf.addFlag('lrtStraighttrackSlicing', True)
341 cf.addFlag('lrtStraighttrackThreshold', [1])
342 cf.addFlag('lrtStraighttrackConvolution', [])
343 cf.addFlag('lrtStraighttrackCombineLayers', [0,1,2,3,4,5,6,7])
344 cf.addFlag('lrtStraighttrackScale', [1])
345 cf.addFlag('lrtStraighttrackConvSizeX', 0)
346 cf.addFlag('lrtStraighttrackConvSizeY', 0)
347 cf.addFlag('lrtStraighttrackHitExtendX', [])
348 cf.addFlag('lrtStraighttrackStereo', False)
349 cf.addFlag('lrtStraighttrackLocalMaxWindowSize', 0)
350
351 return cf
352
353
356
357 cf.name = 'dev_21-02-15'
358 cf.phiMin = 0.3
359 cf.phiMax = 0.5
360 cf.xBins = 64
361 cf.yBins = 216
362 cf.xBufferBins = 2
363 cf.yBufferBins = 2
364 cf.threshold = [70]
365 cf.convolution = [1, 10, 1]
366 cf.addFlag('combineLayers', [])
367 cf.addFlag('scale', [])
368 cf.convSizeX = 3
369 cf.convSizeY = 1
370
371 cf.doMajority = 0
372 cf.doTracking = True
373
374 return cf
375
378
379 cf.name = 'genScan'
380 cf.addFlag('genScanCuts','FPGATrackSimGenScanCuts')
381 cf.addFlag('reverse','True')
382 cf.addFlag('binFilter','IncrementalBuild')
383 cf.addFlag('layerStudy',False)
384 cf.addFlag('layerMapFile','')
385 cf.addFlag('useLayerRadiiFile',False)
386 cf.addFlag('noCuts',False)
387 cf.addFlag('multiStepBinning',False)
388
389 cf.addFlag('filterInBin', False)
390 cf.addFlag('phiChi2Weight', 1.0)
391 cf.addFlag('etaChi2Weight', 1.0)
392
393 # These are used by the layer study, to avoid the need for Cuts_step0.
394 # They are only used in the layer study if initialLayerStudy is set to True
395 cf.addFlag('initialLayerStudy', False)
396 cf.addFlag('layerStudyCutFile', "")
397 cf.addFlag('rin', 30)
398 cf.addFlag('rout', 300)
399 cf.addFlag('parBins', [20, 20, 5, 20, 3])
400 cf.addFlag('parMin', [-1000, -1000, 0.0, 0.0, -10])
401 cf.addFlag('parMax', [ 1000, 1000, 1.0, 1.0, 10])
402 cf.addFlag('parSet', "PhiSlicedKeyLyrPars")
403 cf.addFlag('keepHitsStrategy', -1)
404 cf.addFlag('enableMonitoring', False)
405 return cf
406
409 cf.name = 'SecondStage'
410 cf.addFlag('CutFile', "Cuts_step1_2ndStage")
411 cf.addFlag('LayerMapFile', "")
412 return cf
413
414class graphTool(FlagEnum):
415 ModuleMap = 'ModuleMap'
416 MetricLearning = 'MetricLearning'
417
418class moduleMapType(FlagEnum):
419 doublet = 'doublet'
420
421class moduleMapFunc(FlagEnum):
422 minmax = 'minmax'
423
424class roadMakerTool(FlagEnum):
425 ConnectedComponents = 'ConnectedComponents'
426 JunctionAwareCC = 'JunctionAwareCC'
427
430
431 cf.name = 'GNN'
432 cf.addFlag("graphTool", graphTool.ModuleMap, type=graphTool)
433 cf.addFlag("moduleMapType", moduleMapType.doublet, type=moduleMapType)
434 cf.addFlag("moduleMapFunc", moduleMapFunc.minmax, type=moduleMapFunc)
435 cf.addFlag("moduleMapTol",0.0000000001) # 1e-10
436 cf.addFlag("moduleMapPath",'')
437 cf.addFlag("metricLearningR",0.1)
438 cf.addFlag("metricLearningMaxN", 512)
439 cf.addFlag("MLModelPath",'')
440 cf.addFlag("GNNModelPath",'')
441 cf.addFlag("roadMakerTool", roadMakerTool.ConnectedComponents, type=roadMakerTool)
442 cf.addFlag("edgeScoreCut",0.8)
443 cf.addFlag("doGNNRootOutput",False)
444 cf.addFlag("doGNNTracking",False)
445 cf.addFlag("doGNNPixelSeeding",False)
446 cf.addFlag("nInputsGNN",13)
447
448 return cf
449
450
453
454if __name__ == "__main__":
455
457 flags.loadAllDynamicFlags()
458 flags.initAll()
459 flags.dump()
460 assert flags.Hough.firstInputToolN == 1 , "default firstInputToolN is wrong"
461 assert flags.Hough.barcodeFracMatch == 0.5, "default barcodeFracMatch is wrong"
462 assert flags.Hough.fastMon is False , "default fastMon is wrong"
463 assert flags.Hough.lrtMonZ0Range == (-300,300), "default lrtMonZ0Rang is wrong"
464
465 print( "allok" )
void print(char *figname, TCanvas *c1)