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