ATLAS Offline Software
Functions
FPGATrackSimAlgorithmConfig Namespace Reference

Functions

def intList (string)
 
def floatList (floatStr)
 
def applyTag (obj, tag)
 
def addHoughTool (map_tag, algo_tag, doHitTracing)
 
def addHough_d0phi0_Tool (map_tag, algo_tag, doHitTracing)
 
def addHough1DShiftTool (map_tag, algo_tag)
 
def addLRTDoubletFPGATrackSimool (algo_tag)
 
def FPGATrackSimLogicalHitsProcessAlgMonitoringCfg (flags)
 

Function Documentation

◆ addHough1DShiftTool()

def FPGATrackSimAlgorithmConfig.addHough1DShiftTool (   map_tag,
  algo_tag 
)

Definition at line 190 of file FPGATrackSimAlgorithmConfig.py.

190 def addHough1DShiftTool(map_tag, algo_tag):
191 
192  union = FPGATrackSimRoadUnionTool()
193 
194  tools = []
195  nSlice = FPGATrackSimMaps.getNSubregions(map_tag) if algo_tag['slicing'] else 1
196 
197  splitpt=algo_tag['splitpt']
198  for ptstep in range(splitpt):
199  qpt_min = algo_tag['qpt_min']
200  qpt_max = algo_tag['qpt_max']
201  lowpt = qpt_min + (qpt_max-qpt_min)/splitpt*ptstep
202  highpt = qpt_min + (qpt_max-qpt_min)/splitpt*(ptstep+1)
203 
204  for iSlice in range(nSlice):
205  tool = FPGATrackSimHough1DShiftTool("Hough1DShift_" + str(iSlice)+(("_pt{}".format(ptstep)) if splitpt>1 else ""))
206  tool.subRegion = iSlice if nSlice > 1 else -1
207  if algo_tag['radiiFile'] is not None:
208  tool.radiiFile = algo_tag['radiiFile']
209  tool.phi_min = algo_tag['phi_min']
210  tool.phi_max = algo_tag['phi_max']
211  tool.qpT_min = lowpt
212  tool.qpT_max = highpt
213  tool.nBins = algo_tag['xBins']
214  tool.useDiff = True
215  tool.variableExtend = True
216  tool.phiRangeCut = algo_tag['phiRangeCut']
217  tool.d0spread=-1.0 # mm
218  tool.iterStep = 0
219  tool.iterLayer = 7
220  tool.threshold = algo_tag['threshold'][0]
221 
222  try:
223  tool.hitExtend = algo_tag['hitExtend_x']
224  except Exception:
225  tool.hitExtend = floatList(algo_tag['hitExtend_x'])
226 
227  tools.append(tool)
228 
229  union.tools = tools # NB don't manipulate union.tools directly; for some reason the attributes get unset. Only set like is done here
230 
231  from AthenaCommon.AppMgr import ToolSvc
232  ToolSvc += union
233  return union
234 

◆ addHough_d0phi0_Tool()

def FPGATrackSimAlgorithmConfig.addHough_d0phi0_Tool (   map_tag,
  algo_tag,
  doHitTracing 
)
Creates and adds the Hough transform tools to the tool svc

Definition at line 125 of file FPGATrackSimAlgorithmConfig.py.

