Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
FPGATrackSimSpacepointRoadFilterTool Class Reference

#include <FPGATrackSimSpacepointRoadFilterTool.h>

Inheritance diagram for FPGATrackSimSpacepointRoadFilterTool:
Collaboration diagram for FPGATrackSimSpacepointRoadFilterTool:

Public Member Functions

virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual StatusCode filterRoads (std::vector< std::shared_ptr< const FPGATrackSimRoad >> &prefilter_roads, std::vector< std::shared_ptr< const FPGATrackSimRoad >> &postfilter_roads) override
 

Private Member Functions

bool splitRoad (FPGATrackSimRoad *initial_road)
 
unsigned setSector (FPGATrackSimRoad &road)
 
unsigned findUnique (std::vector< std::shared_ptr< const FPGATrackSimHit >> &sp_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &sp_out, std::vector< std::shared_ptr< const FPGATrackSimHit >> &unique_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &unique_out, std::vector< std::shared_ptr< const FPGATrackSimHit >> &new_sp_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &new_sp_out)
 

Private Attributes

ServiceHandle< IFPGATrackSimMappingSvcm_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"}
 
ServiceHandle< IFPGATrackSimBankSvcm_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"}
 
Gaudi::Property< unsigned > m_threshold {this, "threshold", 0, "Minimum number of hit layers to accept as a road (inclusive"}
 
Gaudi::Property< unsigned > m_minSpacePlusPixel {this, "minSpacePlusPixel", 0, "Minimum number of '2D' hits to accept as a road"}
 
Gaudi::Property< unsigned > m_minSpacePlusPixel2 {this, "minSpacePlusPixel2", 0, "Minimum number of '2D' hits to accept as a road for 2nd stage"}
 
Gaudi::Property< bool > m_filtering {this, "filtering", 0, "Filter out unpaired strip hits"}
 
Gaudi::Property< bool > m_setSectors {this, "setSectors", true, "Should the bank service be used to set sectors."}
 
Gaudi::Property< bool > m_isSecondStage {this, "isSecondStage", false, "Is this the second stage?"}
 
std::vector< FPGATrackSimRoadm_postfilter_roads
 
TH1I * m_inputRoads {nullptr}
 
TH1I * m_badRoads {nullptr}
 

Detailed Description

Definition at line 39 of file FPGATrackSimSpacepointRoadFilterTool.h.

Member Function Documentation

◆ filterRoads()

StatusCode FPGATrackSimSpacepointRoadFilterTool::filterRoads ( std::vector< std::shared_ptr< const FPGATrackSimRoad >> &  prefilter_roads,
std::vector< std::shared_ptr< const FPGATrackSimRoad >> &  postfilter_roads 
)
overridevirtual

Definition at line 54 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

54  {
55  // Record the number of input roads and roads with problems.
56  int badRoads = 0;
57  if (prefilter_roads.size() > 0) {
58  m_inputRoads->Fill(prefilter_roads.size());
59  }
60 
61  // Clear the underlying memory for the filtered roads.
62  postfilter_roads.clear();
63  m_postfilter_roads.clear();
64  if (prefilter_roads.size() == 0) {
65  return StatusCode::SUCCESS;
66  }
67 
68 
69  // This tool takes a road and checks to see if there are any layers containing
70  // both spacepoints and unpaired strip hits. If so, it splits the road into
71  // multiple roads as many times as needed to remove this ambiguity, such that
72  // every layer in each created road contains *only* spacepoints or hits, but
73  // not both. Then we can match each new road unambiguously to a single set of
74  // spacepoint-dependent fit constants.
75  for (auto & road : prefilter_roads) {
76  std::shared_ptr<FPGATrackSimRoad> nonConstRoad = std::const_pointer_cast<FPGATrackSimRoad>(road);
77  bool success = splitRoad(nonConstRoad.get());
78  road = nonConstRoad;
79  if (!success) {
80  badRoads += 1;
81  }
82  }
83 
84  m_badRoads->Fill(badRoads);
85 
86  // copy roads to outputs - borrowed from the eta pattern filter.
87  postfilter_roads.reserve(m_postfilter_roads.size());
89  postfilter_roads.emplace_back(std::make_shared<const FPGATrackSimRoad>(r));
90 
91  return StatusCode::SUCCESS;
92 }

