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