125 def addHough_d0phi0_Tool(map_tag, algo_tag, doHitTracing):
126  '''
127  Creates and adds the Hough transform tools to the tool svc
128  '''
129 
130  union = FPGATrackSimRoadUnionTool("LRTRoadUnionTool")
131 
132  if algo_tag['lrt_straighttrack_xVar'] == 'phi':
133  x_min = algo_tag['lrt_straighttrack_phi_min']
134  x_max = algo_tag['lrt_straighttrack_phi_max']
135  else:
136  raise NotImplementedError("x != phi")
137 
138  x_buffer = (x_max - x_min) / algo_tag['lrt_straighttrack_xBins'] * algo_tag['lrt_straighttrack_xBufferBins']
139  x_min -= x_buffer
140  x_max += x_buffer
141 
142  if algo_tag['lrt_straighttrack_yVar'] == 'd0':
143  y_min = algo_tag['lrt_straighttrack_d0_min']
144  y_max = algo_tag['lrt_straighttrack_d0_max']
145  else:
146  raise NotImplementedError("y != d0")
147 
148  y_buffer = (y_max - y_min) / algo_tag['lrt_straighttrack_yBins'] * algo_tag['lrt_straighttrack_yBufferBins']
149  y_min -= y_buffer
150  y_max += y_buffer
151 
152  tools = []
153  nSlice = FPGATrackSimMaps.getNSubregions(map_tag) if algo_tag['lrt_straighttrack_slicing'] else 1
154 
155  for iSlice in range(nSlice):
156  t = FPGATrackSimHoughTransform_d0phi0_Tool("HoughTransform_d0phi0_" + str(iSlice))
157 
158  t.subRegion = iSlice if nSlice > 1 else -1
159  t.phi_min = x_min
160  t.phi_max = x_max
161  t.d0_min = y_min
162  t.d0_max = y_max
163  t.nBins_x = algo_tag['lrt_straighttrack_xBins'] + 2 * algo_tag['lrt_straighttrack_xBufferBins']
164  t.nBins_y = algo_tag['lrt_straighttrack_yBins'] + 2 * algo_tag['lrt_straighttrack_yBufferBins']
165  t.threshold = algo_tag['lrt_straighttrack_threshold']
166  t.convolution = algo_tag['lrt_straighttrack_convolution']
167  t.combine_layers = algo_tag['lrt_straighttrack_combine_layers']
168  t.scale = algo_tag['lrt_straighttrack_scale']
169  t.convSize_x = algo_tag['lrt_straighttrack_convSize_x']
170  t.convSize_y = algo_tag['lrt_straighttrack_convSize_y']
171  t.traceHits = doHitTracing
172  t.stereo = algo_tag['lrt_straighttrack_stereo']
173  t.localMaxWindowSize = algo_tag['lrt_straighttrack_localMaxWindowSize']
174 
175  try:
176  t.hitExtend_x = algo_tag['lrt_straighttrack_hitExtend_x']
177  except Exception:
178  t.hitExtend_x = intList(algo_tag['lrt_straighttrack_hitExtend_x'])
179 
180 
181  tools.append(t)
182 
183  union.tools = tools # NB don't manipulate union.tools directly; for some reason the attributes get unset. Only set like is done here
184 
185  from AthenaCommon.AppMgr import ToolSvc
186  ToolSvc += union
187 
188  return union
189 

◆ addHoughTool()

def FPGATrackSimAlgorithmConfig.addHoughTool (   map_tag,
  algo_tag,
  doHitTracing 
)
Creates and adds the Hough transform tools to the tool svc

Definition at line 51 of file FPGATrackSimAlgorithmConfig.py.

51 def addHoughTool(map_tag, algo_tag, doHitTracing):
52  '''
53  Creates and adds the Hough transform tools to the tool svc
54  '''
55 
57 
58  if algo_tag['xVar'] == 'phi':
59  x_min = algo_tag['phi_min']
60  x_max = algo_tag['phi_max']
61  else:
62  raise NotImplementedError("x != phi")
63 
64  x_buffer = (x_max - x_min) / algo_tag['xBins'] * algo_tag['xBufferBins']
65  x_min -= x_buffer
66  x_max += x_buffer
67 
68  if algo_tag['yVar'] == 'q/pt':
69  y_min = algo_tag['qpt_min']
70  y_max = algo_tag['qpt_max']
71  else:
72  raise NotImplementedError("y != q/pt")
73 
74  y_buffer = (y_max - y_min) / algo_tag['yBins'] * algo_tag['yBufferBins']
75  y_min -= y_buffer
76  y_max += y_buffer
77 
78  tools = []
79  nSlice = FPGATrackSimMaps.getNSubregions(map_tag) if algo_tag['slicing'] else 1
80 
81  d0_list = algo_tag['d0_slices'] or [0]
82 
83  for d0 in d0_list:
84  for iSlice in range(nSlice):
85  t = FPGATrackSimHoughTransformTool("HoughTransform_" + str(d0) + '_' + str(iSlice))
86 
87  t.subRegion = iSlice if nSlice > 1 else -1
88  t.phi_min = x_min
89  t.phi_max = x_max
90  t.qpT_min = y_min
91  t.qpT_max = y_max
92  t.d0_min = d0
93  t.d0_max = d0
94  t.nBins_x = algo_tag['xBins'] + 2 * algo_tag['xBufferBins']
95  t.nBins_y = algo_tag['yBins'] + 2 * algo_tag['yBufferBins']
96  t.threshold = algo_tag['threshold']
97  t.convolution = algo_tag['convolution']
98  t.combine_layers = algo_tag['combine_layers']
99  t.scale = algo_tag['scale']
100  t.convSize_x = algo_tag['convSize_x']
101  t.convSize_y = algo_tag['convSize_y']
102  t.traceHits = doHitTracing
103  t.localMaxWindowSize = algo_tag['localMaxWindowSize']
104  t.fieldCorrection = algo_tag['fieldCorrection']
105  if algo_tag['DoDeltaGPhis']:
106  t.IdealGeoRoads = True
107  try:
108  t.hitExtend_x = algo_tag['hitExtend_x']
109  except Exception:
110  t.hitExtend_x = intList(algo_tag['hitExtend_x'])
111 
112  tools.append(t)
113 
114  union.tools = tools # NB don't manipulate union.tools directly; for some reason the attributes get unset. Only set like is done here
115 
116 
117  from AthenaCommon.AppMgr import ToolSvc
118  ToolSvc += union
119 
120  return union
121 
122 # This is only for LRT, so draw on the LRT variables.
123 # That way we don't interfere with the standard Hough for first pass tracking,
124 # if using it.