◆ finalize()

StatusCode FPGATrackSimSpacepointRoadFilterTool::finalize ( )
overridevirtual

Definition at line 45 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

46 {
47  ATH_MSG_DEBUG("Spacepoint road filter: processed average of " << m_inputRoads->GetMean() << " input roads, found average of " << m_badRoads->GetMean() << " bad roads per event.");
48  return StatusCode::SUCCESS;
49 }

◆ findUnique()

unsigned FPGATrackSimSpacepointRoadFilterTool::findUnique ( std::vector< std::shared_ptr< const FPGATrackSimHit >> &  sp_in,
std::vector< std::shared_ptr< const FPGATrackSimHit >> &  sp_out,
std::vector< std::shared_ptr< const FPGATrackSimHit >> &  unique_in,
std::vector< std::shared_ptr< const FPGATrackSimHit >> &  unique_out,
std::vector< std::shared_ptr< const FPGATrackSimHit >> &  new_sp_in,
std::vector< std::shared_ptr< const FPGATrackSimHit >> &  new_sp_out 
)
private

Definition at line 325 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

327  {
328 
329  std::map<std::tuple<float, float, float>, std::shared_ptr<const FPGATrackSimHit>> merged_map;
330  std::tuple<float, float, float> coords;
331 
332  // Loop over the inner spacepoints and fill the (x,y,z)->hit map.
333  unsigned num_unique = 0;
334  for (const auto& spacepoint : sp_in) {
335  coords = {spacepoint->getX(), spacepoint->getY(), spacepoint->getZ()};
336  merged_map.try_emplace(coords, spacepoint);
337  }
338 
339  // Loop over the outer spacepoints. If a hit is *not* in the map already,
340  // then it's unique. In which case we either convert it back to a normal hit
341  // and add it to the "unique_out" vector, or we
342  for (auto& spacepoint : sp_out) {
343  coords = {spacepoint->getX(), spacepoint->getY(), spacepoint->getZ()};
344  if (merged_map.count(coords) == 0) {
345  merged_map.emplace(coords, spacepoint);
346  if (!m_filtering) {
347  std::unique_ptr<const FPGATrackSimHit> original = std::make_unique<FPGATrackSimHit>(spacepoint->getOriginalHit());
348  unique_out.push_back(std::move(original));
349  }
350  num_unique += 1;
351  } else {
352  new_sp_out.push_back(spacepoint);
353  // Remove this from the map to mark that we found it.
354  merged_map.erase(coords);
355  }
356  }
357 
358  // Now loop over the inner hits a second time, and find the unique entries.
359  // At this point, if it IS present in the map, it's a unique entry.
360  for (auto& spacepoint : sp_in) {
361  coords = {spacepoint->getX(), spacepoint->getY(), spacepoint->getZ()};
362  if (merged_map.count(coords) != 0) {
363  if (!m_filtering) {
364  std::unique_ptr<const FPGATrackSimHit> original = std::make_unique<FPGATrackSimHit>(spacepoint->getOriginalHit());
365  unique_in.push_back(std::move(original));
366  }
367  num_unique += 1;
368  } else {
369  new_sp_in.push_back(spacepoint);
370  }
371  }
372 
373  return num_unique;
374 }

◆ initialize()

StatusCode FPGATrackSimSpacepointRoadFilterTool::initialize ( )
overridevirtual

Definition at line 31 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

32 {
33  // Retrieve info
34  ATH_CHECK(m_FPGATrackSimMapping.retrieve());
36 
37  // This should be done properly through the monitors, later.
38  m_inputRoads = new TH1I((m_isSecondStage) ? "srft_input_roads2" : "srft_input_roads", "srft_input_roads", 1000, -0.5, 1000-0.5);
39  m_badRoads = new TH1I((m_isSecondStage) ? "srft_bad_roads2" : "srft_bad_roads", "srft_bad_roads", 1000, -0.5, 1000-0.5);
40  ATH_MSG_INFO("Configuring SPRT for " << m_isSecondStage);
41 
42  return StatusCode::SUCCESS;
43 }

