ATLAS Offline Software
FPGATrackSimGenScanMonitoring.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
11 #include "TH1.h"
12 #include "TH2.h"
13 
14 FPGATrackSimGenScanMonitoring::FPGATrackSimGenScanMonitoring(const std::string& algname, const std::string &name, const IInterface *ifc) :
15  AthAlgTool(algname, name, ifc)
16 {
17 }
18 
20 {
21  // Dump the configuration to make sure it propagated through right
22  auto props = this->getProperties();
23  for( Gaudi::Details::PropertyBase* prop : props ) {
24  if (prop->ownerTypeName()==this->type()) {
25  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
26  }
27  }
28 
29  ATH_CHECK(m_tHistSvc.retrieve());
30 
31  return StatusCode::SUCCESS;
32 
33 }
34 
36  unsigned nLayers, const FPGATrackSimGenScanBinningBase *binning, double rin, double rout)
37 {
38  m_nLayers = nLayers;
40  m_rin=rin;
41  m_rout = rout;
42 
43  // This is because if you change the binning class you can change what axis
44  // ranges you need for the plotting
45  double phiScale = m_binning->phiHistScale();
46  double etaScale = m_binning->etaHistScale();
47  double drScale = (rout-rin) / nLayers;
48  ATH_MSG_INFO("Hist scales phi: " << phiScale << " eta: " << etaScale << " dr:" << drScale);
49 
51 
52  // Truth Parameter distributions, bounds should cover 3x nominal range
53  for (unsigned i = 0; i < FPGATrackSimGenScanBinningBase::NPars; i++) {
55  m_truthpars_hists[i], ("truth" + m_binning->parNames(i)).c_str(),
56  (";" + m_binning->parNames(i) + ";").c_str(), 200,
58  2 * m_binning->m_parMax[i] - m_binning->m_parMin[i]));
59  }
60 
61  // All Hit level histograms
62  ATH_CHECK(makeAndRegHist(m_hitLyrsAllBins , "HitLyrsAllBins" , ";Hit Layers", 10, 0, 10));
64  "RZ_allhits", "; Z [mm] ; R [mm] ", 500, -2000, 2000, 500, 0, 500));
65 
67  "phiResidual", "phi residual [mm]", 1000, -10, 10));
69  "etaResidual", "eta residual [mm]", 1000, -10, 10));
70 
72  "phiTrueBinShift", "phi TrueBinShift [mm]", 1000, -10, 10));
74  "etaTrueBinShift", "eta TrueBinShift [mm]", 1000, -10, 10));
75 
76  // Road statistics
77  ATH_CHECK(makeAndRegHist(m_outputHitsPerBin, "OutputHitsPerBin", ";Output Hits Per Bin", 100, 0, 200));
78  ATH_CHECK(makeAndRegHist(m_outputHitsPerSlice, "OutputHitsPerSlice", ";Output Hits Per Slice", 1000, 0, 2000));
79  ATH_CHECK(makeAndRegHist(m_outputHitsPerRow, "OutputHitsPerRow", ";Output Hits Per Row", 1000, 0, 2000));
80  ATH_CHECK(makeAndRegHist(m_outputRoadsPerRow, "OutputRoadsPerRow", ";Output Roads Per Row", 100, 0, 100));
81  ATH_CHECK(makeAndRegHist(m_roadFilterFlow , "roadFilterFlow" , "road filter flow", 10, 0, 10));
82  ATH_CHECK(makeAndRegHist(m_phiShift_road, "phiShift_road", ";Phi Shift", 2000, -phiScale, phiScale));
83  ATH_CHECK(makeAndRegHist(m_etaShift_road, "etaShift_road", ";Eta Shift", 2000, -etaScale, etaScale));
84  ATH_CHECK(makeAndRegHist(m_phiShift2D_road, "phiShift2D_road", ";Phi Shift; R",
85  400, -phiScale, phiScale, 100, 0, 400));
86  ATH_CHECK(makeAndRegHist(m_etaShift2D_road, "etaShift2D_road", ";Phi Shift; R",
87  400, -etaScale, etaScale, 100, 0, 400));
88 
89  ATH_CHECK(makeAndRegHist(m_hitsPerLayer_road , "HitsPerLayer_road" , "; Layer; Hits", m_nLayers, 0, m_nLayers, 20, 0, 20));
90 
91 
92  // Data flow hists
93  ATH_CHECK(makeAndRegHist(m_hitsLoadedPerLayer, "HitsLoadedPerLayer", "; Layer; Hits", m_nLayers, 0, m_nLayers));
94  ATH_CHECK(makeAndRegHist(m_inputHits, "InputHits", ";Input Hits", 200, 0, 100000));
95  ATH_CHECK(makeAndRegHist(m_inputHitsPerSlice, "InputHitsPerSlice", ";Input Hits Per Slice", 1000, 0, 10000));
96  ATH_CHECK(makeAndRegHist(m_inputHitsPerRow, "InputHitsPerRow", ";Input Hits Per Row", 1000, 0, 10000));
97  ATH_CHECK(makeAndRegHist(m_hitsPerLayer, "HitsPerLayer", "Layer; Hits", m_nLayers, 0, m_nLayers));
98  ATH_CHECK(makeAndRegHist(m_hitsPerLayer2D, "HitsPerLayer2D", "Layer; Hits",
99  m_nLayers, 0, m_nLayers, 20, 0,
100  m_isSingleParticle ? 20 : 10000));
101  ATH_CHECK(makeAndRegHist(m_pairs, "pairs", ";pairs;", 100, 0, 500));
102  ATH_CHECK(makeAndRegHist(m_pairinghits, "pairinghits", ";Pairing Hits;", 50, 0, 50));
103  ATH_CHECK(makeAndRegHist(m_filteredpairs, "filteredpairs", "filteredpairs", 100, 0, 500));
104  ATH_CHECK(makeAndRegHist(m_pairsets, "pairsets", ";pairsets;", 100, 0, 100));
105 
106 
107  // Pair Filter Cuts
108  ATH_CHECK(makeAndRegHist(m_phiOutExtrap, "PhiOutExtrap", ";Phi Out Extrap", 2000, -phiScale, phiScale));
109  ATH_CHECK(makeAndRegHist(m_phiInExtrap, "PhiInExtrap", ";Phi In Extrap", 2000, -phiScale, phiScale));
110  ATH_CHECK(makeAndRegHist(m_phiOutExtrapCurveLimit, "PhiOutExtrapCurveLimit",
111  ";Phi Out Extrap w/ Curve Limit", 2000, -phiScale, phiScale));
112  ATH_CHECK(makeAndRegHist(m_phiInExtrapCurveLimit, "PhiInExtrapCurveLimit",
113  ";Phi In Extrap w/ Curve Limit", 2000, -phiScale, phiScale));
114  ATH_CHECK(makeAndRegHist(m_etaOutExtrap, "EtaOutExtrap", ";Eta Out Extrap", 2000, -etaScale, etaScale));
115  ATH_CHECK(makeAndRegHist(m_etaInExtrap, "EtaInExtrap", ";Eta In Extrap", 2000, -etaScale, etaScale));
116  ATH_CHECK(makeAndRegHist(m_deltaPhi, "DeltaPhi", ";Delta Phi [rad]", 2000, -1.0*phiScale, phiScale));
117  ATH_CHECK(makeAndRegHist(m_deltaEta, "DeltaEta", ";Delta Eta [rad]", 2000, -1.0*etaScale, etaScale));
118  ATH_CHECK(makeAndRegHist(m_deltaPhiDR, "DeltaPhiDR", ";Delta Phi / Delta R", 2000, -0.1 * phiScale, 0.1 * phiScale));
119  ATH_CHECK(makeAndRegHist(m_deltaEtaDR, "DeltaEtaDR", ";Delta Eta / Delta R", 2000, -0.1 * phiScale, 0.1 * phiScale));
120  ATH_CHECK(makeAndRegHistVector(m_deltaPhiByLyr, m_nLayers, NULL, "DeltaPhiDR", ";Delta Phi / Delta R", 2000, -0.1 * phiScale, 0.1 * phiScale));
121  ATH_CHECK(makeAndRegHistVector(m_deltaEtaByLyr, m_nLayers, NULL, "DeltaEtaDR", ";Delta Eta / Delta R", 2000, -0.1 * phiScale, 0.1 * phiScale));
122 
123  // Pair Match Cuts
126  "PairSetMatchPhi", ";PairSet Match Phi [mm]", 500,
127  -1*phiScale / drScale, phiScale / drScale));
130  "PairSetMatchEta", ";PairSet Match Eta [mm]", 500,
131  -1*etaScale / drScale, etaScale / drScale));
134  "DeltaDeltaPhi", ";DeltaDelta Phi [mm]", 500, -1.0*phiScale / drScale,
135  phiScale / drScale));
138  "DeltaDeltaEta", ";DeltaDelta Eta [mm]", 500, -1.0 * etaScale / drScale,
139  1.0 * etaScale / drScale));
141  &m_twoPairClasses, "PhiCurvature",
142  ";Phi Curvature ", 500,
143  -0.1 * phiScale / drScale / drScale,
144  0.1 * phiScale / drScale / drScale));
146  &m_twoPairClasses, "EtaCurvature",
147  ";Eta Curvature ", 500,
148  -0.1 * etaScale / drScale / drScale,
149  0.1 * etaScale / drScale / drScale));
151  &m_twoPairClasses, "DeltaPhiCurvature",
152  ";Delta Phi Curvature ", 500,
153  -0.1 * phiScale / drScale / drScale,
154  0.1 * phiScale / drScale / drScale));
156  &m_twoPairClasses, "DeltaEtaCurvature",
157  ";Delta Eta Curvature ", 500,
158  -0.1 * etaScale / drScale / drScale,
159  0.1 * etaScale / drScale / drScale));
161  &m_twoPairClasses, "PhiOutExtrapCurved",
162  ";Phi Out Extrap Curved", 2000, -phiScale,
163  phiScale));
165  &m_twoPairClasses, "PhiInExtrapCurved",
166  ";Phi In Extrap Curved ", 2000, -phiScale,
167  phiScale));
168  ATH_CHECK(makeAndRegHist(m_pairMatchPhi2D, "PairSetMatchPhi2D",
169  ";PairSet Match Phi vs dRin [mm]", 100, 0, 100, 500,
170  -100.0 * phiScale, 100.0 * phiScale));
171  ATH_CHECK(makeAndRegHist(m_pairMatchEta2D, "PairSetMatchEta2D",
172  ";PairSet Match Eta vs dRin [mm]", 100, 0, 100, 500,
173  -100.0 * etaScale, 100.0 * etaScale));
174 
175  ATH_CHECK(makeAndRegHist(m_unpairedHits, "UnpairedHits", "; Stage ; Unpaired Hits" , m_nLayers+1, 0, m_nLayers+1, 20, 0, 20));
176  ATH_CHECK(makeAndRegHist(m_pairsetsIncr, "PairSetsIncr", "; Stage ; Pairsets" , m_nLayers+1, 0, m_nLayers+1, 20, 0, 20));
177  ATH_CHECK(makeAndRegHist(m_pairsetsHits, "PairSetsHits", "; Stage ; Hits in Pairsets" , m_nLayers+1, 0, m_nLayers+1, 20, 0, 20));
178  ATH_CHECK(makeAndRegHist(m_totalInputIncr, "TotalInputIncr", "; Stage ; Pairsets+Unpaired" , m_nLayers+1, 0, m_nLayers+1, 20, 0, 20));
179  ATH_CHECK(makeAndRegHist(m_binStagesIncr, "BinStagesIncr", "; Stage ; Bins at this point" , m_nLayers+1, 0, m_nLayers+1, 20, 0, 20));
180 
181  return StatusCode::SUCCESS;
182 }
183 
185 
186  m_hitsCntByLayer.resize(m_nLayers,0);
187 
190 
194 }
195 
197  for (auto& bin: m_hitsCntByLayer) { bin =0;}
198  for (auto& bin: m_inputhitsperslice) { bin.data() =0;}
199  for (auto& bin: m_inputhitsperrow) { bin.data() =0;}
200  for (auto& bin: m_outputhitsperslice) { bin.data() =0;}
201  for (auto& bin: m_outputhitsperrow) { bin.data() =0;}
202  for (auto &bin : m_outputroadsperrow) {
203  bin.data() = 0;
204  }
205 }
206 
207 
208 
209 // This is done at the end of event execution to store any graphs that were created
211 {
212  // Make a vector of pointers to all the eventDispSet instances...
213  std::vector<FPGATrackSimGenScanMonitoring::eventDispSet *> allsets(
217 
218  // Then loop to register them all
219  for (auto& set : allsets) {
220  ATH_CHECK(set->registerGraphs(this));
221  }
222 
223  return StatusCode::SUCCESS;
224 }
225 
226 
229  const std::vector<std::vector<const FPGATrackSimGenScanTool::StoredHit *> > & hitsByLayer)
230 {
232 
233  m_outputHitsPerBin->Fill(data.hits.size());
234  m_outputhitsperslice[m_binning->sliceIdx(idx)] += data.hits.size();
237 
238  m_roadGraph.addEvent(data.hits);
239 
240  if (m_binPlotsActive) {
241  for (auto& hit : data.hits) {
242  m_phiShift_road->Fill(hit.phiShift);
243  m_etaShift_road->Fill(hit.etaShift);
244  m_phiShift2D_road->Fill(hit.phiShift, hit.hitptr->getR());
245  m_etaShift2D_road->Fill(hit.etaShift, hit.hitptr->getR());
246  }
247  }
248 
249  for (unsigned lyr = 0; lyr < m_nLayers; lyr++)
250  {
251  m_hitsPerLayer_road->Fill(lyr, hitsByLayer[lyr].size());
252  }
253 }
254 
256  m_rZ_allhits[m_nLayers]->Fill(hit->getZ(), hit->getR()); // all layer plot
257  m_rZ_allhits[hit->getLayer()]->Fill(hit->getZ(), hit->getR()); // layer specific plot
258  m_hitsCntByLayer[hit->getLayer()]++;
259  if (m_truthIsValid)
260  {
265 
271  }
272  }
273 }
274 
275 void FPGATrackSimGenScanMonitoring::sliceCheck( const std::vector<unsigned>& sliceidx) {
276  if (m_truthIsValid &&
277  (m_binning->subVec(m_binning->slicePars(), m_truthbin) == sliceidx)) {
278  ATH_MSG_DEBUG("truth bin missed slice");
279  }
280 }
281 
284  const FPGATrackSimGenScanTool::HitPairSet &filteredpairs,
285  bool passedPairFilter) {
286 
287  m_roadFilterFlow->Fill(0);
288  m_pairs->Fill(pairs.pairList.size());
289  m_filteredpairs->Fill(filteredpairs.pairList.size());
290 
291  if (passedPairFilter) {
292  // if passed mark progress in flow histogram and make passed Histogram
293  m_roadFilterFlow->Fill(1);
294  m_passPairFilterGraph.addEvent(filteredpairs.hitlist);
295  } else {
296  // If the true bin didn't pass print some debug and make a lost event
297  // display
298  if (m_binPlotsActive) {
299  ATH_MSG_INFO("lost at pair filter : hit layers = "
300  << filteredpairs.lyrCnt() << " "
301  << std::bitset<16>(filteredpairs.hitLayers));
303  }
304  }
305 }
306 
309  const std::pair<unsigned, unsigned>& rowRange, const FPGATrackSimHit* hit) {
310  if (rowRange.second > rowRange.first) {
311  m_hitsLoadedPerLayer->Fill(double(hit->getLayer()));
313  } else {
314  // Nice debug check for if hit is in the truthbin for single track sample
315  if (m_truthIsValid &&
317  ATH_MSG_DEBUG("truth bin missed row ");
318  }
319  }
320 }
321 
323  const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits,
324  const FPGATrackSimGenScanArray<int>& validSlice,
325  const FPGATrackSimGenScanArray<int>& validSliceAndScan)
326 {
327  m_inputHits->Fill(hits.size());
329 
331  {
332  if (!validSlice[val.idx()]) continue;
333  m_inputHitsPerSlice->Fill(val.data());
334  }
335 
337  {
338  if (!validSliceAndScan[val.idx()]) continue;
339  m_inputHitsPerRow->Fill(val.data());
340  }
341 
342  for (unsigned i = 0; i < m_nLayers; i++)
343  {
346  }
347 }
348 
350  const FPGATrackSimGenScanArray<int>& validSlice,
351  const FPGATrackSimGenScanArray<int>& validSliceAndScan)
352 {
354  {
355  if (!validSlice[val.idx()]) continue;
356  m_outputHitsPerSlice->Fill(val.data());
357  }
359  {
360  if (!validSliceAndScan[val.idx()]) continue;
361  m_outputHitsPerRow->Fill(val.data());
362  }
364  if (!validSliceAndScan[val.idx()]) continue;
365  m_outputRoadsPerRow->Fill(val.data());
366  }
367 }
368 
369 
370 
372  std::vector<FPGATrackSimTruthTrack> const * truthtracks, bool isSingleParticle,
373  const FPGATrackSimGenScanArray<int>& validBin)
374 {
375  ATH_MSG_DEBUG("In parseTruthInfo ptr = " << truthtracks
376  << " size = " << (truthtracks ? truthtracks->size() : 0));
378  m_truthtracks = truthtracks;
379 
380  if (m_truthtracks)
381  {
382  if (m_truthtracks->size() > 0)
383  {
384  m_truthpars = (*m_truthtracks)[0].getPars();
388 
389  // histogram parameters
390  for (unsigned i = 0; i < FPGATrackSimGenScanBinningBase::NPars; i++)
391  {
392  // fill
394  }
395 
396  // a closure test
398  ATH_MSG_DEBUG("parset:" << m_truthparset << " " << m_truthpars
399  << " ?= " << recovered << " closure:"
405  }
406 
407  // print if there are multiple tracks for debugging single track MC
408  if (m_truthtracks->size() > 1)
409  {
410  for (unsigned i = 0; i < m_truthtracks->size(); i++)
411  {
412  ATH_MSG_INFO("Multiple truth" << i << " of "
413  << m_truthtracks->size() << " " << (*m_truthtracks)[i].getPars());
414  }
415  }
416 
417  // find truth bin for later plotting selections
418  ATH_MSG_DEBUG("truthbin " << m_truthtracks << " " << m_truthtracks->size() << " " << m_truthpars << " " << m_truthbin);
420  {
421  ATH_MSG_INFO("Truth out of range");
422  }
423  else if (!validBin[m_truthbin])
424  {
425  ATH_MSG_INFO("Truth Bin not valid!" << m_truthbin << " : " << m_truthpars);
426  std::vector<FPGATrackSimGenScanBinningBase::ParSet> parsets = m_binning->makeVariationSet(std::vector<unsigned>({0, 1, 2, 3, 4}), m_truthbin);
427  for (FPGATrackSimGenScanBinningBase::ParSet& parset : parsets)
428  {
429  ATH_MSG_INFO("Truth Box " << m_binning->parSetToTrackPars(parset));
430  }
431  }
432 
433  m_truthIsValid = true;
434  }
435 }
436 
438  std::vector<const FPGATrackSimGenScanTool::StoredHit *> const *lastlyr,
439  std::vector<const FPGATrackSimGenScanTool::StoredHit *> const
440  *lastlastlyr) {
441 
442  auto size_if_nonzero_ptr =
443  [](std::vector<const FPGATrackSimGenScanTool::StoredHit *> const *ptr) {
444  if (ptr) {
445  return int(ptr->size());
446  } else {
447  return 0;
448  }
449  };
450 
451  m_pairinghits->Fill(size_if_nonzero_ptr(lastlyr) +
452  size_if_nonzero_ptr(lastlastlyr));
453 }
454 
456  const FPGATrackSimGenScanTool::HitPair &pair) {
457  // m_pairs->Fill(pairs.pairList.size());
458  if (m_binPlotsActive) {
459  int lyr = pair.first->hitptr->getLayer();
460  m_deltaPhi->Fill(pair.dPhi());
461  m_deltaEta->Fill(pair.dEta());
462  m_deltaPhiDR->Fill(pair.dPhi() / pair.dR());
463  m_deltaEtaDR->Fill(pair.dEta() / pair.dR());
464  m_deltaPhiByLyr[lyr]->Fill(pair.dPhi());
465  m_deltaEtaByLyr[lyr]->Fill(pair.dEta());
466  m_phiInExtrap->Fill(pair.PhiInExtrap(m_rin));
467  m_phiOutExtrap->Fill(pair.PhiOutExtrap(m_rout));
468  m_etaInExtrap->Fill(pair.EtaInExtrap(m_rin));
469  m_etaOutExtrap->Fill(pair.EtaOutExtrap(m_rout));
470  }
471 }
472 
473 
474 // This classifies a pair of pairs into a category for plotting
475 // e.g. are they bewtween hits in the same layer, are there three layers,
476 // if there are three layers are they sequential,...
477 // This is to try to understand some of the structure of the
478 // pair matching distributions
481  const FPGATrackSimGenScanTool::HitPair &lastpair) const
482 {
483  int minlyr = std::min(lastpair.first->layer, lastpair.second->layer);
484  minlyr = std::min(minlyr, pair.first->layer);
485  minlyr = std::min(minlyr, pair.second->layer);
486 
487  unsigned hitbits =
488  ((1 << lastpair.first->layer) | (1 << lastpair.second->layer) |
489  (1 << pair.first->layer) | (1 << pair.second->layer));
490  hitbits = hitbits >> minlyr; // now bit list starts with lowest hit layer
491 
492  int hitlyrs = __builtin_popcount(hitbits);
493 
494  assert(hitbits & 0x1);
495 
496  unsigned retv = 0;
497  if (hitlyrs == 2) // must be same layers
498  {
499  retv = 1;
500  } else if (hitlyrs == 3) {
501  if (hitbits == 0b111) // 3 bits in a row -> adjacent layers
502  {
503  if ((lastpair.first->layer == pair.second->layer) ||
504  (pair.first->layer == lastpair.second->layer)) {
505  retv = 2; // sequential
506  } else {
507  retv = 3; // one is a skip and the other isn't
508  }
509  } else if ((hitbits == 0b1101) || (hitbits == 0b1011)) // skips 1 layer
510  {
511  retv = 4;
512  }
513  } else {
514  retv = 5;
515  }
516 
517  ATH_MSG_VERBOSE("pairpairCat "
518  << m_twoPairClasses[retv] << " " << lastpair.first->layer << " "
519  << lastpair.second->layer << " " << pair.first->layer << " "
520  << pair.second->layer << " : " << minlyr << " "
521  << std::bitset<16>(hitbits));
522 
523  return retv;
524 }
525 
527  std::vector<TH1D *> &histset, double val,
529  const FPGATrackSimGenScanTool::HitPair &lastpair, bool nminus1) {
530 
531  if (m_binPlotsActive) {
532  unsigned ppcat = pairpairCategory(pair, lastpair);
533  histset[0]->Fill(val); // 0 is "all"
534  histset[ppcat]->Fill(val); // 0 is "all"
535  if (nminus1)
536  histset[m_nminus1_idx]->Fill(val);
537  }
538 
539 }
540 
542  const FPGATrackSimGenScanTool::HitPairSet &filteredpairs,
543  const std::vector<FPGATrackSimGenScanTool::HitPairSet> &pairsets,
544  unsigned threshold) {
545  m_pairsets->Fill(pairsets.size());
546 
547  for (auto pairset : pairsets) {
548  // if over threshold add it to the output
549  if (pairset.lyrCnt() >= threshold) {
550  m_roadFilterFlow->Fill(3);
551  m_passPairSetFilterGraph.addEvent(pairset.hitlist);
552  } else {
554  }
555  }
556 }
557 
559  const std::vector<FPGATrackSimGenScanTool::IntermediateState> &states,
560  unsigned allowed_misses) {
561 
562  for (unsigned i = 0; i < states.size(); i++) {
563  m_unpairedHits->Fill(i, states[i].unpairedHits.size());
564  m_pairsetsIncr->Fill(i, states[i].pairsets.size());
565  for (auto& pair : states[i].pairsets) {
566  m_pairsetsHits->Fill(i, pair.hitlist.size());
567  }
568  unsigned totalInput = states[i].pairsets.size() +states[i].unpairedHits.size();
569  m_totalInputIncr->Fill(i, totalInput);
570  m_binStagesIncr->Fill(i, (i <= allowed_misses)||(totalInput>0));
571  }
572 }
573 
574 
575 
576 
577 // Event Disply Implementation
580 {
581  TGraph *retv = new TGraph();
582  retv->SetName(name.c_str());
583  return retv;
584 }
585 
587 {
588  g->SetPoint(g->GetN(), x, y);
589 }
590 
591 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits)
592 {
593  unsigned int count = m_rZ.size(); // both graph sets should have the same size
594 
595  // If over limit on number of event displays just return
596  if (count > m_maxEvts) return;
597 
598  m_rZ.push_back(initGraph("EventDisp_RZ_"+m_name+std::to_string(count)));
599  m_xY.push_back(initGraph("EventDisp_XY_"+m_name+std::to_string(count)));
600  for (auto & hit: hits)
601  {
602  AddPoint(m_rZ.back(), hit->getZ(), hit->getR());
603  AddPoint(m_xY.back(), hit->getX(), hit->getY());
604  }
605 }
606 
607 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<FPGATrackSimGenScanTool::StoredHit>& hits)
608 {
609  // If over limit on number of event displays just return
610  if (m_rZ.size() > m_maxEvts) return;
611 
612  // convert vector of instances to vector of pointers to instances
613  std::vector<const FPGATrackSimGenScanTool::StoredHit *> ptrvec;
614  for (auto & hit: hits)
615  {
616  ptrvec.push_back(&hit);
617  }
618 
619  // then just call pointer-based implementation
620  return addEvent(ptrvec);
621 }
622 
623 void FPGATrackSimGenScanMonitoring::eventDispSet::addEvent(const std::vector<const FPGATrackSimGenScanTool::StoredHit*>& hits)
624 {
625  unsigned int count = m_rZ.size(); // all four graph sets should have the same size
626 
627  // If over limit on number of event displays just return
628  if (count > m_maxEvts) return;
629 
630  // make the graphs to store the event display points
631  m_rZ.push_back(initGraph("EventDisp_RZ_" + m_name + std::to_string(count)));
632  m_xY.push_back(initGraph("EventDisp_XY_"+m_name+std::to_string(count)));
633  m_rPhi.push_back(initGraph("EventDisp_RPhi_"+m_name+std::to_string(count)));
634  m_rEta.push_back(initGraph("EventDisp_REta_"+m_name+std::to_string(count)));
635 
636  for (auto & hit : hits)
637  {
638  AddPoint(m_rZ.back(), hit->hitptr->getZ(), hit->hitptr->getR());
639  AddPoint(m_xY.back(), hit->hitptr->getX(), hit->hitptr->getY());
640  AddPoint(m_rEta.back(), hit->etaShift, hit->hitptr->getR());
641  AddPoint(m_rPhi.back(), hit->phiShift, hit->hitptr->getR());
642  }
643 }
644 
646  // Make a vector of all the vectors of graphs and then loop to register them all...
647  for (auto &graphs :
648  std::vector<std::vector<TGraph *> *>({&m_rZ, &m_xY, &m_rPhi, &m_rEta})) {
649  for (auto& g : *graphs) { ATH_CHECK(parent->regGraph(g));}
650  }
651  return StatusCode::SUCCESS;
652 }
FPGATrackSimGenScanMonitoring::m_truthpars_hists
TH1D * m_truthpars_hists[5]
Definition: FPGATrackSimGenScanMonitoring.h:150
FPGATrackSimGenScanMonitoring::parseTruthInfo
void parseTruthInfo(std::vector< FPGATrackSimTruthTrack > const *truthtracks, bool isSingleParticle, const FPGATrackSimGenScanArray< int > &validBin)
Definition: FPGATrackSimGenScanMonitoring.cxx:371
FPGATrackSimGenScanMonitoring::fillOutputSummary
void fillOutputSummary(const FPGATrackSimGenScanArray< int > &validSlice, const FPGATrackSimGenScanArray< int > &validSliceAndScan)
Definition: FPGATrackSimGenScanMonitoring.cxx:349
FPGATrackSimGenScanMonitoring::m_deltaEta
TH1D * m_deltaEta
Definition: FPGATrackSimGenScanMonitoring.h:193
FPGATrackSimGenScanMonitoring::m_phiInExtrapCurveLimit
TH1D * m_phiInExtrapCurveLimit
Definition: FPGATrackSimGenScanMonitoring.h:199
FPGATrackSimGenScanMonitoring::m_phiShift_road
TH1D * m_phiShift_road
Definition: FPGATrackSimGenScanMonitoring.h:171
FPGATrackSimTrackPars::IHIP
@ IHIP
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::fillBuildGroupsWithPairs
void fillBuildGroupsWithPairs(const std::vector< FPGATrackSimGenScanTool::IntermediateState > &states, unsigned allowed_misses)
Definition: FPGATrackSimGenScanMonitoring.cxx:558
FPGATrackSimGenScanArray< int >
FPGATrackSimGenScanMonitoring::m_truthtracks
std::vector< FPGATrackSimTruthTrack > const * m_truthtracks
Definition: FPGATrackSimGenScanMonitoring.h:121
FPGATrackSimGenScanMonitoring::m_totalInputIncr
TH2D * m_totalInputIncr
Definition: FPGATrackSimGenScanMonitoring.h:186
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
FPGATrackSimGenScanMonitoring::m_inputhitsperrow
FPGATrackSimGenScanArray< int > m_inputhitsperrow
Definition: FPGATrackSimGenScanMonitoring.h:141
FPGATrackSimTrackPars::ID0
@ ID0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::pairFilterCheck
void pairFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &pairs, const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, bool passedPairFilter)
Definition: FPGATrackSimGenScanMonitoring.cxx:282
FPGATrackSimGenScanBinningBase::IdxSet
Definition: FPGATrackSimGenScanBinning.h:100
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimGenScanTool::HitPair::PhiInExtrap
double PhiInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:238
FPGATrackSimGenScanMonitoring::eventDispSet::initGraph
TGraph * initGraph(const std::string &name)
Definition: FPGATrackSimGenScanMonitoring.cxx:579
FPGATrackSimGenScanMonitoring::m_lostPairSetFilterGraph
eventDispSet m_lostPairSetFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:273
FPGATrackSimGenScanMonitoring::m_binStagesIncr
TH2D * m_binStagesIncr
Definition: FPGATrackSimGenScanMonitoring.h:185
AddEmptyComponent.binning
binning
Definition: AddEmptyComponent.py:34
FPGATrackSimGenScanMonitoring::m_deltaEtaByLyr
std::vector< TH1D * > m_deltaEtaByLyr
Definition: FPGATrackSimGenScanMonitoring.h:203
FPGATrackSimGenScanMonitoring::m_outputRoadsPerRow
TH1D * m_outputRoadsPerRow
Definition: FPGATrackSimGenScanMonitoring.h:162
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimGenScanMonitoring::m_pairsetsHits
TH2D * m_pairsetsHits
Definition: FPGATrackSimGenScanMonitoring.h:184
FPGATrackSimGenScanMonitoring::m_phiOutExtrapCurveLimit
TH1D * m_phiOutExtrapCurveLimit
Definition: FPGATrackSimGenScanMonitoring.h:198
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimGenScanMonitoring::m_deltaEtaDR
TH1D * m_deltaEtaDR
Definition: FPGATrackSimGenScanMonitoring.h:195
FPGATrackSimGenScanMonitoring::m_phiTrueBinShift
std::vector< TH1D * > m_phiTrueBinShift
Definition: FPGATrackSimGenScanMonitoring.h:153
FPGATrackSimGenScanMonitoring::m_phiCurvature
std::vector< TH1D * > m_phiCurvature
Definition: FPGATrackSimGenScanMonitoring.h:223
FPGATrackSimGenScanMonitoring::m_etaResidual
std::vector< TH1D * > m_etaResidual
Definition: FPGATrackSimGenScanMonitoring.h:152
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
FPGATrackSimGenScanMonitoring::makeAndRegHist
StatusCode makeAndRegHist(HistType *&ptr, HistDef... histargs)
Definition: FPGATrackSimGenScanMonitoring.h:279
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimGenScanBinningBase::inRange
bool inRange(unsigned par, double val) const
Definition: FPGATrackSimGenScanBinning.h:208
FPGATrackSimGenScanMonitoring::m_lostPairFilterGraph
eventDispSet m_lostPairFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:271
graphs
Definition: graphs.py:1
FPGATrackSimGenScanMonitoring::m_outputroadsperrow
FPGATrackSimGenScanArray< int > m_outputroadsperrow
Definition: FPGATrackSimGenScanMonitoring.h:145
FPGATrackSimGenScanMonitoring::allocateDataFlowCounters
void allocateDataFlowCounters()
Definition: FPGATrackSimGenScanMonitoring.cxx:184
FPGATrackSimGenScanMonitoring::m_pairSetMatchEta
std::vector< TH1D * > m_pairSetMatchEta
Definition: FPGATrackSimGenScanMonitoring.h:222
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
FPGATrackSimTrackPars::IZ0
@ IZ0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_hitsLoadedPerLayer
TH1D * m_hitsLoadedPerLayer
Definition: FPGATrackSimGenScanMonitoring.h:167
FPGATrackSimGenScanBinningBase::ParSet
Definition: FPGATrackSimGenScanBinning.h:90
FPGATrackSimGenScanMonitoring::setBinPlotsActive
void setBinPlotsActive(const FPGATrackSimGenScanBinningBase::IdxSet &idx)
Definition: FPGATrackSimGenScanMonitoring.h:131
FPGATrackSimGenScanBinningBase::sliceAndScanIdx
virtual std::vector< unsigned > sliceAndScanIdx(const IdxSet &idx) const
Definition: FPGATrackSimGenScanBinning.h:190
FPGATrackSimGenScanMonitoring::m_pairs
TH1D * m_pairs
Definition: FPGATrackSimGenScanMonitoring.h:177
FPGATrackSimGenScanMonitoring::makeAndRegHistVector
StatusCode makeAndRegHistVector(std::vector< HistType * > &vec, unsigned len, const std::vector< std::string > *namevec, const char *namebase, HistDef... histargs)
Definition: FPGATrackSimGenScanMonitoring.h:288
FPGATrackSimGenScanMonitoring::eventDispSet::registerGraphs
StatusCode registerGraphs(FPGATrackSimGenScanMonitoring *parent)
Definition: FPGATrackSimGenScanMonitoring.cxx:645
FPGATrackSimGenScanMonitoring.h
This is the monitoring for the FPGATrackSimGenScanTool.
FPGATrackSimHit::getLayer
unsigned getLayer() const
Definition: FPGATrackSimHit.cxx:77
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimGenScanBinningBase::parNames
virtual const std::string & parNames(unsigned i) const =0
FPGATrackSimGenScanBinningBase::etaResidual
virtual double etaResidual(const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug=false) const =0
FPGATrackSimGenScanTool::HitPairSet::hitLayers
layer_bitmask_t hitLayers
Definition: FPGATrackSimGenScanTool.h:262
FPGATrackSimGenScanTool::HitPair::EtaOutExtrap
double EtaOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:241
FPGATrackSimGenScanMonitoring::incrementInputPerScan
void incrementInputPerScan(const FPGATrackSimGenScanBinningBase::IdxSet &idx, const std::pair< unsigned, unsigned > &rowRange, const FPGATrackSimHit *hit)
Definition: FPGATrackSimGenScanMonitoring.cxx:307
FPGATrackSimGenScanMonitoring::resetDataFlowCounters
void resetDataFlowCounters()
Definition: FPGATrackSimGenScanMonitoring.cxx:196
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:149
FPGATrackSimGenScanMonitoring::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimGenScanMonitoring.h:114
FPGATrackSimGenScanMonitoring::m_pairMatchEta2D
TH2D * m_pairMatchEta2D
Definition: FPGATrackSimGenScanMonitoring.h:234
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
FPGATrackSimGenScanBinningBase::m_parMax
ParSet m_parMax
Definition: FPGATrackSimGenScanBinning.h:234
FPGATrackSimGenScanBinningBase::phiHistScale
virtual double phiHistScale() const =0
x
#define x
FPGATrackSimGenScanMonitoring::m_etaOutExtrap
TH1D * m_etaOutExtrap
Definition: FPGATrackSimGenScanMonitoring.h:200
FPGATrackSimGenScanMonitoring::m_etaCurvature
std::vector< TH1D * > m_etaCurvature
Definition: FPGATrackSimGenScanMonitoring.h:224
FPGATrackSimGenScanMonitoring::m_roadGraph
eventDispSet m_roadGraph
Definition: FPGATrackSimGenScanMonitoring.h:270
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
FPGATrackSimGenScanBinningBase::trackParsToParSet
virtual const ParSet trackParsToParSet(const FPGATrackSimTrackPars &pars) const =0
FPGATrackSimGenScanMonitoring::m_phiInExtrapCurved
std::vector< TH1D * > m_phiInExtrapCurved
Definition: FPGATrackSimGenScanMonitoring.h:229
FPGATrackSimGenScanMonitoring::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimGenScanMonitoring.h:106
FPGATrackSimGenScanMonitoring::m_phiInExtrap
TH1D * m_phiInExtrap
Definition: FPGATrackSimGenScanMonitoring.h:197
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimGenScanBinningBase::m_invalidBin
const IdxSet m_invalidBin
Definition: FPGATrackSimGenScanBinning.h:239
python.CreateTierZeroArgdict.pairs
pairs
Definition: CreateTierZeroArgdict.py:201
FPGATrackSimGenScanTool::HitPair::dR
double dR() const
Definition: FPGATrackSimGenScanTool.h:226
FPGATrackSimGenScanMonitoring::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimGenScanMonitoring.cxx:19
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FPGATrackSimGenScanMonitoring::m_truthbin
FPGATrackSimGenScanBinningBase::IdxSet m_truthbin
Definition: FPGATrackSimGenScanMonitoring.h:125
FPGATrackSimGenScanMonitoring::m_pairsetsIncr
TH2D * m_pairsetsIncr
Definition: FPGATrackSimGenScanMonitoring.h:183
FPGATrackSimGenScanMonitoring::m_inputhitsperslice
FPGATrackSimGenScanArray< int > m_inputhitsperslice
Definition: FPGATrackSimGenScanMonitoring.h:140
FPGATrackSimGenScanBinningBase::etaHistScale
virtual double etaHistScale() const =0
FPGATrackSimGenScanMonitoring::eventDispSet::addEvent
void addEvent(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimGenScanMonitoring.cxx:591
FPGATrackSimGenScanBinningBase::NPars
static constexpr unsigned NPars
Definition: FPGATrackSimGenScanBinning.h:232
FPGATrackSimGenScanBinningBase::sliceIdx
virtual std::vector< unsigned > sliceIdx(const IdxSet &idx) const
Definition: FPGATrackSimGenScanBinning.h:188
FPGATrackSimGenScanMonitoring::m_deltaPhi
TH1D * m_deltaPhi
Definition: FPGATrackSimGenScanMonitoring.h:192
FPGATrackSimGenScanMonitoring::m_phiShift2D_road
TH2D * m_phiShift2D_road
Definition: FPGATrackSimGenScanMonitoring.h:173
FPGATrackSimGenScanMonitoring::m_deltaDeltaEta
std::vector< TH1D * > m_deltaDeltaEta
Definition: FPGATrackSimGenScanMonitoring.h:220
FPGATrackSimGenScanBinningBase::scanPars
virtual std::vector< unsigned > scanPars() const =0
FPGATrackSimGenScanBinningBase::slicePars
virtual std::vector< unsigned > slicePars() const =0
FPGATrackSimGenScanMonitoring::fillHitLevelInput
void fillHitLevelInput(const FPGATrackSimHit *hit)
Definition: FPGATrackSimGenScanMonitoring.cxx:255
FPGATrackSimGenScanMonitoring::m_allHitsGraph
eventDispSet m_allHitsGraph
Definition: FPGATrackSimGenScanMonitoring.h:269
FPGATrackSimGenScanMonitoring::m_etaTrueBinShift
std::vector< TH1D * > m_etaTrueBinShift
Definition: FPGATrackSimGenScanMonitoring.h:154
FPGATrackSimGenScanBinningBase::phiResidual
virtual double phiResidual(const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug=false) const =0
FPGATrackSimGenScanMonitoring::m_phiResidual
std::vector< TH1D * > m_phiResidual
Definition: FPGATrackSimGenScanMonitoring.h:151
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimGenScanMonitoring
Definition: FPGATrackSimGenScanMonitoring.h:37
FPGATrackSimGenScanMonitoring::m_filteredpairs
TH1D * m_filteredpairs
Definition: FPGATrackSimGenScanMonitoring.h:178
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
FPGATrackSimGenScanMonitoring::m_binPlotsActive
bool m_binPlotsActive
Definition: FPGATrackSimGenScanMonitoring.h:134
FPGATrackSimGenScanMonitoring::m_hitLyrsAllBins
TH1D * m_hitLyrsAllBins
Definition: FPGATrackSimGenScanMonitoring.h:169
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGATrackSimGenScanMonitoring::m_deltaPhiDR
TH1D * m_deltaPhiDR
Definition: FPGATrackSimGenScanMonitoring.h:194
urldecode::states
states
Definition: urldecode.h:39
FPGATrackSimGenScanMonitoring::m_inputHitsPerSlice
TH1D * m_inputHitsPerSlice
Definition: FPGATrackSimGenScanMonitoring.h:157
FPGATrackSimGenScanMonitoring::m_etaShift2D_road
TH2D * m_etaShift2D_road
Definition: FPGATrackSimGenScanMonitoring.h:174
FPGATrackSimGenScanMonitoring::m_pairsets
TH1D * m_pairsets
Definition: FPGATrackSimGenScanMonitoring.h:179
FPGATrackSimGenScanMonitoring::m_hitsCntByLayer
std::vector< unsigned > m_hitsCntByLayer
Definition: FPGATrackSimGenScanMonitoring.h:138
FPGATrackSimGenScanTool::HitPairSet
Definition: FPGATrackSimGenScanTool.h:254
test_pyathena.parent
parent
Definition: test_pyathena.py:15
FPGATrackSimGenScanMonitoring::fillPairSetFilterCut
void fillPairSetFilterCut(std::vector< TH1D * > &histset, double val, const FPGATrackSimGenScanTool::HitPair &pair, const FPGATrackSimGenScanTool::HitPair &lastpair, bool nminus1)
Definition: FPGATrackSimGenScanMonitoring.cxx:526
FPGATrackSimGenScanMonitoring::m_pairSetMatchPhi
std::vector< TH1D * > m_pairSetMatchPhi
Definition: FPGATrackSimGenScanMonitoring.h:221
FPGATrackSimGenScanMonitoring::m_isSingleParticle
bool m_isSingleParticle
Definition: FPGATrackSimGenScanMonitoring.h:122
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimGenScanBinningBase::sliceAndScanBins
virtual std::vector< unsigned > sliceAndScanBins() const
Definition: FPGATrackSimGenScanBinning.h:184
FPGATrackSimGenScanMonitoring::m_outputHitsPerRow
TH1D * m_outputHitsPerRow
Definition: FPGATrackSimGenScanMonitoring.h:161
FPGATrackSimGenScanMonitoring::m_etaInExtrap
TH1D * m_etaInExtrap
Definition: FPGATrackSimGenScanMonitoring.h:201
FPGATrackSimGenScanMonitoring::m_truthparset
FPGATrackSimGenScanBinningBase::ParSet m_truthparset
Definition: FPGATrackSimGenScanMonitoring.h:126
MC::isSingleParticle
bool isSingleParticle(const T &p)
Identify a particlegun particle.
Definition: HepMCHelpers.h:74
FPGATrackSimHit::getZ
float getZ() const
Definition: FPGATrackSimHit.h:139
FPGATrackSimGenScanMonitoring::m_inputHits
TH1D * m_inputHits
Definition: FPGATrackSimGenScanMonitoring.h:156
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::m_outputHitsPerBin
TH1D * m_outputHitsPerBin
Definition: FPGATrackSimGenScanMonitoring.h:163
FPGATrackSimGenScanMonitoring::m_phiOutExtrapCurved
std::vector< TH1D * > m_phiOutExtrapCurved
Definition: FPGATrackSimGenScanMonitoring.h:230
FPGATrackSimGenScanMonitoring::m_inputHitsPerRow
TH1D * m_inputHitsPerRow
Definition: FPGATrackSimGenScanMonitoring.h:160
FPGATrackSimGenScanMonitoring::m_truthpars
FPGATrackSimTrackPars m_truthpars
Definition: FPGATrackSimGenScanMonitoring.h:124
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
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:479
FPGATrackSimGenScanTool::HitPair::dPhi
double dPhi() const
Definition: FPGATrackSimGenScanTool.h:224
FPGATrackSimGenScanMonitoring::m_passPairFilterGraph
eventDispSet m_passPairFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:272
threshold
Definition: chainparser.cxx:74
FPGATrackSimGenScanMonitoring::eventDispSet::AddPoint
void AddPoint(TGraph *g, double x, double y)
Definition: FPGATrackSimGenScanMonitoring.cxx:586
FPGATrackSimGenScanMonitoring::fillPairingHits
void fillPairingHits(std::vector< const FPGATrackSimGenScanTool::StoredHit * > const *lastlyr, std::vector< const FPGATrackSimGenScanTool::StoredHit * > const *lastlastlyr)
Definition: FPGATrackSimGenScanMonitoring.cxx:437
FPGATrackSimGenScanMonitoring::registerHistograms
StatusCode registerHistograms(unsigned nLayers, const FPGATrackSimGenScanBinningBase *binning, double rin, double rout)
Definition: FPGATrackSimGenScanMonitoring.cxx:35
FPGATrackSimGenScanBinningBase::etaShift
double etaShift(const IdxSet &idx, FPGATrackSimHit const *hit, bool debug=false) const
Definition: FPGATrackSimGenScanBinning.h:179
FPGATrackSimTrackPars::IPHI
@ IPHI
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanMonitoring::m_passPairSetFilterGraph
eventDispSet m_passPairSetFilterGraph
Definition: FPGATrackSimGenScanMonitoring.h:274
FPGATrackSimGenScanMonitoring::m_pairMatchPhi2D
TH2D * m_pairMatchPhi2D
Definition: FPGATrackSimGenScanMonitoring.h:233
FPGATrackSimGenScanTool::HitPairSet::pairList
std::vector< HitPair > pairList
Definition: FPGATrackSimGenScanTool.h:259
FPGATrackSimGenScanMonitoring::registerGraphs
StatusCode registerGraphs()
Definition: FPGATrackSimGenScanMonitoring.cxx:210
FPGATrackSimGenScanMonitoring::fillInputSummary
void fillInputSummary(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, const FPGATrackSimGenScanArray< int > &validSlice, const FPGATrackSimGenScanArray< int > &validScan)
Definition: FPGATrackSimGenScanMonitoring.cxx:322
FPGATrackSimGenScanBinningBase::parsToBin
const IdxSet parsToBin(FPGATrackSimTrackPars &pars) const
Definition: FPGATrackSimGenScanBinning.cxx:37
FPGATrackSimGenScanMonitoring::m_rin
double m_rin
Definition: FPGATrackSimGenScanMonitoring.h:116
FPGATrackSimGenScanBinningBase::m_parMin
ParSet m_parMin
Definition: FPGATrackSimGenScanBinning.h:233
FPGATrackSimGenScanTool::HitPair::dEta
double dEta() const
Definition: FPGATrackSimGenScanTool.h:225
FPGATrackSimGenScanMonitoring::m_nminus1_idx
unsigned m_nminus1_idx
Definition: FPGATrackSimGenScanMonitoring.h:213
FPGATrackSimGenScanMonitoring::m_deltaPhiByLyr
std::vector< TH1D * > m_deltaPhiByLyr
Definition: FPGATrackSimGenScanMonitoring.h:202
FPGATrackSimGenScanMonitoring::m_hitsPerLayer2D
TH2D * m_hitsPerLayer2D
Definition: FPGATrackSimGenScanMonitoring.h:165
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:140
FPGATrackSimGenScanTool::HitPair
Definition: FPGATrackSimGenScanTool.h:221
y
#define y
FPGATrackSimGenScanMonitoring::m_roadFilterFlow
TH1D * m_roadFilterFlow
Definition: FPGATrackSimGenScanMonitoring.h:190
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
FPGATrackSimGenScanMonitoring::m_deltaEtaCurvature
std::vector< TH1D * > m_deltaEtaCurvature
Definition: FPGATrackSimGenScanMonitoring.h:226
FPGATrackSimGenScanBinningBase::parSetToTrackPars
virtual const FPGATrackSimTrackPars parSetToTrackPars(const ParSet &parset) const =0
FPGATrackSimGenScanTool::HitPairSet::lyrCnt
unsigned int lyrCnt() const
Definition: FPGATrackSimGenScanTool.h:279
FPGATrackSimGenScanMonitoring::m_binning
const FPGATrackSimGenScanBinningBase * m_binning
Definition: FPGATrackSimGenScanMonitoring.h:115
FPGATrackSimGenScanMonitoring::m_outputhitsperrow
FPGATrackSimGenScanArray< int > m_outputhitsperrow
Definition: FPGATrackSimGenScanMonitoring.h:144
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimGenScanTool::HitPairSet::hitlist
std::vector< const StoredHit * > hitlist
Definition: FPGATrackSimGenScanTool.h:265
FPGATrackSimGenScanMonitoring::m_pairinghits
TH1D * m_pairinghits
Definition: FPGATrackSimGenScanMonitoring.h:188
FPGATrackSimGenScanMonitoring::fillBinLevelOutput
void fillBinLevelOutput(const FPGATrackSimGenScanBinningBase::IdxSet &idx, const FPGATrackSimGenScanTool::BinEntry &data, const std::vector< std::vector< const FPGATrackSimGenScanTool::StoredHit * > > &hitsByLayer)
Definition: FPGATrackSimGenScanMonitoring.cxx:227
FPGATrackSimGenScanMonitoring::m_outputhitsperslice
FPGATrackSimGenScanArray< int > m_outputhitsperslice
Definition: FPGATrackSimGenScanMonitoring.h:143
FPGATrackSimGenScanMonitoring::sliceCheck
void sliceCheck(const std::vector< unsigned > &sliceidx)
Definition: FPGATrackSimGenScanMonitoring.cxx:275
FPGATrackSimGenScanMonitoring::FPGATrackSimGenScanMonitoring
FPGATrackSimGenScanMonitoring(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimGenScanMonitoring.cxx:14
FPGATrackSimGenScanMonitoring::m_twoPairClasses
static const std::vector< std::string > m_twoPairClasses
Definition: FPGATrackSimGenScanMonitoring.h:211
FPGATrackSimGenScanMonitoring::pairSetFilterCheck
void pairSetFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, const std::vector< FPGATrackSimGenScanTool::HitPairSet > &pairsets, unsigned threshold)
Definition: FPGATrackSimGenScanMonitoring.cxx:541
FPGATrackSimGenScanMonitoring::m_truthIsValid
bool m_truthIsValid
Definition: FPGATrackSimGenScanMonitoring.h:123
FPGATrackSimGenScanMonitoring::m_deltaPhiCurvature
std::vector< TH1D * > m_deltaPhiCurvature
Definition: FPGATrackSimGenScanMonitoring.h:225
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimGenScanMonitoring::fillPairFilterCuts
void fillPairFilterCuts(const FPGATrackSimGenScanTool::HitPair &pair)
Definition: FPGATrackSimGenScanMonitoring.cxx:455
FPGATrackSimGenScanBinningBase
Definition: FPGATrackSimGenScanBinning.h:77
FPGATrackSimGenScanMonitoring::m_deltaDeltaPhi
std::vector< TH1D * > m_deltaDeltaPhi
Definition: FPGATrackSimGenScanMonitoring.h:219
FPGATrackSimGenScanBinningBase::phiShift
double phiShift(const IdxSet &idx, FPGATrackSimHit const *hit, bool debug=false) const
Definition: FPGATrackSimGenScanBinning.h:178
FPGATrackSimGenScanTool::BinEntry
Definition: FPGATrackSimGenScanTool.h:206
FPGATrackSimGenScanMonitoring::m_outputHitsPerSlice
TH1D * m_outputHitsPerSlice
Definition: FPGATrackSimGenScanMonitoring.h:158
FPGATrackSimGenScanBinningBase::makeVariationSet
std::vector< ParSet > makeVariationSet(const std::vector< unsigned > &scanpars, const IdxSet &idx) const
Definition: FPGATrackSimGenScanBinning.cxx:104
FPGATrackSimGenScanBinningBase::sliceBins
virtual std::vector< unsigned > sliceBins() const
Definition: FPGATrackSimGenScanBinning.h:182
FPGATrackSimGenScanMonitoring::m_phiOutExtrap
TH1D * m_phiOutExtrap
Definition: FPGATrackSimGenScanMonitoring.h:196
FPGATrackSimGenScanArray::setsize
void setsize(const std::vector< unsigned int > &dims, const T &initval)
Definition: FPGATrackSimGenScanArray.h:51
FPGATrackSimGenScanMonitoring::m_hitsPerLayer_road
TH2D * m_hitsPerLayer_road
Definition: FPGATrackSimGenScanMonitoring.h:175
FPGATrackSimGenScanMonitoring::m_unpairedHits
TH2D * m_unpairedHits
Definition: FPGATrackSimGenScanMonitoring.h:182
FPGATrackSimGenScanMonitoring::m_etaShift_road
TH1D * m_etaShift_road
Definition: FPGATrackSimGenScanMonitoring.h:172
FPGATrackSimGenScanTool::HitPair::EtaInExtrap
double EtaInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:244
FPGATrackSimGenScanBinningBase::subVec
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec) const
Definition: FPGATrackSimGenScanBinning.cxx:77
FPGATrackSimTrackPars::IETA
@ IETA
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanTool::HitPair::PhiOutExtrap
double PhiOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:234
FPGATrackSimGenScanMonitoring::m_hitsPerLayer
TH1D * m_hitsPerLayer
Definition: FPGATrackSimGenScanMonitoring.h:166
FPGATrackSimGenScanMonitoring::m_rout
double m_rout
Definition: FPGATrackSimGenScanMonitoring.h:117