◆ addLRTDoubletFPGATrackSimool()

def FPGATrackSimAlgorithmConfig.addLRTDoubletFPGATrackSimool (   algo_tag)

Definition at line 235 of file FPGATrackSimAlgorithmConfig.py.

235 def addLRTDoubletFPGATrackSimool(algo_tag):
237  tool.nBins_x = algo_tag['lrt_doublet_d0_bins']
238  tool.d0_range = algo_tag['lrt_doublet_d0_range']
239  tool.nBins_y = algo_tag['lrt_doublet_qpt_bins']
240  tool.qpT_range = algo_tag['lrt_doublet_qpt_range']
241  from AthenaCommon.AppMgr import ToolSvc
242  ToolSvc += tool
243  return tool
244 
245 

◆ applyTag()

def FPGATrackSimAlgorithmConfig.applyTag (   obj,
  tag 
)
Applies the parameters in the supplied tag to the given FPGATrackSimAlgorithm object.

Definition at line 23 of file FPGATrackSimAlgorithmConfig.py.

23 def applyTag(obj, tag):
24  '''
25  Applies the parameters in the supplied tag to the given FPGATrackSimAlgorithm object.
26  '''
27 
28  params = { # List of configurable parameters for the given object type
29  'FPGATrackSimPatternMatchTool': [
30  'max_misses',
31  ],
32  'FPGATrackSimSectorMatchTool': [
33  'max_misses',
34  ],
35  'FPGATrackSimTrackFitterTool': [
36  'chi2DofRecoveryMin',
37  'chi2DofRecoveryMax',
38  'doMajority',
39  'nHits_noRecovery',
40  'GuessHits',
41  'DoMissingHitsChecks',
42  'IdealCoordFitType',
43  'DoDeltaGPhis'
44  ],
45  }
46 
47  for param in params[obj.getType()]:
48  setattr(obj, param, tag[param])
49 
50 

◆ floatList()

def FPGATrackSimAlgorithmConfig.floatList (   floatStr)
Converts a list of floats in string form to an actual list. This is needed since
trfArgClasses doesn't have a argFloatList class

Definition at line 16 of file FPGATrackSimAlgorithmConfig.py.

16 def floatList(floatStr):
17  '''
18  Converts a list of floats in string form to an actual list. This is needed since
19  trfArgClasses doesn't have a argFloatList class
20  '''
21  return [ float(v) for v in floatStr.split(',') if v != '' ]
22 

◆ FPGATrackSimLogicalHitsProcessAlgMonitoringCfg()

def FPGATrackSimAlgorithmConfig.FPGATrackSimLogicalHitsProcessAlgMonitoringCfg (   flags)

Definition at line 246 of file FPGATrackSimAlgorithmConfig.py.