◆ setSector()

unsigned FPGATrackSimSpacepointRoadFilterTool::setSector ( FPGATrackSimRoad road)
private

Definition at line 284 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

284  {
285  // We've now removed any ambiguity, and so can assign the road's sector.
286  int sectorbin = road.getSectorBin();
287  std::vector<module_t> modules;
288 
289  ATH_MSG_DEBUG("Road has sector bin ID: " << sectorbin << ", layers: " << road.getNLayers());
290  unsigned num_pixel = 0;
291  unsigned num_spacepoints = 0;
292  for (unsigned int il = 0; il < road.getNLayers(); il++) {
293  if (road.getNHits_layer()[il] == 0) {
294  modules.push_back(-1);
295  } else if (road.getNHits_layer()[il] == 1 && road.getHits(il)[0]->getHitType() == HitType::wildcard) {
296  modules.push_back(-1);
297  //ATH_MSG_INFO(" modules[" << il << "] = -1");
298  } else {
299  // Add 100 to the sector bin if this layer contains spacepoints.
300  // We know at this stage that a layer will only have spacepoints or hits
301  // so we can just check teh first hit.
302  bool is_spacepoint = (road.getHits(il)[0]->getHitType() == HitType::spacepoint);
303  bool is_pixel = (road.getHits(il)[0]->isPixel());
304  modules.push_back(is_spacepoint ? sectorbin + fpgatracksim::SPACEPOINT_SECTOR_OFFSET : sectorbin);
305  //ATH_MSG_INFO(" modules[" << il << "] = " << (is_spacepoint ? 100+sectorbin : sectorbin));
306  if (is_spacepoint) {
307  num_spacepoints += 1;
308  }
309  if (is_pixel) {
310  num_pixel += 1;
311  }
312  }
313  }
314 
315  unsigned numSpacePlusPixel = (num_spacepoints/2) + num_pixel;
316  if (m_setSectors) {
317  const FPGATrackSimSectorBank* sectorbank = m_isSecondStage ? m_FPGATrackSimBankSvc->SectorBank_2nd() : m_FPGATrackSimBankSvc->SectorBank_1st();
318  // Written a bit unintuitively, but the "default" should be that it's not second stage
319  // NOTE fix this when we add second stage roads back.
320  road.setSector(sectorbank->findSector(modules));
321  }
322  return numSpacePlusPixel;
323 }

◆ splitRoad()

bool FPGATrackSimSpacepointRoadFilterTool::splitRoad ( FPGATrackSimRoad initial_road)
private

Definition at line 94 of file FPGATrackSimSpacepointRoadFilterTool.cxx.

