ATLAS Offline Software
FPGATrackSimGenScanMonitoring.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
14 #include "TH1D.h"
15 #include "TH2D.h"
16 #include "TTree.h"
17 #include <bit>
18 
20 
21 FPGATrackSimGenScanMonitoring::FPGATrackSimGenScanMonitoring(const std::string& algname, const std::string &name, const IInterface *ifc) :
22  AthAlgTool(algname, name, ifc)
23 {
24 }
25 
27 {
28  // Dump the configuration to make sure it propagated through right
29  auto props = this->getProperties();
30  for( Gaudi::Details::PropertyBase* prop : props ) {
31  if (prop->ownerTypeName()==this->type()) {
32  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
33  }
34  }
35 
36  ATH_CHECK(m_tHistSvc.retrieve());
37 
39 
40  return StatusCode::SUCCESS;
41 
42 }
43 
45 {
46  m_binnedhits = binnedhits;
47  const FPGATrackSimBinTool &bintool = m_binnedhits->getBinTool();
48  const IFPGATrackSimBinDesc* bindesc = bintool.binDesc();
49  int nLyrs = m_binnedhits->getNLayers();
50 
51  // This is because if you change the binning class you can change what axis
52  // ranges you need for the plotting
53  ATH_MSG_INFO("Hist scales phi: " << m_phiScale << " eta: " << m_etaScale << " dr:" << m_drScale);
54 
56 
57  // Truth Parameter distributions, bounds should cover 3x nominal range
58  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++) {
60  m_truthpars_hists[i], ("truth" + bindesc->parNames(i)).c_str(),
61  (";" + m_binnedhits->getBinTool().binDesc()->parNames(i) + ";").c_str(), 200,
64  }
65 
66  // All Hit level histograms
68  "RZ_allhits", "; Z [mm] ; R [mm] ", 500, -2000, 2000, 500, 0, 500));
69 
71  "phiResidual", "phi residual [mm]", 1000, -10, 10));
73  "etaResidual", "eta residual [mm]", 1000, -10, 10));
74 
76  "phiTrueBinShift", "phi TrueBinShift [mm]", 1000, -10, 10));
78  "etaTrueBinShift", "eta TrueBinShift [mm]", 1000, -10, 10));
79 
80  // Data flow hists
81  ATH_CHECK(
82  makeAndRegHist(m_inputHits, "InputHits", ";Input Hits", 200, 0, 100000));
84  &bintool.stepNames(), "hitsPerStepBin_",
85  "; Hits per bin in step", 1000, 0, 1000));
86  ATH_CHECK(makeAndRegHist(m_pairs, "pairs", ";pairs;", 100, 0, 500));
87  ATH_CHECK(makeAndRegHist(m_pairinghits, "pairinghits", ";Pairing Hits;", 50,
88  0, 50));
89  ATH_CHECK(makeAndRegHist(m_filteredpairs, "filteredpairs", "filteredpairs",
90  100, 0, 500));
91  ATH_CHECK(makeAndRegHist(m_pairsets, "pairsets", ";pairsets;", 100, 0, 100));
92  ATH_CHECK(makeAndRegHist(m_numLyrsPerBin, "numLyrsPerBin",
93  ";#Hit Layers per Bin", nLyrs + 1, 0, nLyrs + 1));
94  ATH_CHECK(makeAndRegHist(m_hitsPerLayer, "hitsPerLayer", "; Layer ; Hits ",
95  nLyrs, 0, nLyrs));
96  ATH_CHECK(makeAndRegHist(m_hitsPerLayer2D, "hitsPerLayer2D",
97  "; Layer ; Hits ", nLyrs, 0, nLyrs, 20, 0,
98  m_isSingleParticle ? 20 : 10000));
99 
100 
101  // Road statistics
102  ATH_CHECK(makeAndRegHist(m_roadFilterFlow , "roadFilterFlow" , "road filter flow", 10, 0, 10));
103  ATH_CHECK(makeAndRegHist(m_phiShift_road, "phiShift_road", ";Phi Shift", 2000, -1.0*m_phiScale, m_phiScale));
104  ATH_CHECK(makeAndRegHist(m_etaShift_road, "etaShift_road", ";Eta Shift", 2000, -1.0*m_etaScale, m_etaScale));
105  ATH_CHECK(makeAndRegHist(m_phiShift2D_road, "phiShift2D_road", ";Phi Shift; R",
106  400, -1.0*m_phiScale, m_phiScale, 100, 0, 400));
107  ATH_CHECK(makeAndRegHist(m_etaShift2D_road, "etaShift2D_road", ";Phi Shift; R",
108  400, -1.0*m_etaScale, m_etaScale, 100, 0, 400));
109 
110  ATH_CHECK(makeAndRegHist(m_hitsPerLayer_bin, "HitsPerLayer_bin",
111  "; Layer; Hits in Bin Passing Threshold",
112  nLyrs, 0, nLyrs, 20, 0, 20));
113 
114 
115  // Pair Filter Cuts
116  ATH_CHECK(makeAndRegHist(m_phiOutExtrap, "PhiOutExtrap", ";Phi Out Extrap", 2000, -1.0*m_phiScale, m_phiScale));
117  ATH_CHECK(makeAndRegHist(m_phiInExtrap, "PhiInExtrap", ";Phi In Extrap", 2000, -1.0*m_phiScale, m_phiScale));
118  ATH_CHECK(makeAndRegHist(m_phiOutExtrapCurveLimit, "PhiOutExtrapCurveLimit",
119  ";Phi Out Extrap w/ Curve Limit", 2000, -1.0*m_phiScale, m_phiScale));
120  ATH_CHECK(makeAndRegHist(m_phiInExtrapCurveLimit, "PhiInExtrapCurveLimit",
121  ";Phi In Extrap w/ Curve Limit", 2000, -1.0*m_phiScale, m_phiScale));
122  ATH_CHECK(makeAndRegHist(m_etaOutExtrap, "EtaOutExtrap", ";Eta Out Extrap", 2000, -1.0*m_etaScale, m_etaScale));
123  ATH_CHECK(makeAndRegHist(m_etaInExtrap, "EtaInExtrap", ";Eta In Extrap", 2000, -1.0* m_etaScale, m_etaScale));
124  ATH_CHECK(makeAndRegHist(m_deltaPhi, "DeltaPhi", ";Delta Phi [rad]", 2000, -1.0*m_phiScale, m_phiScale));
125  ATH_CHECK(makeAndRegHist(m_deltaEta, "DeltaEta", ";Delta Eta [rad]", 2000, -1.0*m_etaScale, m_etaScale));
126  ATH_CHECK(makeAndRegHist(m_deltaPhiDR, "DeltaPhiDR", ";Delta Phi / Delta R", 2000, -0.1 * m_phiScale, 0.1 * m_phiScale));
127  ATH_CHECK(makeAndRegHist(m_deltaEtaDR, "DeltaEtaDR", ";Delta Eta / Delta R", 2000, -0.1 * m_phiScale, 0.1 * m_phiScale));
128  ATH_CHECK(makeAndRegHistVector(m_deltaPhiByLyr, nLyrs, NULL, "DeltaPhiDR", ";Delta Phi / Delta R", 2000, -0.1 * m_phiScale, 0.1 * m_phiScale));
129  ATH_CHECK(makeAndRegHistVector(m_deltaEtaByLyr, nLyrs, NULL, "DeltaEtaDR", ";Delta Eta / Delta R", 2000, -0.1 * m_phiScale, 0.1 * m_phiScale));
130 
131  // Pair Match Cuts
134  "PairSetMatchPhi", ";PairSet Match Phi [mm]", 500,
138  "PairSetMatchEta", ";PairSet Match Eta [mm]", 500,
142  "DeltaDeltaPhi", ";DeltaDelta Phi [mm]", 500, -1.0*m_phiScale / m_drScale,
143  m_phiScale / m_drScale));
146  "DeltaDeltaEta", ";DeltaDelta Eta [mm]", 500, -1.0 * m_etaScale / m_drScale,
147  1.0 * m_etaScale / m_drScale));
149  &m_twoPairClasses, "PhiCurvature",
150  ";Phi Curvature ", 5000,
151  -1.0 * m_phiScale / m_drScale / m_drScale,
152  1.0 * m_phiScale / m_drScale / m_drScale));
154  &m_twoPairClasses, "EtaCurvature",
155  ";Eta Curvature ", 5000,
156  -1.0 * m_etaScale / m_drScale / m_drScale,
157  1.0 * m_etaScale / m_drScale / m_drScale));
159  &m_twoPairClasses, "DeltaPhiCurvature",
160  ";Delta Phi Curvature ", 5000,
161  -1.0 * m_phiScale / m_drScale / m_drScale,
162  1.0 * m_phiScale / m_drScale / m_drScale));
164  &m_twoPairClasses, "DeltaEtaCurvature",
165  ";Delta Eta Curvature ", 500,
166  -0.1 * m_etaScale / m_drScale / m_drScale,
167  0.1 * m_etaScale / m_drScale / m_drScale));
169  &m_twoPairClasses, "PhiOutExtrapCurved",
170  ";Phi Out Extrap Curved", 2000, -1.0*m_phiScale,
171  m_phiScale));
173  &m_twoPairClasses, "PhiInExtrapCurved",
174  ";Phi In Extrap Curved ", 2000, -1.0*m_phiScale,
175  m_phiScale));
176  ATH_CHECK(makeAndRegHist(m_pairMatchPhi2D, "PairSetMatchPhi2D",
177  ";PairSet Match Phi vs dRin [mm]", 100, 0, 100, 500,
178  -100.0 * m_phiScale, 100.0 * m_phiScale));
179  ATH_CHECK(makeAndRegHist(m_pairMatchEta2D, "PairSetMatchEta2D",
180  ";PairSet Match Eta vs dRin [mm]", 100, 0, 100, 500,
181  -100.0 * m_etaScale, 100.0 * m_etaScale));
182 
183  ATH_CHECK(makeAndRegHist(m_unpairedHits, "UnpairedHits", "; Stage ; Unpaired Hits" , nLyrs+1, 0, nLyrs+1, 20, 0, 20));
184  ATH_CHECK(makeAndRegHist(m_pairsetsIncr, "PairSetsIncr", "; Stage ; Pairsets" , nLyrs+1, 0, nLyrs+1, 20, 0, 20));
185  ATH_CHECK(makeAndRegHist(m_pairsetsHits, "PairSetsHits", "; Stage ; Hits in Pairsets" , nLyrs+1, 0, nLyrs+1, 20, 0, 20));
186  ATH_CHECK(makeAndRegHist(m_totalInputIncr, "TotalInputIncr", "; Stage ; Pairsets+Unpaired" , nLyrs+1, 0, nLyrs+1, 20, 0, 20));
187  ATH_CHECK(makeAndRegHist(m_binStagesIncr, "BinStagesIncr", "; Stage ; Bins at this point" , nLyrs+1, 0, nLyrs+1, 20, 0, 20));
188 
189  return StatusCode::SUCCESS;
190 }
191 
192 
194  ATH_MSG_DEBUG("Booking Layers Study Tree");
195  m_bin_module_tree = new TTree("LayerStudy","LayerStudy");
196  m_bin_module_tree->Branch("bin", &m_tree_bin);
197  m_bin_module_tree->Branch("r", &m_tree_r);
198  m_bin_module_tree->Branch("z", &m_tree_z);
199  m_bin_module_tree->Branch("id", &m_tree_id);
200  m_bin_module_tree->Branch("hash", &m_tree_hash);
201  m_bin_module_tree->Branch("layer", &m_tree_layer);
202  m_bin_module_tree->Branch("side", &m_tree_side);
203  m_bin_module_tree->Branch("etamod", &m_tree_etamod);
204  m_bin_module_tree->Branch("phimod", &m_tree_phimod);
205  m_bin_module_tree->Branch("dettype", &m_tree_dettype);
206  m_bin_module_tree->Branch("detzone", &m_tree_detzone);
207 
209  return StatusCode::SUCCESS;
210 }
212 {
213  m_tree_r.clear();
214  m_tree_z.clear();
215  m_tree_id.clear();
216  m_tree_hash.clear();
217  m_tree_layer.clear();
218  m_tree_side.clear();
219  m_tree_etamod.clear();
220  m_tree_phimod.clear();
221  m_tree_dettype.clear();
222  m_tree_detzone.clear();
223 }
224 
225 
228 }
229 
231  for (auto& bin: m_hitsCntByLayer) { bin =0;}
232 }
233 
234 
235 // This is done at the end of event execution to store any graphs that were created
237 {
238  // Make a vector of pointers to all the eventDispSet instances...
239  std::vector<FPGATrackSimGenScanMonitoring::eventDispSet *> allsets(
243 
244  // Then loop to register them all
245  for (auto& set : allsets) {
246  ATH_CHECK(set->registerGraphs(this));
247  }
248 
249  return StatusCode::SUCCESS;
250 }
251 
252 
255 {
257 
258  m_roadGraph.addEvent(data.hits);
259 
260  if (m_binPlotsActive) {
261  for (auto& hit : data.hits) {
262  m_phiShift_road->Fill(hit.phiShift);
263  m_etaShift_road->Fill(hit.etaShift);
264  m_phiShift2D_road->Fill(hit.phiShift, hit.hitptr->getR());
265  m_etaShift2D_road->Fill(hit.etaShift, hit.hitptr->getR());
266  }
267 
268  // Module mapping and Layer definition studies
269  // first sort hits by r+z radii
270  std::vector<FPGATrackSimBinUtil::StoredHit> sorted_hits = data.hits;
271  std::sort(sorted_hits.begin(), sorted_hits.end(),
272  [](const auto &hit1, const auto &hit2) {
273  return hit1.rzrad() < hit2.rzrad();
274  });
275 
276  // Fill tree
277  m_tree_bin = std::vector<unsigned>(idx);
279  for (auto &hit : sorted_hits) {
280  m_tree_r.push_back(hit.hitptr->getR());
281  m_tree_z.push_back(hit.hitptr->getZ());
282  m_tree_id.push_back(hit.hitptr->getIdentifier());
283  m_tree_hash.push_back(hit.hitptr->getIdentifierHash());
284  m_tree_layer.push_back(hit.hitptr->getLayerDisk());
285  m_tree_side.push_back(hit.hitptr->getSide());
286  m_tree_etamod.push_back(hit.hitptr->getEtaModule());
287  m_tree_phimod.push_back(hit.hitptr->getPhiModule());
288  m_tree_dettype.push_back((int)hit.hitptr->getDetType());
289  m_tree_detzone.push_back((int)hit.hitptr->getDetectorZone());
290  }
291  ATH_MSG_DEBUG("For tree, bin=" << idx << " mods=" << m_tree_hash);
292  m_bin_module_tree->Fill();
293  }
294 }
295 
297  const std::vector<std::vector<const FPGATrackSimBinUtil::StoredHit *> > & hitsByLayer)
298 {
299  for (unsigned lyr = 0; lyr < m_binnedhits->getNLayers(); lyr++)
300  {
301  m_hitsPerLayer_bin->Fill(lyr, hitsByLayer[lyr].size());
302  }
303 }
304 
306  const FPGATrackSimHit *hit) {
307  const IFPGATrackSimBinDesc* bindesc = m_binnedhits->getBinTool().binDesc();
308  m_rZ_allhits[m_binnedhits->getNLayers()]->Fill(hit->getZ(), hit->getR()); // all layer plot
309  m_rZ_allhits[hit->getLayer()]->Fill(hit->getZ(), hit->getR()); // layer specific plot
310  if (m_truthIsValid)
311  {
313  m_etaResidual[hit->getLayer()]->Fill(bindesc->etaResidual(m_truthparset, hit));
315  m_phiResidual[hit->getLayer()]->Fill(bindesc->phiResidual(m_truthparset, hit));
316 
319  m_etaTrueBinShift[m_binnedhits->getNLayers()]->Fill(bindesc->etaResidual(binCenter, hit));
320  m_etaTrueBinShift[hit->getLayer()]->Fill(bindesc->etaResidual(binCenter, hit));
321  m_phiTrueBinShift[m_binnedhits->getNLayers()]->Fill(bindesc->phiResidual(binCenter, hit));
322  m_phiTrueBinShift[hit->getLayer()]->Fill(bindesc->phiResidual(binCenter, hit));
323  }
324  }
325 }
326 
327 
330  const FPGATrackSimGenScanTool::HitPairSet &filteredpairs,
331  bool passedPairFilter) {
332 
333  m_roadFilterFlow->Fill(0);
334  m_pairs->Fill(pairs.pairList.size());
335  m_filteredpairs->Fill(filteredpairs.pairList.size());
336 
337  if (passedPairFilter) {
338  // if passed mark progress in flow histogram and make passed Histogram
339  m_roadFilterFlow->Fill(1);
340  m_passPairFilterGraph.addEvent(filteredpairs.hitlist);
341  } else {
342  // If the true bin didn't pass print some debug and make a lost event
343  // display
344  if (m_binPlotsActive) {
345  ATH_MSG_INFO("lost at pair filter : hit layers = "
346  << filteredpairs.lyrCnt() << " "
347  << std::bitset<16>(filteredpairs.hitLayers));
349  }
350  }
351 }
352 
354  const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits)
355 {
356  m_inputHits->Fill(hits.size());
358 
359  for (auto &step : m_binnedhits->getBinTool().steps()) {
360  for (auto bin : m_binnedhits->binnedHits()[step->stepNum()])
361  m_hitsPerStepBin[step->stepNum()]->Fill(bin.data().hitCnt);
362  }
363 
365  for (unsigned lyr = 0; lyr < m_binnedhits->getNLayers(); lyr++) {
366  unsigned cnt = bin.data().hitsInLyr(lyr);
367  m_hitsPerLayer->Fill(lyr, cnt);
368  m_hitsPerLayer2D->Fill(lyr, cnt);
369  }
370  }
371 }
372 
373 
375  std::vector<FPGATrackSimTruthTrack> const * truthtracks, bool isSingleParticle)
376 {
377  ATH_MSG_DEBUG("In parseTruthInfo ptr = " << truthtracks
378  << " size = " << (truthtracks ? truthtracks->size() : 0));
380  m_truthtracks = truthtracks;
381  m_truthIsValid = false;
382 
383  const IFPGATrackSimBinDesc* bindesc = m_binnedhits->getBinTool().binDesc();
384 
385  if (!m_truthtracks) return;
386  if (m_truthtracks->size() == 0) return;
387 
388  // Convert to binning parameters and find truth bin for each step
389  m_truthpars = (*m_truthtracks)[0].getPars();
393  m_truthbin.clear();
394  for (auto &step : m_binnedhits->getBinTool().steps()) {
395  m_truthbin.push_back(step->binIdx(m_truthparset));
396  }
397 
398  // histogram parameters
399  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++) {
401  }
402 
403  // a closure test
405  ATH_MSG_DEBUG("parset:" << m_truthparset << " " << m_truthpars
406  << " ?= " << recovered << " closure:"
412 
413  // print if there are multiple tracks for debugging single track MC
414  if (m_truthtracks->size() > 1) {
415  for (unsigned i = 0; i < m_truthtracks->size(); i++) {
416  ATH_MSG_INFO("Multiple truth" << i << " of " << m_truthtracks->size()
417  << " " << (*m_truthtracks)[i].getPars());
418  }
419  }
420 
421  // find truth bin for later plotting selections
422  ATH_MSG_DEBUG("truthbin " << m_truthtracks << " " << m_truthtracks->size()
423  << " " << m_truthpars << " " << m_truthbin);
424 
425  // Check if the truth track falls in the binning range
427  ATH_MSG_INFO("Truth out of range");
428  return;
429  }
430 
431  // Check that truth track falls in an actual bin
432  // this should alway pass, except for weird events
433  m_truthIsValid = true;
434  for (auto &step : m_binnedhits->getBinTool().steps()) {
435  if (!step->validBinsFull()[m_truthbin[step->stepNum()]]) {
436  ATH_MSG_INFO("Truth Bin not valid! Step " << step->stepName() << " "
437  << m_truthbin[step->stepNum()]
438  << " : " << m_truthpars);
439  std::vector<FPGATrackSimBinUtil::IdxSet> idxsets =
441  std::vector<unsigned>({0, 1, 2, 3, 4}),
442  m_truthbin[step->stepNum()]);
443  for (FPGATrackSimBinUtil::IdxSet &idxset : idxsets) {
444  ATH_MSG_INFO("Truth Box "
445  << bindesc->parSetToTrackPars(step->binLowEdge(idxset)));
446  }
447  m_truthIsValid = false;
448  }
449  }
450 }
451 
453  std::vector<const FPGATrackSimBinUtil::StoredHit *> const *lastlyr,
454  std::vector<const FPGATrackSimBinUtil::StoredHit *> const *lastlastlyr) {
455 
456  auto size_if_nonzero_ptr =
457  [](std::vector<const FPGATrackSimBinUtil::StoredHit *> const *ptr) {
458  if (ptr) {
459  return int(ptr->size());
460  } else {
461  return 0;
462  }
463  };
464 
465  m_pairinghits->Fill(size_if_nonzero_ptr(lastlyr) +
466  size_if_nonzero_ptr(lastlastlyr));
467 }
468 
470  const FPGATrackSimGenScanTool::HitPair &pair, double r_in, double r_out) {
471  // m_pairs->Fill(pairs.pairList.size());
472  if (m_binPlotsActive) {
473  int lyr = pair.first->hitptr->getLayer();
474  m_deltaPhi->Fill(pair.dPhi());
475  m_deltaEta->Fill(pair.dEta());
476  m_deltaPhiDR->Fill(pair.dPhi() / pair.dR());
477  m_deltaEtaDR->Fill(pair.dEta() / pair.dR());
478  m_deltaPhiByLyr[lyr]->Fill(pair.dPhi());
479  m_deltaEtaByLyr[lyr]->Fill(pair.dEta());
480  m_phiInExtrap->Fill(pair.PhiInExtrap(r_in));
481  m_phiOutExtrap->Fill(pair.PhiOutExtrap(r_out));
482  m_etaInExtrap->Fill(pair.EtaInExtrap(r_in));
483  m_etaOutExtrap->Fill(pair.EtaOutExtrap(r_out));
484  }
485 }
486 
487 // This classifies a pair of pairs into a category for plotting
488 // e.g. are they bewtween hits in the same layer, are there three layers,
489 // if there are three layers are they sequential,...
490 // This is to try to understand some of the structure of the
491 // pair matching distributions
494  const FPGATrackSimGenScanTool::HitPair &lastpair) const {
495  unsigned minlyr = std::min(lastpair.first->layer, lastpair.second->layer);
496  minlyr = std::min(minlyr, pair.first->layer);
497  minlyr = std::min(minlyr, pair.second->layer);
498 
499  unsigned hitbits =
500  ((1 << lastpair.first->layer) | (1 << lastpair.second->layer) |
501  (1 << pair.first->layer) | (1 << pair.second->layer));
502  hitbits = hitbits >> minlyr; // now bit list starts with lowest hit layer
503 
504  int hitlyrs = std::popcount(hitbits);
505 
506  assert(hitbits & 0x1);
507 
508  unsigned retv = 0;
509  if (hitlyrs == 2) // must be same layers
510  {
511  retv = 1;
512  } else if (hitlyrs == 3) {
513  if (hitbits == 0b111) // 3 bits in a row -> adjacent layers
514  {
515  if ((lastpair.first->layer == pair.second->layer) ||
516  (pair.first->layer == lastpair.second->layer)) {
517  retv = 2; // sequential
518  } else {
519  retv = 3; // one is a skip and the other isn't
520  }
521  } else if ((hitbits == 0b1101) || (hitbits == 0b1011)) // skips 1 layer
522  {
523  retv = 4;
524  }
525  } else {
526  retv = 5;
527  }
528 
529  ATH_MSG_VERBOSE("pairpairCat "
530  << m_twoPairClasses[retv] << " " << lastpair.first->layer
531  << " " << lastpair.second->layer << " "
532  << pair.first->layer << " " << pair.second->layer << " : "
533  << minlyr << " " << std::bitset<16>(hitbits));
534 
535  return retv;
536 }
537 
539  std::vector<TH1D *> & histset, double val,
541  const FPGATrackSimGenScanTool::HitPair &lastpair, bool nminus1) {
542 
543  if (m_binPlotsActive) {
544  unsigned ppcat = pairpairCategory(pair, lastpair);
545  histset[0]->Fill(val); // 0 is "all"
546  histset[ppcat]->Fill(val); // 0 is "all"
547  if (nminus1)
548  histset[m_nminus1_idx]->Fill(val);
549  }
550 }
551 
553  const FPGATrackSimGenScanTool::HitPairSet &filteredpairs,
554  const std::vector<FPGATrackSimGenScanTool::HitPairSet> &pairsets,
555  unsigned threshold) {
556  m_pairsets->Fill(pairsets.size());
557 
558  for (const auto &pairset : pairsets) {
559  // if over threshold add it to the output
560  if (pairset.lyrCnt() >= threshold) {
561  m_roadFilterFlow->Fill(3);
562  m_passPairSetFilterGraph.addEvent(pairset.hitlist);
563  } else {
565  }
566  }
567 }
568 
570  const std::vector<FPGATrackSimGenScanTool::IntermediateState> &states,
571  unsigned allowed_misses) {
572 
573  for (unsigned i = 0; i < states.size(); i++) {
574  m_unpairedHits->Fill(i, states[i].unpairedHits.size());
575  m_pairsetsIncr->Fill(i, states[i].pairsets.size());
576  for (auto &pair : states[i].pairsets) {
577  m_pairsetsHits->Fill(i, pair.hitlist.size());
578  }
579  unsigned totalInput =
580  states[i].pairsets.size() + states[i].unpairedHits.size();
581  m_totalInputIncr->Fill(i, totalInput);
582  m_binStagesIncr->Fill(i, (i <= allowed_misses) || (totalInput > 0));
583  }
584 }
585 
586 // Event Disply Implementation
589  const std::string &name) {
590  TGraph *retv = new TGraph();
591  retv->SetName(name.c_str());
592  return retv;
593 }
594 
596  TGraph * g, double x, double y) {
597  g->SetPoint(g->GetN(), x, y);
598 }
599 
600 
601 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits) {
602  unsigned int count = m_rZ.size(); // both graph sets should have the same size
603 
604  // If over limit on number of event displays just return
605  if (count > m_maxEvts)
606  return;
607 
608  m_rZ.push_back(initGraph("EventDisp_RZ_" + m_name + std::to_string(count)));
609  m_xY.push_back(initGraph("EventDisp_XY_" + m_name + std::to_string(count)));
610 
611  for (auto &hit : hits) {
612  AddPoint(m_rZ.back(), hit->getZ(), hit->getR());
613  AddPoint(m_xY.back(), hit->getX(), hit->getY());
614  }
615 }
616 
617 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<FPGATrackSimBinUtil::StoredHit> &hits) {
618  // If over limit on number of event displays just return
619  if (m_rZ.size() > m_maxEvts) return;
620 
621  // convert vector of instances to vector of pointers to instances
622  std::vector<const FPGATrackSimBinUtil::StoredHit *> ptrvec;
623  for (auto &hit : hits) {
624  ptrvec.push_back(&hit);
625  }
626 
627  // then just call pointer-based implementation
628  return addEvent(ptrvec);
629 }
630 
631 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<const FPGATrackSimBinUtil::StoredHit *> &hits) {
632  unsigned int count = m_rZ.size(); // all four graph sets should have the same size
633 
634  // If over limit on number of event displays just return
635  if (count > m_maxEvts) return;
636 
637  // make the graphs to store the event display points
638  m_rZ.push_back(initGraph("EventDisp_RZ_" + m_name + std::to_string(count)));
639  m_xY.push_back(initGraph("EventDisp_XY_" + m_name + std::to_string(count)));
640  m_rPhi.push_back(initGraph("EventDisp_RPhi_" + m_name + std::to_string(count)));
641  m_rEta.push_back(initGraph("EventDisp_REta_" + m_name + std::to_string(count)));
642 
643  for (auto &hit : hits) {
644  AddPoint(m_rZ.back(), hit->hitptr->getZ(), hit->hitptr->getR());
645  AddPoint(m_xY.back(), hit->hitptr->getX(), hit->hitptr->getY());
646  AddPoint(m_rEta.back(), hit->etaShift, hit->hitptr->getR());
647  AddPoint(m_rPhi.back(), hit->phiShift, hit->hitptr->getR());
648  }
649 }
650 
652  // Make a vector of all the vectors of graphs and then loop to register
653  // them all...
654  for (auto &graphs : std::vector<std::vector<TGraph *> *>({&m_rZ, &m_xY, &m_rPhi, &m_rEta})) {
655  for (auto &g : *graphs) {
656  ATH_CHECK(parent->regGraph(g));
657  }
658  }
659  return StatusCode::SUCCESS;
660 }
FPGATrackSimGenScanMonitoring::m_truthpars_hists
TH1D * m_truthpars_hists[5]
Definition: FPGATrackSimGenScanMonitoring.h:136
FPGATrackSimGenScanMonitoring::m_tree_layer
std::vector< int > m_tree_layer
Definition: FPGATrackSimGenScanMonitoring.h:266
FPGATrackSimGenScanMonitoring::m_deltaEta
TH1D * m_deltaEta
Definition: FPGATrackSimGenScanMonitoring.h:174
FPGATrackSimGenScanMonitoring::m_phiInExtrapCurveLimit
TH1D * m_phiInExtrapCurveLimit
Definition: FPGATrackSimGenScanMonitoring.h:180
FPGATrackSimGenScanMonitoring::m_phiShift_road
TH1D * m_phiShift_road
Definition: FPGATrackSimGenScanMonitoring.h:152
FPGATrackSimGenScanMonitoring::m_hitsPerStepBin
std::vector< TH1D * > m_hitsPerStepBin
Definition: FPGATrackSimGenScanMonitoring.h:145
FPGATrackSimTrackPars::IHIP
@ IHIP
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_truthbin
std::vector< FPGATrackSimBinUtil::IdxSet > m_truthbin
Definition: FPGATrackSimGenScanMonitoring.h:118
FPGATrackSimGenScanMonitoring::fillBuildGroupsWithPairs
void fillBuildGroupsWithPairs(const std::vector< FPGATrackSimGenScanTool::IntermediateState > &states, unsigned allowed_misses)
Definition: FPGATrackSimGenScanMonitoring.cxx:569
FPGATrackSimGenScanMonitoring::m_truthtracks
std::vector< FPGATrackSimTruthTrack > const * m_truthtracks
Definition: FPGATrackSimGenScanMonitoring.h:114
FPGATrackSimGenScanMonitoring::m_totalInputIncr
TH2D * m_totalInputIncr
Definition: FPGATrackSimGenScanMonitoring.h:167
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:215
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
FPGATrackSimTrackPars::ID0
@ ID0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_tree_hash
std::vector< int > m_tree_hash
Definition: FPGATrackSimGenScanMonitoring.h:265
FPGATrackSimGenScanMonitoring::pairFilterCheck
void pairFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &pairs, const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, bool passedPairFilter)
Definition: FPGATrackSimGenScanMonitoring.cxx:328
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimGenScanTool::HitPair::PhiInExtrap
double PhiInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:197
FPGATrackSimGenScanMonitoring::eventDispSet::initGraph
TGraph * initGraph(const std::string &name)
Definition: FPGATrackSimGenScanMonitoring.cxx:588
FPGATrackSimGenScanMonitoring::m_lostPairSetFilterGraph
eventDispSet m_lostPairSetFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:254
FPGATrackSimGenScanMonitoring::m_binStagesIncr
TH2D * m_binStagesIncr
Definition: FPGATrackSimGenScanMonitoring.h:166
FPGATrackSimGenScanMonitoring::m_deltaEtaByLyr
std::vector< TH1D * > m_deltaEtaByLyr
Definition: FPGATrackSimGenScanMonitoring.h:184
FPGATrackSimGenScanMonitoring::m_dir
Gaudi::Property< std::string > m_dir
Definition: FPGATrackSimGenScanMonitoring.h:102
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimGenScanMonitoring::m_pairsetsHits
TH2D * m_pairsetsHits
Definition: FPGATrackSimGenScanMonitoring.h:165
FPGATrackSimGenScanMonitoring::m_phiOutExtrapCurveLimit
TH1D * m_phiOutExtrapCurveLimit
Definition: FPGATrackSimGenScanMonitoring.h:179
FPGATrackSimBinTool::steps
const ToolHandleArray< FPGATrackSimBinStep > & steps() const
Definition: FPGATrackSimBinTool.h:55
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimGenScanTool.h
Implements a generalized 5d scan which filters pair of hits in bins linearized about nominal trajecto...
AthMsgStreamMacros.h
FPGATrackSimGenScanMonitoring::m_deltaEtaDR
TH1D * m_deltaEtaDR
Definition: FPGATrackSimGenScanMonitoring.h:176
FPGATrackSimGenScanMonitoring::m_phiTrueBinShift
std::vector< TH1D * > m_phiTrueBinShift
Definition: FPGATrackSimGenScanMonitoring.h:139
FPGATrackSimGenScanMonitoring::m_tree_detzone
std::vector< int > m_tree_detzone
Definition: FPGATrackSimGenScanMonitoring.h:271
FPGATrackSimGenScanMonitoring::m_phiCurvature
std::vector< TH1D * > m_phiCurvature
Definition: FPGATrackSimGenScanMonitoring.h:204
FPGATrackSimGenScanMonitoring::m_etaResidual
std::vector< TH1D * > m_etaResidual
Definition: FPGATrackSimGenScanMonitoring.h:138
FPGATrackSimGenScanMonitoring::fillPairFilterCuts
void fillPairFilterCuts(const FPGATrackSimGenScanTool::HitPair &pair, double r_in, double r_out)
Definition: FPGATrackSimGenScanMonitoring.cxx:469
FPGATrackSimBinUtil::invalidBin
const IdxSet invalidBin
Definition: FPGATrackSimBinUtil.h:57
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimGenScanMonitoring::m_lostPairFilterGraph
eventDispSet m_lostPairFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:252
graphs
Definition: graphs.py:1
FPGATrackSimGenScanMonitoring::allocateDataFlowCounters
void allocateDataFlowCounters()
Definition: FPGATrackSimGenScanMonitoring.cxx:226
IFPGATrackSimBinDesc::trackParsToParSet
virtual const FPGATrackSimBinUtil::ParSet trackParsToParSet(const FPGATrackSimTrackPars &pars) const =0
FPGATrackSimGenScanMonitoring::m_hitsPerLayer_bin
TH2D * m_hitsPerLayer_bin
Definition: FPGATrackSimGenScanMonitoring.h:150
FPGATrackSimGenScanMonitoring::m_pairSetMatchEta
std::vector< TH1D * > m_pairSetMatchEta
Definition: FPGATrackSimGenScanMonitoring.h:203
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
FPGATrackSimTrackPars::IZ0
@ IZ0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_tree_bin
std::vector< unsigned > m_tree_bin
Definition: FPGATrackSimGenScanMonitoring.h:261
FPGATrackSimBinStep::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:62
FPGATrackSimGenScanMonitoring::m_pairs
TH1D * m_pairs
Definition: FPGATrackSimGenScanMonitoring.h:158
FPGATrackSimGenScanMonitoring::eventDispSet::registerGraphs
StatusCode registerGraphs(FPGATrackSimGenScanMonitoring *parent)
Definition: FPGATrackSimGenScanMonitoring.cxx:651
FPGATrackSimGenScanMonitoring.h
This is the monitoring for the FPGATrackSimGenScanTool.
IFPGATrackSimBinDesc::etaResidual
virtual double etaResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const =0
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimGenScanMonitoring::makeAndRegHistVector
StatusCode makeAndRegHistVector(std::vector< HistType * > &vec, unsigned len, const std::vector< std::string > *namevec, const char *namebase, const HistDef &... histargs)
Definition: FPGATrackSimGenScanMonitoring.h:286
FPGATrackSimGenScanMonitoring::m_drScale
Gaudi::Property< double > m_drScale
Definition: FPGATrackSimGenScanMonitoring.h:105
FPGATrackSimGenScanTool::HitPairSet::hitLayers
layer_bitmask_t hitLayers
Definition: FPGATrackSimGenScanTool.h:221
FPGATrackSimGenScanTool::HitPair::EtaOutExtrap
double EtaOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:200
FPGATrackSimHit::getLayer
int getLayer() const
Definition: FPGATrackSimHit.cxx:87
FPGATrackSimGenScanMonitoring::resetDataFlowCounters
void resetDataFlowCounters()
Definition: FPGATrackSimGenScanMonitoring.cxx:230
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
FPGATrackSimGenScanMonitoring::m_rZ_allhits
std::vector< TH2D * > m_rZ_allhits
Definition: FPGATrackSimGenScanMonitoring.h:135
FPGATrackSimGenScanMonitoring::m_pairMatchEta2D
TH2D * m_pairMatchEta2D
Definition: FPGATrackSimGenScanMonitoring.h:215
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
m_name
std::string m_name
Definition: ColumnarPhysliteTest.cxx:62
FPGATrackSimGenScanMonitoring::m_tree_side
std::vector< int > m_tree_side
Definition: FPGATrackSimGenScanMonitoring.h:267
FPGATrackSimGenScanMonitoring::m_truthparset
FPGATrackSimBinUtil::ParSet m_truthparset
Definition: FPGATrackSimGenScanMonitoring.h:119
FPGATrackSimBinTool::lastStep
FPGATrackSimBinStep * lastStep()
Definition: FPGATrackSimBinTool.h:56
FPGATrackSimBinnedHits.h
Binning Classes for GenScanTool.
x
#define x
FPGATrackSimGenScanMonitoring::m_etaOutExtrap
TH1D * m_etaOutExtrap
Definition: FPGATrackSimGenScanMonitoring.h:181
FPGATrackSimGenScanMonitoring::m_numLyrsPerBin
TH1D * m_numLyrsPerBin
Definition: FPGATrackSimGenScanMonitoring.h:148
FPGATrackSimGenScanMonitoring::m_etaCurvature
std::vector< TH1D * > m_etaCurvature
Definition: FPGATrackSimGenScanMonitoring.h:205
FPGATrackSimGenScanMonitoring::m_roadGraph
eventDispSet m_roadGraph
Definition: FPGATrackSimGenScanMonitoring.h:251
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
FPGATrackSimGenScanMonitoring::m_phiInExtrapCurved
std::vector< TH1D * > m_phiInExtrapCurved
Definition: FPGATrackSimGenScanMonitoring.h:210
FPGATrackSimGenScanMonitoring::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimGenScanMonitoring.h:98
FPGATrackSimGenScanMonitoring::m_phiInExtrap
TH1D * m_phiInExtrap
Definition: FPGATrackSimGenScanMonitoring.h:178
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:40
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
python.CreateTierZeroArgdict.pairs
pairs
Definition: CreateTierZeroArgdict.py:201
FPGATrackSimGenScanTool::HitPair::dR
double dR() const
Definition: FPGATrackSimGenScanTool.h:185
FPGATrackSimGenScanMonitoring::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimGenScanMonitoring.cxx:26
FPGATrackSimGenScanMonitoring::bookTree
StatusCode bookTree()
Definition: FPGATrackSimGenScanMonitoring.cxx:193
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FPGATrackSimGenScanMonitoring::m_pairsetsIncr
TH2D * m_pairsetsIncr
Definition: FPGATrackSimGenScanMonitoring.h:164
FPGATrackSimGenScanMonitoring::eventDispSet::addEvent
void addEvent(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimGenScanMonitoring.cxx:601
FPGATrackSimGenScanMonitoring::m_deltaPhi
TH1D * m_deltaPhi
Definition: FPGATrackSimGenScanMonitoring.h:173
FPGATrackSimGenScanMonitoring::setBinPlotsActive
void setBinPlotsActive(const FPGATrackSimBinUtil::IdxSet &idx)
Definition: FPGATrackSimGenScanMonitoring.h:124
FPGATrackSimBinStep::stepNum
unsigned stepNum() const
Definition: FPGATrackSimBinStep.h:59
FPGATrackSimGenScanMonitoring::m_phiShift2D_road
TH2D * m_phiShift2D_road
Definition: FPGATrackSimGenScanMonitoring.h:154
FPGATrackSimGenScanMonitoring::m_deltaDeltaEta
std::vector< TH1D * > m_deltaDeltaEta
Definition: FPGATrackSimGenScanMonitoring.h:201
FPGATrackSimGenScanMonitoring::fillHitLevelInput
void fillHitLevelInput(const FPGATrackSimHit *hit)
Definition: FPGATrackSimGenScanMonitoring.cxx:305
FPGATrackSimGenScanMonitoring::m_allHitsGraph
eventDispSet m_allHitsGraph
Definition: FPGATrackSimGenScanMonitoring.h:250
FPGATrackSimGenScanMonitoring::m_etaTrueBinShift
std::vector< TH1D * > m_etaTrueBinShift
Definition: FPGATrackSimGenScanMonitoring.h:140
FPGATrackSimGenScanMonitoring::m_phiResidual
std::vector< TH1D * > m_phiResidual
Definition: FPGATrackSimGenScanMonitoring.h:137
FPGATrackSimGenScanMonitoring::m_tree_id
std::vector< int > m_tree_id
Definition: FPGATrackSimGenScanMonitoring.h:264
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimGenScanMonitoring::ClearTreeVectors
void ClearTreeVectors()
Definition: FPGATrackSimGenScanMonitoring.cxx:211
FPGATrackSimGenScanMonitoring
Definition: FPGATrackSimGenScanMonitoring.h:38
FPGATrackSimGenScanMonitoring::m_filteredpairs
TH1D * m_filteredpairs
Definition: FPGATrackSimGenScanMonitoring.h:159
FPGATrackSimGenScanMonitoring::m_etaScale
Gaudi::Property< double > m_etaScale
Definition: FPGATrackSimGenScanMonitoring.h:104
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
FPGATrackSimGenScanMonitoring::m_binPlotsActive
bool m_binPlotsActive
Definition: FPGATrackSimGenScanMonitoring.h:127
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
IFPGATrackSimBinDesc::parNames
virtual const std::string & parNames(unsigned i) const =0
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGATrackSimGenScanMonitoring::m_deltaPhiDR
TH1D * m_deltaPhiDR
Definition: FPGATrackSimGenScanMonitoring.h:175
urldecode::states
states
Definition: urldecode.h:39
FPGATrackSimGenScanMonitoring::m_etaShift2D_road
TH2D * m_etaShift2D_road
Definition: FPGATrackSimGenScanMonitoring.h:155
FPGATrackSimGenScanMonitoring::m_pairsets
TH1D * m_pairsets
Definition: FPGATrackSimGenScanMonitoring.h:160
FPGATrackSimGenScanMonitoring::m_hitsCntByLayer
std::vector< unsigned > m_hitsCntByLayer
Definition: FPGATrackSimGenScanMonitoring.h:131
FPGATrackSimGenScanMonitoring::m_phiScale
Gaudi::Property< double > m_phiScale
Definition: FPGATrackSimGenScanMonitoring.h:103
FPGATrackSimGenScanTool::HitPairSet
Definition: FPGATrackSimGenScanTool.h:213
FPGATrackSimGenScanMonitoring::fillHitsByLayer
void fillHitsByLayer(const std::vector< std::vector< const FPGATrackSimBinUtil::StoredHit * >> &hitsByLayer)
Definition: FPGATrackSimGenScanMonitoring.cxx:296
test_pyathena.parent
parent
Definition: test_pyathena.py:15
FPGATrackSimBinTool::inRange
bool inRange(unsigned par, double val) const
Definition: FPGATrackSimBinTool.h:81
FPGATrackSimGenScanMonitoring::fillPairSetFilterCut
void fillPairSetFilterCut(std::vector< TH1D * > &histset, double val, const FPGATrackSimGenScanTool::HitPair &pair, const FPGATrackSimGenScanTool::HitPair &lastpair, bool nminus1)
Definition: FPGATrackSimGenScanMonitoring.cxx:538
FPGATrackSimGenScanMonitoring::m_pairSetMatchPhi
std::vector< TH1D * > m_pairSetMatchPhi
Definition: FPGATrackSimGenScanMonitoring.h:202
FPGATrackSimGenScanMonitoring::m_isSingleParticle
bool m_isSingleParticle
Definition: FPGATrackSimGenScanMonitoring.h:115
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimGenScanMonitoring::m_etaInExtrap
TH1D * m_etaInExtrap
Definition: FPGATrackSimGenScanMonitoring.h:182
FPGATrackSimGenScanMonitoring::makeAndRegHist
StatusCode makeAndRegHist(HistType *&ptr, const HistDef &... histargs)
Definition: FPGATrackSimGenScanMonitoring.h:276
MC::isSingleParticle
bool isSingleParticle(const T &p)
Identify a particlegun particle.
Definition: HepMCHelpers.h:74
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
IFPGATrackSimBinDesc::parSetToTrackPars
virtual const FPGATrackSimTrackPars parSetToTrackPars(const FPGATrackSimBinUtil::ParSet &parset) const =0
FPGATrackSimGenScanMonitoring::m_tree_z
std::vector< float > m_tree_z
Definition: FPGATrackSimGenScanMonitoring.h:263
FPGATrackSimBinTool::binDesc
const IFPGATrackSimBinDesc * binDesc() const
Definition: FPGATrackSimBinTool.h:53
FPGATrackSimHit::getZ
float getZ() const
Definition: FPGATrackSimHit.h:151
FPGATrackSimGenScanMonitoring::m_inputHits
TH1D * m_inputHits
Definition: FPGATrackSimGenScanMonitoring.h:142
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
FPGATrackSimGenScanMonitoring::fillBinLevelOutput
void fillBinLevelOutput(const FPGATrackSimBinUtil::IdxSet &idx, const FPGATrackSimBinnedHits::BinEntry &data)
Definition: FPGATrackSimGenScanMonitoring.cxx:253
FPGATrackSimGenScanMonitoring::m_phiOutExtrapCurved
std::vector< TH1D * > m_phiOutExtrapCurved
Definition: FPGATrackSimGenScanMonitoring.h:211
FPGATrackSimGenScanMonitoring::m_bin_module_tree
TTree * m_bin_module_tree
Definition: FPGATrackSimGenScanMonitoring.h:260
FPGATrackSimBinUtil::makeVariationSet
std::vector< IdxSet > makeVariationSet(const std::vector< unsigned > &scanpars, const IdxSet &idx)
Definition: FPGATrackSimBinUtil.cxx:93
FPGATrackSimBinnedHits::BinEntry
Definition: FPGATrackSimBinnedHits.h:70
FPGATrackSimGenScanMonitoring::m_truthpars
FPGATrackSimTrackPars m_truthpars
Definition: FPGATrackSimGenScanMonitoring.h:117
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
FPGATrackSimGenScanMonitoring::pairpairCategory
unsigned pairpairCategory(const FPGATrackSimGenScanTool::HitPair &pair, const FPGATrackSimGenScanTool::HitPair &lastpair) const
Definition: FPGATrackSimGenScanMonitoring.cxx:492
FPGATrackSimGenScanTool::HitPair::dPhi
double dPhi() const
Definition: FPGATrackSimGenScanTool.h:183
FPGATrackSimGenScanMonitoring::m_passPairFilterGraph
eventDispSet m_passPairFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:253
threshold
Definition: chainparser.cxx:74
FPGATrackSimGenScanMonitoring::eventDispSet::AddPoint
void AddPoint(TGraph *g, double x, double y)
Definition: FPGATrackSimGenScanMonitoring.cxx:595
FPGATrackSimTrackPars::IPHI
@ IPHI
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_passPairSetFilterGraph
eventDispSet m_passPairSetFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:255
FPGATrackSimGenScanMonitoring::m_pairMatchPhi2D
TH2D * m_pairMatchPhi2D
Definition: FPGATrackSimGenScanMonitoring.h:214
FPGATrackSimGenScanTool::HitPairSet::pairList
std::vector< HitPair > pairList
Definition: FPGATrackSimGenScanTool.h:218
FPGATrackSimBinnedHits::getBinTool
const FPGATrackSimBinTool & getBinTool() const
Definition: FPGATrackSimBinnedHits.h:63
FPGATrackSimGenScanMonitoring::registerGraphs
StatusCode registerGraphs()
Definition: FPGATrackSimGenScanMonitoring.cxx:236
FPGATrackSimBinTool::parRange
double parRange(unsigned par) const
Definition: FPGATrackSimBinTool.h:70
FPGATrackSimGenScanTool::HitPair::dEta
double dEta() const
Definition: FPGATrackSimGenScanTool.h:184
FPGATrackSimGenScanMonitoring::m_nminus1_idx
unsigned m_nminus1_idx
Definition: FPGATrackSimGenScanMonitoring.h:194
FPGATrackSimGenScanMonitoring::m_deltaPhiByLyr
std::vector< TH1D * > m_deltaPhiByLyr
Definition: FPGATrackSimGenScanMonitoring.h:183
FPGATrackSimGenScanMonitoring::m_hitsPerLayer2D
TH2D * m_hitsPerLayer2D
Definition: FPGATrackSimGenScanMonitoring.h:147
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:152
FPGATrackSimGenScanTool::HitPair
Definition: FPGATrackSimGenScanTool.h:180
y
#define y
FPGATrackSimGenScanMonitoring::m_roadFilterFlow
TH1D * m_roadFilterFlow
Definition: FPGATrackSimGenScanMonitoring.h:171
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
trigbs_pickEvents.cnt
cnt
Definition: trigbs_pickEvents.py:71
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
FPGATrackSimBinnedHits::binnedHits
const std::vector< FPGATrackSimBinArray< BinEntry > > & binnedHits() const
Definition: FPGATrackSimBinnedHits.h:82
FPGATrackSimGenScanMonitoring::m_deltaEtaCurvature
std::vector< TH1D * > m_deltaEtaCurvature
Definition: FPGATrackSimGenScanMonitoring.h:207
FPGATrackSimGenScanTool::HitPairSet::lyrCnt
unsigned int lyrCnt() const
Definition: FPGATrackSimGenScanTool.h:238
FPGATrackSimGenScanMonitoring::m_tree_phimod
std::vector< int > m_tree_phimod
Definition: FPGATrackSimGenScanMonitoring.h:269
FPGATrackSimGenScanMonitoring::parseTruthInfo
void parseTruthInfo(std::vector< FPGATrackSimTruthTrack > const *truthtracks, bool isSingleParticle)
Definition: FPGATrackSimGenScanMonitoring.cxx:374
FPGATrackSimTrackPars::NPARS
@ NPARS
Definition: FPGATrackSimTrackPars.h:49
IFPGATrackSimBinDesc
Definition: IFPGATrackSimBinDesc.h:47
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimGenScanTool::HitPairSet::hitlist
std::vector< const StoredHit * > hitlist
Definition: FPGATrackSimGenScanTool.h:224
FPGATrackSimGenScanMonitoring::m_pairinghits
TH1D * m_pairinghits
Definition: FPGATrackSimGenScanMonitoring.h:169
LArCellBinning.step
step
Definition: LArCellBinning.py:158
FPGATrackSimGenScanMonitoring::m_binnedhits
const FPGATrackSimBinnedHits * m_binnedhits
Definition: FPGATrackSimGenScanMonitoring.h:109
FPGATrackSimGenScanMonitoring::FPGATrackSimGenScanMonitoring
FPGATrackSimGenScanMonitoring(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimGenScanMonitoring.cxx:21
FPGATrackSimGenScanMonitoring::fillBinningSummary
void fillBinningSummary(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimGenScanMonitoring.cxx:353
FPGATrackSimGenScanMonitoring::m_twoPairClasses
static const std::vector< std::string > m_twoPairClasses
Definition: FPGATrackSimGenScanMonitoring.h:192
FPGATrackSimGenScanMonitoring::registerHistograms
StatusCode registerHistograms(const FPGATrackSimBinnedHits *binnedhits)
Definition: FPGATrackSimGenScanMonitoring.cxx:44
FPGATrackSimGenScanMonitoring::pairSetFilterCheck
void pairSetFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, const std::vector< FPGATrackSimGenScanTool::HitPairSet > &pairsets, unsigned threshold)
Definition: FPGATrackSimGenScanMonitoring.cxx:552
FPGATrackSimGenScanMonitoring::m_tree_dettype
std::vector< int > m_tree_dettype
Definition: FPGATrackSimGenScanMonitoring.h:270
FPGATrackSimBinnedHits::getNLayers
unsigned getNLayers() const
Definition: FPGATrackSimBinnedHits.h:97
FPGATrackSimGenScanMonitoring::fillPairingHits
void fillPairingHits(std::vector< const FPGATrackSimBinUtil::StoredHit * > const *lastlyr, std::vector< const FPGATrackSimBinUtil::StoredHit * > const *lastlastlyr)
Definition: FPGATrackSimGenScanMonitoring.cxx:452
FPGATrackSimGenScanMonitoring::m_truthIsValid
bool m_truthIsValid
Definition: FPGATrackSimGenScanMonitoring.h:116
FPGATrackSimGenScanMonitoring::m_deltaPhiCurvature
std::vector< TH1D * > m_deltaPhiCurvature
Definition: FPGATrackSimGenScanMonitoring.h:206
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimGenScanMonitoring::m_deltaDeltaPhi
std::vector< TH1D * > m_deltaDeltaPhi
Definition: FPGATrackSimGenScanMonitoring.h:200
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50
IFPGATrackSimBinDesc::phiResidual
virtual double phiResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const =0
FPGATrackSimBinTool::stepNames
const std::vector< std::string > & stepNames() const
Definition: FPGATrackSimBinTool.h:58
FPGATrackSimGenScanMonitoring::m_phiOutExtrap
TH1D * m_phiOutExtrap
Definition: FPGATrackSimGenScanMonitoring.h:177
FPGATrackSimGenScanMonitoring::m_tree_etamod
std::vector< int > m_tree_etamod
Definition: FPGATrackSimGenScanMonitoring.h:268
FPGATrackSimGenScanMonitoring::m_tree_r
std::vector< float > m_tree_r
Definition: FPGATrackSimGenScanMonitoring.h:262
FPGATrackSimGenScanMonitoring::m_unpairedHits
TH2D * m_unpairedHits
Definition: FPGATrackSimGenScanMonitoring.h:163
FPGATrackSimGenScanMonitoring::m_etaShift_road
TH1D * m_etaShift_road
Definition: FPGATrackSimGenScanMonitoring.h:153
FPGATrackSimGenScanTool::HitPair::EtaInExtrap
double EtaInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:203
FPGATrackSimBinnedHits
Definition: FPGATrackSimBinnedHits.h:50
FPGATrackSimTrackPars::IETA
@ IETA
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanTool::HitPair::PhiOutExtrap
double PhiOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:193
FPGATrackSimGenScanMonitoring::m_hitsPerLayer
TH1D * m_hitsPerLayer
Definition: FPGATrackSimGenScanMonitoring.h:146