247  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
248  result = ComponentAccumulator()
249  from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
250  monTool = GenericMonitoringTool(flags, 'MonTool')
251  nbin=100
252  low=-0.5
253  high=99.5
254 
255  etamins={0:0.1, 1:0.7, 2:1.2, 3: 2.0, 4: 3.2}
256  etamaxs={0:0.3, 1:0.9, 2:1.4, 3: 2.2, 4: 3.4}
257  etamin=etamins.get(flags.Trigger.FPGATrackSim.region,0.1)
258  etamax=etamaxs.get(flags.Trigger.FPGATrackSim.region,0.3)
259 
260  monTool.defineHistogram('regionID', path='EXPERT', type='TH1I', title='regionID', xbins=nbin, xmin=low, xmax=high)
261  monTool.defineHistogram('nHits_1st', path='EXPERT', type='TH1I', title='nHits_1st', xbins=nbin, xmin=low, xmax=high)
262  monTool.defineHistogram('nHits_1st_unmapped', path='EXPERT', type='TH1I', title='nHits_1st_unmapped', xbins=nbin, xmin=low, xmax=high)
263  monTool.defineHistogram('nroads_1st', path='EXPERT', type='TH1I', title='nroads_1st', xbins=nbin, xmin=low, xmax=high)
264  monTool.defineHistogram('nroads_1st_postfilter', path='EXPERT', type='TH1I', title='nroads_1st_postfilter', xbins=nbin, xmin=low, xmax=high)
265  monTool.defineHistogram('layerIDs_1st', path='EXPERT', type='TH1I', title='layerIDs_1st', xbins=20, xmin=-0.5, xmax = 19.5)
266  monTool.defineHistogram('chi2_1st_all', path='EXPERT', type='TH1F', title='chi2_1st_all', xbins=nbin, xmin=low, xmax=high)
267  monTool.defineHistogram('best_chi2_1st', path='EXPERT', type='TH1F', title='chi2_1st_all', xbins=nbin, xmin=low, xmax=high)
268  monTool.defineHistogram('ntrack_1st', path='EXPERT', type='TH1F', title='ntrack_1st', xbins=nbin, xmin=low, xmax=high)
269  monTool.defineHistogram('ntrack_1st_afterOLR', path='EXPERT', type='TH1F', title='ntrack_1st_afterOLR', xbins=nbin, xmin=low, xmax=high)
270  monTool.defineHistogram('eff_road,pT', path='EXPERT', type='TEfficiency', title='eff_road_pt', xbins=20, xmin=0, xmax=100)
271  monTool.defineHistogram('eff_track,pT', path='EXPERT', type='TEfficiency', title='eff_track_pt', xbins=20, xmin=0, xmax=100)
272  monTool.defineHistogram('eff_track_chi2,pT', path='EXPERT', type='TEfficiency', title='eff_track_chi2_pt', xbins=20, xmin=0, xmax=100)
273  monTool.defineHistogram('eff_road,pT_zoom', path='EXPERT', type='TEfficiency', title='eff_road_pt_zoom', xbins=10, xmin=0, xmax=10)
274  monTool.defineHistogram('eff_track,pT_zoom', path='EXPERT', type='TEfficiency', title='eff_track_pt_zoom', xbins=10, xmin=0, xmax=10)
275  monTool.defineHistogram('eff_track_chi2,pT_zoom', path='EXPERT', type='TEfficiency', title='eff_track_chi2_pt_zoom', xbins=10, xmin=0, xmax=10)
276  monTool.defineHistogram('eff_road,eta', path='EXPERT', type='TEfficiency', title='eff_road_eta', xbins = 20, xmin=etamin, xmax=etamax)
277  monTool.defineHistogram('eff_track,eta', path='EXPERT', type='TEfficiency', title='eff_track_eta', xbins = 20, xmin=etamin, xmax=etamax)
278  monTool.defineHistogram('eff_track_chi2,eta', path='EXPERT', type='TEfficiency', title='eff_track_chi2_eta', xbins = 20, xmin=etamin, xmax=etamax)
279  monTool.defineHistogram('eff_road,phi', path='EXPERT', type='TEfficiency', title='eff_road_phi', xbins = 20, xmin=flags.Trigger.FPGATrackSim.ActiveConfig.phiMin, xmax=flags.Trigger.FPGATrackSim.ActiveConfig.phiMax)
280  monTool.defineHistogram('eff_track,phi', path='EXPERT', type='TEfficiency', title='eff_track_phi', xbins = 20, xmin=flags.Trigger.FPGATrackSim.ActiveConfig.phiMin, xmax=flags.Trigger.FPGATrackSim.ActiveConfig.phiMax)
281  monTool.defineHistogram('eff_track_chi2,phi', path='EXPERT', type='TEfficiency', title='eff_track_chi2_phi', xbins = 20, xmin=flags.Trigger.FPGATrackSim.ActiveConfig.phiMin, xmax=flags.Trigger.FPGATrackSim.ActiveConfig.phiMax)
282  monTool.defineHistogram('eff_road,d0', path='EXPERT', type='TEfficiency', title='eff_road_d0', xbins = 20, xmin = -2.0, xmax = 2.0)
283  monTool.defineHistogram('eff_track,d0', path='EXPERT', type='TEfficiency', title='eff_track_d0', xbins = 20, xmin = -2.0, xmax = 2.0)
284  monTool.defineHistogram('eff_track_chi2,d0', path='EXPERT', type='TEfficiency', title='eff_track_chi2_d0', xbins = 20, xmin = -2.0, xmax = 2.0)
285  monTool.defineHistogram('eff_road,z0', path='EXPERT', type='TEfficiency', title='eff_road_z0', xbins = 20, xmin = -150, xmax = 150.0)
286  monTool.defineHistogram('eff_track,z0', path='EXPERT', type='TEfficiency', title='eff_track_z0', xbins = 20, xmin = -150.0, xmax = 150.0)
287  monTool.defineHistogram('eff_track_chi2,z0', path='EXPERT', type='TEfficiency', title='eff_track_chi2_z0', xbins = 20, xmin = -150.0, xmax = 150.0)
288 
289  result.setPrivateTools(monTool)
290 
291  return result
292 