94  {
95 
96  // Loop through the initial road, keeping track of the spacepoints and single hits as we go.
97  std::map<size_t, std::vector<std::shared_ptr<const FPGATrackSimHit>>> strip_hits;
98  std::map<size_t, std::vector<std::shared_ptr<const FPGATrackSimHit>>> inner_spacepoints;
99  std::map<size_t, std::vector<std::shared_ptr<const FPGATrackSimHit>>> outer_spacepoints;
100 
101  bool retval = true;
102  // Loop over each pair of strip layers.
103  for (size_t layer = 0; layer < initial_road->getNLayers(); layer++) {
104  // Do nothing for pixel layers.
105  if (m_isSecondStage){
106  if(m_FPGATrackSimMapping->PlaneMap_2nd(initial_road->getSubRegion())->isPixel(layer)){
107  continue;
108  }
109  }
110  else if (m_FPGATrackSimMapping->PlaneMap_1st(initial_road->getSubRegion())->isPixel(layer)) {
111  continue;
112  }
113 
114  // Get the hits in these two layers, split by whether or not they are SPs.
115  std::vector<std::shared_ptr<const FPGATrackSimHit>> strip_hits_in;
116  std::vector<std::shared_ptr<const FPGATrackSimHit>> spacepoints_in;
117  const std::vector<std::shared_ptr<const FPGATrackSimHit>> hits_in = initial_road->getHits(layer);
118  for (auto& hit : hits_in) {
119  if (hit->getHitType() == HitType::spacepoint) {
120  spacepoints_in.push_back(hit);
121  } else {
122  strip_hits_in.push_back(hit);
123  }
124  }
125 
126  // Do the same for the next layer.
127  std::vector<std::shared_ptr<const FPGATrackSimHit>> strip_hits_out;
128  std::vector<std::shared_ptr<const FPGATrackSimHit>> spacepoints_out;
129  const std::vector<std::shared_ptr<const FPGATrackSimHit>> hits_out = initial_road->getHits(layer + 1);
130  for (auto& hit : hits_out) {
131  if (hit->getHitType() == HitType::spacepoint) {
132  spacepoints_out.push_back(hit);
133  } else {
134  strip_hits_out.push_back(hit);
135  }
136  }
137 
138  // Now, we have a potential issue if, for whatever reason, we only have one copy of a duplicated spacepoint.
139  // I wrote this kind of clunky logic to find and fix this; where "fix" means either "drop the half-spacepoint"
140  // or "convert it back to an unpaired strip hit" depending on whether filering is turned on.
141  // In principle the only way this can happen legitimately is in the eta pattern filter; if it happens
142  // for any other reason it's a bug.
143 
144  std::vector<std::shared_ptr<const FPGATrackSimHit>> new_sp_in;
145  std::vector<std::shared_ptr<const FPGATrackSimHit>> new_sp_out;
146  unsigned num_unique = findUnique(spacepoints_in, spacepoints_out, strip_hits_in, strip_hits_out, new_sp_in, new_sp_out);
147 
148  if (num_unique > 0) {
149  // This can now only happen due to eta pattern filtering, so don't drop the road, but leave a way to track.
150  retval = false;
151 
152  // Update the spacepoint vectors.
153  spacepoints_in = new_sp_in;
154  spacepoints_out = new_sp_out;
155 
156  // Now update the two layers accordingly, having converted invalid SPs back to paired hits.
157  std::vector<std::shared_ptr<const FPGATrackSimHit>> new_all_in = spacepoints_in;
158  new_all_in.insert(std::end(new_all_in), std::begin(strip_hits_in), std::end(strip_hits_in));
159  initial_road->setHits(layer, std::move(new_all_in));
160 
161  std::vector<std::shared_ptr<const FPGATrackSimHit>> new_all_out = spacepoints_out;
162  new_all_out.insert(std::end(new_all_out), std::begin(strip_hits_out), std::end(strip_hits_out));
163  initial_road->setHits(layer + 1, std::move(new_all_out));
164 
165  // Debug message.
166  ATH_MSG_DEBUG("Found inconsistent number of spacepoints in road with x = " << initial_road->getXBin() << ", y = " << initial_road->getYBin());
167  }
168 
169  strip_hits.emplace(layer, strip_hits_in);
170  strip_hits.emplace(layer + 1, strip_hits_out);
171 
172  // Update our spacepoint maps now that any uniques have been eliminated.
173  inner_spacepoints.emplace(layer, spacepoints_in);
174  outer_spacepoints.emplace(layer+1, spacepoints_out);
175  if (spacepoints_in.size() != spacepoints_out.size()) {
176  ATH_MSG_WARNING("Handling of unique spacepoints failed, " << spacepoints_in.size() << " != " << spacepoints_out.size());
177  return false;
178  }
179 
180  layer += 1;
181  }
182 
183  // Create a copy of the initial road. this is our first working road.
184  std::vector<FPGATrackSimRoad> working_roads;
185  FPGATrackSimRoad new_road(*initial_road);
186  working_roads.push_back(new_road);
187 
188  // Now loop through the processed spacepoints.
189  for (auto& entry : inner_spacepoints) {
190  size_t layer = entry.first;
191 
192  // Look up the associated strip hits.
193  std::vector<std::shared_ptr<const FPGATrackSimHit>> strip_hits_in = strip_hits[layer];
194  std::vector<std::shared_ptr<const FPGATrackSimHit>> strip_hits_out = strip_hits[layer + 1];
195 
196  ATH_MSG_DEBUG("Road (x = " << new_road.getXBin() << ", y = " << new_road.getYBin() << ") has merged spacepoints: " << entry.second.size() << ", unpaired inner hits: " << strip_hits_in.size() << ", unpaired outer hits: " << strip_hits_out.size());
197 
198  // If we have a nonzero number of hits AND spacepoints in this pair of layers,
199  // then we'll need to split the road.
200  if ((strip_hits_in.size() > 0 && entry.second.size() > 0) ||
201  (strip_hits_out.size() > 0 && entry.second.size() > 0)) {
202 
203  // If there is only a strip hit in one of the two layers, we'll need to add a wildcard.
204  int wildcard_layer = -1;
205  if (strip_hits_in.size() == 0 || strip_hits_out.size() == 0) {
206  std::unique_ptr<FPGATrackSimHit> wcHit = std::make_unique<FPGATrackSimHit>();
208  wcHit->setDetType(m_isSecondStage ? m_FPGATrackSimMapping->PlaneMap_2nd(new_road.getSubRegion())->getDetType(layer) : m_FPGATrackSimMapping->PlaneMap_1st(new_road.getSubRegion())->getDetType(layer));
209  if (strip_hits_in.size() == 0) {
210  wildcard_layer = layer;
211  wcHit->setLayer(wildcard_layer);
212  strip_hits_in.push_back(std::move(wcHit));
213  } else {
214  wildcard_layer = layer + 1;
215  wcHit->setLayer(wildcard_layer);
216  strip_hits_out.push_back(std::move(wcHit));
217  }
218  }
219 
220  // This could probably be expressed with an iterator, but it's a little cleaner
221  // this way. we want to replace each working_road with two new working roads.
222  unsigned num_working = working_roads.size();
223  for (unsigned i = 0; i < num_working; i++) {
224  // For each working road, create two new ones!
225  FPGATrackSimRoad strips_only(working_roads[i]);
226  FPGATrackSimRoad spacepoints_only(working_roads[i]);
227 
228  // Update their hits in these layers accordingly.
229  strips_only.setHits(layer, std::vector<std::shared_ptr<const FPGATrackSimHit>>(strip_hits_in));
230  strips_only.setHits(layer + 1, std::vector<std::shared_ptr<const FPGATrackSimHit>>(strip_hits_out));
231  spacepoints_only.setHits(layer, std::vector<std::shared_ptr<const FPGATrackSimHit>>(entry.second));
232  spacepoints_only.setHits(layer + 1, std::vector<std::shared_ptr<const FPGATrackSimHit>>(outer_spacepoints[layer + 1]));
233 
234  // If we inserted a wildcard hit previously, update the WC layers accordingly
235  // in the strips_only road.
236  if (wildcard_layer != -1) {
237  layer_bitmask_t wc_layers = strips_only.getWCLayers();
238  wc_layers |= (0x1 << wildcard_layer);
239  strips_only.setWCLayers(wc_layers);
240 
241  layer_bitmask_t hit_layers = strips_only.getHitLayers();
242  hit_layers -= (0x1 << wildcard_layer);
243  if (strips_only.getHitLayers() < (unsigned)(0x1 << wildcard_layer)) {
244  ATH_MSG_WARNING("Found weird problem: current layers is " << strips_only.getHitLayers() << ", adding wildcard in layer " << wildcard_layer);
245  }
246  strips_only.setHitLayers(hit_layers);
247  }
248 
249  // Because we are only iterating up to the *original* size, we can add new
250  // entries to the end like this.
251  // Require that we only keep roads that have enough hits to save time.
252  working_roads[i] = spacepoints_only;
253  if (strips_only.getNHitLayers() >= m_threshold) {
254  working_roads.push_back(strips_only);
255  }
256  }
257  }
258  }
259 
260  ATH_MSG_DEBUG("Created " << working_roads.size() << " new roads in spacepoint road filter.");
261 
262  // Now, any finalized roads need to have their sectors set/updated, and added to the output vector.
263  for (auto road : working_roads) {
264  unsigned numSpacePlusPixel = setSector(road);
265  ATH_MSG_DEBUG("This road has sector = " << road.getSector() << " and q/pt = " << road.getX() << ", x = " << road.getY());
266  ATH_MSG_DEBUG("numSpacePlusPixel = " << numSpacePlusPixel << ", nhitlayers = " << road.getNHitLayers());
267 
268  // Filter any roads that don't have enough real hits.
269  if (road.getNHitLayers() < m_threshold) {
270  continue;
271  }
272 
273  // Filter any roads that don't have enough spacepoints + pixel hits.
274  if (numSpacePlusPixel < m_minSpacePlusPixel) {
275  continue;
276  }
277 
278  m_postfilter_roads.push_back(road);
279  }
280 
281  return retval;
282 }

Member Data Documentation

◆ m_badRoads

TH1I* FPGATrackSimSpacepointRoadFilterTool::m_badRoads {nullptr}
private

Definition at line 80 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_filtering

Gaudi::Property<bool> FPGATrackSimSpacepointRoadFilterTool::m_filtering {this, "filtering", 0, "Filter out unpaired strip hits"}
private

Definition at line 66 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_FPGATrackSimBankSvc

ServiceHandle<IFPGATrackSimBankSvc> FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"}
private

Definition at line 58 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_FPGATrackSimMapping

ServiceHandle<IFPGATrackSimMappingSvc> FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"}
private

Definition at line 57 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_inputRoads

TH1I* FPGATrackSimSpacepointRoadFilterTool::m_inputRoads {nullptr}
private

Definition at line 79 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_isSecondStage

Gaudi::Property<bool> FPGATrackSimSpacepointRoadFilterTool::m_isSecondStage {this, "isSecondStage", false, "Is this the second stage?"}
private

Definition at line 68 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_minSpacePlusPixel

Gaudi::Property<unsigned> FPGATrackSimSpacepointRoadFilterTool::m_minSpacePlusPixel {this, "minSpacePlusPixel", 0, "Minimum number of '2D' hits to accept as a road"}
private

Definition at line 64 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_minSpacePlusPixel2