◆ intList()

def FPGATrackSimAlgorithmConfig.intList (   string)

Definition at line 13 of file FPGATrackSimAlgorithmConfig.py.

13 def intList(string):
14  return [ int(v) for v in string.split(',') if v != '' ]
15 
FPGATrackSimHoughTransformTool
Definition: FPGATrackSimHoughTransformTool.h:90
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
FPGATrackSimAlgorithmConfig.addLRTDoubletFPGATrackSimool
def addLRTDoubletFPGATrackSimool(algo_tag)
Definition: FPGATrackSimAlgorithmConfig.py:235
FPGATrackSimAlgorithmConfig.addHough_d0phi0_Tool
def addHough_d0phi0_Tool(map_tag, algo_tag, doHitTracing)
Definition: FPGATrackSimAlgorithmConfig.py:125
GenericMonitoringTool
Definition: GenericMonitoringTool.h:53
FPGATrackSimAlgorithmConfig.addHoughTool
def addHoughTool(map_tag, algo_tag, doHitTracing)
Definition: FPGATrackSimAlgorithmConfig.py:51
FPGATrackSimAlgorithmConfig.floatList
def floatList(floatStr)
Definition: FPGATrackSimAlgorithmConfig.py:16
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
FPGATrackSimAlgorithmConfig.applyTag
def applyTag(obj, tag)
Definition: FPGATrackSimAlgorithmConfig.py:23
FPGATrackSimHoughTransform_d0phi0_Tool
Definition: FPGATrackSimHoughTransform_d0phi0_Tool.h:38
FPGATrackSimAlgorithmConfig.FPGATrackSimLogicalHitsProcessAlgMonitoringCfg
def FPGATrackSimLogicalHitsProcessAlgMonitoringCfg(flags)
Definition: FPGATrackSimAlgorithmConfig.py:246
FPGATrackSimAlgorithmConfig.intList
def intList(string)
Definition: FPGATrackSimAlgorithmConfig.py:13
FPGATrackSimHough1DShiftTool
Definition: FPGATrackSimHough1DShiftTool.h:84
FPGATrackSimRoadUnionTool
Definition: FPGATrackSimRoadUnionTool.h:24
FPGATrackSimAlgorithmConfig.addHough1DShiftTool
def addHough1DShiftTool(map_tag, algo_tag)
Definition: FPGATrackSimAlgorithmConfig.py:190
str
Definition: BTagTrackIpAccessor.cxx:11
FPGATrackSimLLPDoubletHoughTransformTool
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:26
readCCLHist.float
float
Definition: readCCLHist.py:83