Gaudi::Property<unsigned> FPGATrackSimSpacepointRoadFilterTool::m_minSpacePlusPixel2 {this, "minSpacePlusPixel2", 0, "Minimum number of '2D' hits to accept as a road for 2nd stage"}
private

Definition at line 65 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_postfilter_roads

std::vector<FPGATrackSimRoad> FPGATrackSimSpacepointRoadFilterTool::m_postfilter_roads
private

Definition at line 72 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_setSectors

Gaudi::Property<bool> FPGATrackSimSpacepointRoadFilterTool::m_setSectors {this, "setSectors", true, "Should the bank service be used to set sectors."}
private

Definition at line 67 of file FPGATrackSimSpacepointRoadFilterTool.h.

◆ m_threshold

Gaudi::Property<unsigned> FPGATrackSimSpacepointRoadFilterTool::m_threshold {this, "threshold", 0, "Minimum number of hit layers to accept as a road (inclusive"}
private

Definition at line 63 of file FPGATrackSimSpacepointRoadFilterTool.h.


The documentation for this class was generated from the following files:
PlotCalibFromCool.il
il
Definition: PlotCalibFromCool.py:381
beamspotman.r
def r
Definition: beamspotman.py:676
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimSpacepointRoadFilterTool.h:57
FPGATrackSimRoad::getSubRegion
int getSubRegion() const
Definition: FPGATrackSimRoad.h:84
FPGATrackSimRoad::getHits
const std::vector< std::shared_ptr< const FPGATrackSimHit > > & getHits(size_t layer) const
Definition: FPGATrackSimRoad.h:100
fpgatracksim::SPACEPOINT_SECTOR_OFFSET
constexpr int SPACEPOINT_SECTOR_OFFSET
Definition: FPGATrackSimConstants.h:22
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
FPGATrackSimSpacepointRoadFilterTool::m_setSectors
Gaudi::Property< bool > m_setSectors
Definition: FPGATrackSimSpacepointRoadFilterTool.h:67
FPGATrackSimSpacepointRoadFilterTool::m_minSpacePlusPixel
Gaudi::Property< unsigned > m_minSpacePlusPixel
Definition: FPGATrackSimSpacepointRoadFilterTool.h:64
FPGATrackSimRoad::getSectorBin
int getSectorBin() const
Definition: FPGATrackSimRoad.h:93
HitType::spacepoint
@ spacepoint
FPGATrackSimSpacepointRoadFilterTool::splitRoad
bool splitRoad(FPGATrackSimRoad *initial_road)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:94
FPGATrackSimRoad::getNHits_layer
std::vector< size_t > getNHits_layer() const
Definition: FPGATrackSimRoad.cxx:27
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
FPGATrackSimSpacepointRoadFilterTool::setSector
unsigned setSector(FPGATrackSimRoad &road)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:284
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
HitType::wildcard
@ wildcard
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
FPGATrackSimHit::setDetType
void setDetType(SiliconTech detType)
Definition: FPGATrackSimHit.h:55
FPGATrackSimSpacepointRoadFilterTool::m_isSecondStage
Gaudi::Property< bool > m_isSecondStage
Definition: FPGATrackSimSpacepointRoadFilterTool.h:68
FPGATrackSimSpacepointRoadFilterTool::m_postfilter_roads
std::vector< FPGATrackSimRoad > m_postfilter_roads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:72
FPGATrackSimSectorBank::findSector
sector_t findSector(std::vector< module_t > const &modules) const
Definition: FPGATrackSimSectorBank.cxx:121
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimSpacepointRoadFilterTool::m_filtering
Gaudi::Property< bool > m_filtering
Definition: FPGATrackSimSpacepointRoadFilterTool.h:66
FPGATrackSimSpacepointRoadFilterTool::m_badRoads
TH1I * m_badRoads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:80
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimSpacepointRoadFilterTool::m_threshold
Gaudi::Property< unsigned > m_threshold
Definition: FPGATrackSimSpacepointRoadFilterTool.h:63
FPGATrackSimRoad::getXBin
unsigned getXBin() const
Definition: FPGATrackSimRoad.h:85
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimSectorBank
Definition: FPGATrackSimSectorBank.h:32
FPGATrackSimRoad::getYBin
unsigned getYBin() const
Definition: FPGATrackSimRoad.h:86
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
FPGATrackSimSpacepointRoadFilterTool::findUnique
unsigned findUnique(std::vector< std::shared_ptr< const FPGATrackSimHit >> &sp_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &sp_out, std::vector< std::shared_ptr< const FPGATrackSimHit >> &unique_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &unique_out, std::vector< std::shared_ptr< const FPGATrackSimHit >> &new_sp_in, std::vector< std::shared_ptr< const FPGATrackSimHit >> &new_sp_out)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:325
FPGATrackSimSpacepointRoadFilterTool::m_inputRoads
TH1I * m_inputRoads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:79
FPGATrackSimHit::setLayer
void setLayer(unsigned v)
Definition: FPGATrackSimHit.h:92
FPGATrackSimRoad::setSector
void setSector(sector_t sector)
Definition: FPGATrackSimRoad.h:60
FPGATrackSimRoad::getNLayers
size_t getNLayers() const
Definition: FPGATrackSimRoad.h:107
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimRoad::setHits
void setHits(std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &&hits)
Definition: FPGATrackSimRoad.cxx:141
FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimSpacepointRoadFilterTool.h:58
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:31
FPGATrackSimHit::setHitType
void setHitType(HitType type)
Definition: FPGATrackSimHit.h:54