ATLAS Offline Software
FPGATrackSimLayerStudyTool.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
16 #include "TH1D.h"
17 #include "TH2D.h"
18 #include "TTree.h"
19 #include <algorithm>
20 #include <bit>
21 #include <numbers>
22 
23 FPGATrackSimLayerStudyTool::FPGATrackSimLayerStudyTool(const std::string& algname, const std::string &name, const IInterface *ifc) :
24  AthAlgTool(algname, name, ifc)
25 {
26 }
27 
29 {
30  // Dump the configuration to make sure it propagated through right
31  auto props = this->getProperties();
32  for( Gaudi::Details::PropertyBase* prop : props ) {
33  if (prop->ownerTypeName()==this->type()) {
34  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
35  }
36  }
37 
38  ATH_CHECK(m_tHistSvc.retrieve());
39 
41 
42  return StatusCode::SUCCESS;
43 
44 }
45 
47 {
48  m_binnedhits = binnedhits;
49  const FPGATrackSimBinTool &bintool = m_binnedhits->getBinTool();
50  const IFPGATrackSimBinDesc* bindesc = bintool.binDesc();
51  int nLyrs = m_binnedhits->getNLayers();
52 
53  // *Technically* this is a bit fragile. Since we are testing if the event selection service is set to
54  // the "skip truth" type rather than testing if it's set to the SingleMuon, SingleElectron, or SinglePion types.
55  // At the moment though we either set skip truth or we are running single particle, so it could be changed later.
57 
58  // This is because if you change the binning class you can change what axis
59  // ranges you need for the plotting
60  ATH_MSG_INFO("Hist scales phi: " << m_phiScale << " eta: " << m_etaScale << " dr:" << m_drScale);
61 
62  // Truth Parameter distributions, bounds should cover 3x nominal range
63  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++) {
65  m_truthpars_hists[i], ("truth" + bindesc->parNames(i)).c_str(),
66  (";" + m_binnedhits->getBinTool().binDesc()->parNames(i) + ";").c_str(), 2000,
69  }
70 
71  // Data flow hists. We may not need these for the layer study.
72  ATH_CHECK(makeAndRegHist(m_inputHits, "InputHits", ";Input Hits", 200, 0, 100000));
74  &bintool.stepNames(), "hitsPerStep",
75  "; Hits per bin in step", 20, 0, m_isSingleParticle ? 50 : 10000));
76  ATH_CHECK(makeAndRegHist(m_hitsPerLayer, "hitsPerLayer", "; Layer ; Hits ", nLyrs, 0, nLyrs));
77  ATH_CHECK(makeAndRegHist(m_hitsPerLayer2D, "hitsPerLayer2D", "; Layer ; Hits ", nLyrs, 0, nLyrs, 20, 0, m_isSingleParticle ? 20 : 10000));
78  ATH_CHECK(makeAndRegHist(m_binsFilled, "binsFilled", "; Bins Filled per Event", 200, 0, 200));
79 
80 
81  // All Hit level histograms
82  ATH_CHECK(makeAndRegHistVector(m_rZ_allhits, nLyrs + 1, NULL, "RZ_allhits",
83  "; Z [mm] ; R [mm] ", 500, -2000, 2000, 500, 0, 500));
84 
85  ATH_CHECK(makeAndRegHistVector(m_phiResidual, nLyrs + 1, NULL, "phiResidual",
86  "phi residual [mm]", 1000, -10, 10));
87  ATH_CHECK(makeAndRegHistVector(m_etaResidual, nLyrs + 1, NULL, "etaResidual",
88  "eta residual [mm]", 1000, -10, 10));
89 
91  "; R[mm]; phi residual [mm]", 1200, 0, 1200, 1000, -100, 100));
93  "; R[mm]; eta residual [mm]", 1200, 0, 1200, 1000, -100, 100));
94 
96  "; R[mm]; phi scale", 1200, 0, 1200, 1000, -2, 2.0));
98  "; R[mm]; eta scale", 1200, 0, 1200, 1000, -2.0, 2.0));
99 
101  "phiTrueBinShift", "phi TrueBinShift [mm]", 1000, -10, 10));
103  "etaTrueBinShift", "eta TrueBinShift [mm]",1000, -10, 10));
104 
105  // Road statistics
106  ATH_CHECK(makeAndRegHist(m_phiShift_road, "phiShift_road", ";Phi Shift", 2000, -m_phiScale, m_phiScale));
107  ATH_CHECK(makeAndRegHist(m_etaShift_road, "etaShift_road", ";Eta Shift", 2000, -m_etaScale, m_etaScale));
108  ATH_CHECK(makeAndRegHist(m_phiShift2D_road, "phiShift2D_road", ";Phi Shift; R", 400, -m_phiScale, m_phiScale, 100, 0, 400));
109  ATH_CHECK(makeAndRegHist(m_etaShift2D_road, "etaShift2D_road", ";Phi Shift; R", 400, -m_etaScale, m_etaScale, 100, 0, 400));
110 
111  // Efficiency monitoring
113  "ptDist", "pT [GeV]",400, 0, 100));
115  "etaDist", "#eta",1000, -5, 5));
117  "phiDist", "#phi",640, 0, 2*std::numbers::pi));
119  "d0Dist", "d_{0} [mm]",120, -3.0, 3.0));
121  "z0Dist", "z_{0} [mm]",400, -200.0, 200.0));
122 
123  return StatusCode::SUCCESS;
124 }
125 
126 
128  ATH_MSG_DEBUG("Booking Layers Study Tree");
129  m_bin_tree = new TTree("LayerStudy","LayerStudy");
130  m_bin_tree->Branch("bin", &m_bin_tree_bin);
131  m_bin_tree->Branch("r", &m_bin_tree_r);
132  m_bin_tree->Branch("z", &m_bin_tree_z);
133  m_bin_tree->Branch("id", &m_bin_tree_id);
134  m_bin_tree->Branch("hash", &m_bin_tree_hash);
135  m_bin_tree->Branch("layer", &m_bin_tree_layer);
136  m_bin_tree->Branch("side", &m_bin_tree_side);
137  m_bin_tree->Branch("etamod", &m_bin_tree_etamod);
138  m_bin_tree->Branch("phimod", &m_bin_tree_phimod);
139  m_bin_tree->Branch("dettype", &m_bin_tree_dettype);
140  m_bin_tree->Branch("detzone", &m_bin_tree_detzone);
141 
142  m_truth_tree = new TTree("TruthTree", "TruthTree");
143  m_truth_tree->Branch("stdpars", &m_truth_tree_phi);
144  m_truth_tree->Branch("stdpars", &m_truth_tree_qOverPt);
145  m_truth_tree->Branch("stdpars", &m_truth_tree_eta);
146  m_truth_tree->Branch("stdpars", &m_truth_tree_d0);
147  m_truth_tree->Branch("stdpars", &m_truth_tree_z0);
148  m_truth_tree->Branch("parset", &m_truth_tree_parset);
149 
150  ATH_CHECK(m_tHistSvc->regTree(m_dir + m_bin_tree->GetName(), m_bin_tree));
151  ATH_CHECK(m_tHistSvc->regTree(m_dir + m_truth_tree->GetName(), m_truth_tree));
152  return StatusCode::SUCCESS;
153 }
155 {
156  m_bin_tree_r.clear();
157  m_bin_tree_z.clear();
158  m_bin_tree_id.clear();
159  m_bin_tree_hash.clear();
160  m_bin_tree_layer.clear();
161  m_bin_tree_side.clear();
162  m_bin_tree_etamod.clear();
163  m_bin_tree_phimod.clear();
164  m_bin_tree_dettype.clear();
165  m_bin_tree_detzone.clear();
166 
167  m_truth_tree_parset.clear();
168 }
169 
170 void FPGATrackSimLayerStudyTool::fillBinLevelOutput ATLAS_NOT_THREAD_SAFE(const FPGATrackSimBinUtil::IdxSet &idx,
172 {
173  setBinPlotsActive(idx);
174 
175  // fill all truth
176  m_ptDist[0]->Fill(std::abs(1/m_truthpars.qOverPt));
177  m_etaDist[0]->Fill(1/m_truthpars.eta);
178  m_phiDist[0]->Fill(1/m_truthpars.phi);
179  m_d0Dist[0]->Fill(1/m_truthpars.d0);
180  m_z0Dist[0]->Fill(1/m_truthpars.z0);
181 
182  if (m_binPlotsActive) {
183  for (auto& hit : data.hits) {
184  m_phiShift_road->Fill(hit.phiShift);
185  m_etaShift_road->Fill(hit.etaShift);
186  m_phiShift2D_road->Fill(hit.phiShift, hit.hitptr->getR());
187  m_etaShift2D_road->Fill(hit.etaShift, hit.hitptr->getR());
188  }
189 
190  // fill param monitoring
191  for (int i = 0; i < 2; i++) {
192  // i=0 all, i=1 no missed layers, i=2 is one missed layer
193  if ((i == 0)|| (data.lyrCnt() >= m_binnedhits->getNLayers() - (i - 1))) {
194  // all layer hit
195  m_ptDist[i]->Fill(std::abs(1 / m_truthpars.qOverPt));
196  m_etaDist[i]->Fill(1 / m_truthpars.eta);
197  m_phiDist[i]->Fill(1 / m_truthpars.phi);
198  m_d0Dist[i]->Fill(1 / m_truthpars.d0);
199  m_z0Dist[i]->Fill(1 / m_truthpars.z0);
200  }
201  }
202 
203  // Module mapping and Layer definition studies
204  // first sort hits by r+z radii
205  std::vector<FPGATrackSimBinUtil::StoredHit> sorted_hits = data.hits;
206  std::sort(sorted_hits.begin(), sorted_hits.end(),
207  [](const auto &hit1, const auto &hit2) {
208  return hit1.rzrad() < hit2.rzrad();
209  });
210 
211  // Fill tree
212  m_bin_tree_bin = std::vector<unsigned>(idx);
213  ClearTreeVectors();
214  for (auto &hit : sorted_hits) {
215 
216  m_bin_tree_r.push_back(hit.hitptr->getR());
217  m_bin_tree_z.push_back(hit.hitptr->getZ());
218  m_bin_tree_id.push_back(hit.hitptr->getIdentifier());
219  m_bin_tree_hash.push_back(hit.hitptr->getIdentifierHash());
220  m_bin_tree_layer.push_back(hit.hitptr->getLayerDisk());
221  m_bin_tree_side.push_back(hit.hitptr->getSide());
222  m_bin_tree_etamod.push_back(hit.hitptr->getEtaModule());
223  m_bin_tree_phimod.push_back(hit.hitptr->getPhiModule());
224  m_bin_tree_dettype.push_back((int)hit.hitptr->getDetType());
225  m_bin_tree_detzone.push_back((int)hit.hitptr->getDetectorZone());
226  }
227  m_bin_tree->Fill();
228  m_binsFilledCnt++;
229  }
230 }
231 
232 void FPGATrackSimLayerStudyTool::fillBinningSummary ATLAS_NOT_THREAD_SAFE(
233  const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits)
234 {
235  m_inputHits->Fill(hits.size());
236 
237  for (auto &step : m_binnedhits->getBinTool().steps()) {
238  for (auto bin : m_binnedhits->binnedHits()[step->stepNum()])
239  m_hitsPerStepBin[step->stepNum()]->Fill(bin.data().hitCnt);
240  }
241 
242  for (auto bin :m_binnedhits->binnedHits()[m_binnedhits->getBinTool().lastStep()->stepNum()]) {
243  for (unsigned lyr = 0; lyr < m_binnedhits->getNLayers(); lyr++) {
244  unsigned cnt = bin.data().hitsInLyr(lyr);
245  m_hitsPerLayer->Fill(lyr, cnt);
246  m_hitsPerLayer2D->Fill(lyr, cnt);
247  }
248  }
249 
250  m_binsFilled->Fill(m_binsFilledCnt);
251  m_binsFilledCnt=0;
252 
253 }
254 
256  const IFPGATrackSimBinDesc* bindesc = m_binnedhits->getBinTool().binDesc();
257  m_rZ_allhits[m_binnedhits->getNLayers()]->Fill(hit->getZ(), hit->getR()); // all layer plot
258  if (m_truthIsValid)
259  {
262 
263  int ptbin =
264  floor((m_truthpars[FPGATrackSimTrackPars::IHIP] + 1.0) / 2.0 * m_N_ptplot);
265  ptbin = std::min(std::max(ptbin,0),4);
266  m_etaResidual_v_r[ptbin]->Fill(hit->getR(), bindesc->etaResidual(m_truthparset, hit));
267  m_phiResidual_v_r[ptbin]->Fill(hit->getR(), bindesc->phiResidual(m_truthparset, hit));
268 
270  double phiscale = -1.0*(hit->getGPhi()-m_truthpars[FPGATrackSimTrackPars::IPHI])/expectedshift;
271  m_phiScale_v_r[ptbin]->Fill(hit->getR(), phiscale);
272 
273 
276  m_etaTrueBinShift[m_binnedhits->getNLayers()]->Fill(bindesc->etaResidual(binCenter, hit));
277  m_phiTrueBinShift[m_binnedhits->getNLayers()]->Fill(bindesc->phiResidual(binCenter, hit));
278  }
279  }
280 }
281 
282 
283 
284 void FPGATrackSimLayerStudyTool::parseTruthInfo ATLAS_NOT_THREAD_SAFE(std::vector<FPGATrackSimTruthTrack> const & truthtracks) {
285  ATH_MSG_DEBUG("In parseTruthInfo, truthtracks size = " << truthtracks.size());
286  m_truthIsValid = false;
287 
288  const IFPGATrackSimBinDesc* bindesc = m_binnedhits->getBinTool().binDesc();
289 
290  if (truthtracks.size() == 0) return;
291 
292  // Convert to binning parameters and find truth bin for each step
293  m_truthpars = (truthtracks)[0].getPars();
294  m_truthpars[FPGATrackSimTrackPars::IHIP] =
295  m_truthpars[FPGATrackSimTrackPars::IHIP] * 1000;
296  m_truthparset = bindesc->trackParsToParSet(m_truthpars);
297  m_truthbin.clear();
298  for (auto &step : m_binnedhits->getBinTool().steps()) {
299  m_truthbin.push_back(step->binIdx(m_truthparset));
300  }
301 
302  // histogram parameters
303  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++) {
304  m_truthpars_hists[i]->Fill(m_truthparset[i]);
305  }
306 
307  // a closure test
308  FPGATrackSimTrackPars recovered = bindesc->parSetToTrackPars(m_truthparset);
309  ATH_MSG_DEBUG("parset:" << m_truthparset << " " << m_truthpars
310  << " ?= " << recovered << " closure:"
311  << " " << recovered[FPGATrackSimTrackPars::IHIP] - m_truthpars[FPGATrackSimTrackPars::IHIP]
312  << " " << recovered[FPGATrackSimTrackPars::IPHI] - m_truthpars[FPGATrackSimTrackPars::IPHI]
313  << " " << recovered[FPGATrackSimTrackPars::ID0] - m_truthpars[FPGATrackSimTrackPars::ID0]
314  << " " << recovered[FPGATrackSimTrackPars::IETA] - m_truthpars[FPGATrackSimTrackPars::IETA]
315  << " " << recovered[FPGATrackSimTrackPars::IZ0] - m_truthpars[FPGATrackSimTrackPars::IZ0]);
316 
317  m_truth_tree_phi = m_truthpars[FPGATrackSimTrackPars::IPHI];
318  m_truth_tree_qOverPt = m_truthpars[FPGATrackSimTrackPars::IHIP];
319  m_truth_tree_d0 = m_truthpars[FPGATrackSimTrackPars::ID0];
320  m_truth_tree_z0 = m_truthpars[FPGATrackSimTrackPars::IZ0];
321  m_truth_tree_eta = m_truthpars[FPGATrackSimTrackPars::IETA];
322  m_truth_tree_parset = std::vector<double>(m_truthparset);
323  m_truth_tree->Fill();
324 
325  // print if there are multiple tracks for debugging single track MC
326  if (truthtracks.size() > 1) {
327  for (unsigned i = 0; i < truthtracks.size(); i++) {
328  ATH_MSG_INFO("Multiple truth" << i << " of " << truthtracks.size()
329  << " " << (truthtracks)[i].getPars());
330  }
331  }
332 
333  // find truth bin for later plotting selections
334  ATH_MSG_DEBUG("truthbin " << truthtracks.size()
335  << " " << m_truthpars << " " << m_truthbin);
336 
337  // Check if the truth track falls in the binning range
338  if (!m_binnedhits->getBinTool().inRange(m_truthparset)) {
339  ATH_MSG_INFO("Truth out of range because truth parset = " << m_truthparset << " wrt min = " << m_binnedhits->getBinTool().parMin() << ", max = " << m_binnedhits->getBinTool().parMax());
340  return;
341  }
342 
343  // Check that truth track falls in an actual bin
344  // this should alway pass, except for weird events
345  m_truthIsValid = true;
346  for (auto &step : m_binnedhits->getBinTool().steps()) {
347  if (!step->validBinsFull()[m_truthbin[step->stepNum()]]) {
348  ATH_MSG_INFO("Truth Bin not valid! Step " << step->stepName() << " "
349  << m_truthbin[step->stepNum()]
350  << " : " << m_truthpars);
351  std::vector<FPGATrackSimBinUtil::IdxSet> idxsets =
353  std::vector<unsigned>({0, 1, 2, 3, 4}),
354  m_truthbin[step->stepNum()]);
355  for (FPGATrackSimBinUtil::IdxSet &idxset : idxsets) {
356  ATH_MSG_INFO("Truth Box "
357  << bindesc->parSetToTrackPars(step->binLowEdge(idxset)));
358  }
359  m_truthIsValid = false;
360  }
361  }
362 }
363 
364 
366 {
368 
369  // this finds the parameters at all 2^5 corners of the bin and then finds the min and max of those
370  std::vector<FPGATrackSimBinUtil::IdxSet> idxsets = FPGATrackSimBinUtil::makeVariationSet(std::vector<unsigned>({0,1,2,3,4}),idx);
371  const FPGATrackSimBinTool &bintool = m_binnedhits->getBinTool();
372  const IFPGATrackSimBinDesc* bindesc = bintool.binDesc();
373 
374  // get window in std parameters for bin
375  FPGATrackSimTrackPars minpars = bindesc->parSetToTrackPars(bintool.lastStep()->binCenter(idx));
376  FPGATrackSimTrackPars maxpars = bindesc->parSetToTrackPars(bintool.lastStep()->binCenter(idx));
377  for (FPGATrackSimBinUtil::IdxSet & idxset : idxsets) {
378  FPGATrackSimTrackPars trackpars = bindesc->parSetToTrackPars(bintool.lastStep()->binLowEdge(idxset));
379  for (unsigned par =0; par < FPGATrackSimTrackPars::NPARS; par++) {
380  minpars[par] = std::min(minpars[par],trackpars[par]);
381  maxpars[par] = std::max(maxpars[par],trackpars[par]);
382  }
383  }
384 
385  // check if truth track is in bin within padding
392  bool inRange = true;
393  for (unsigned par =0; par < FPGATrackSimTrackPars::NPARS; par++) {
394  inRange = inRange && (m_truthpars[par] > minpars[par]-padding[par]);
395  inRange = inRange && (m_truthpars[par] < maxpars[par]+padding[par]);
396  }
397  //m_binPlotsActive |= inRange;
399 
400 
401 }
FPGATrackSimLayerStudyTool::m_d0pad
Gaudi::Property< double > m_d0pad
Definition: FPGATrackSimLayerStudyTool.h:86
FPGATrackSimLayerStudyTool::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimLayerStudyTool.h:76
FPGATrackSimLayerStudyTool::m_phiScale
Gaudi::Property< double > m_phiScale
Definition: FPGATrackSimLayerStudyTool.h:81
FPGATrackSimBinStep::binLowEdge
double binLowEdge(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:63
FPGATrackSimLayerStudyTool::m_phiScale_v_r
std::vector< TH2D * > m_phiScale_v_r
Definition: FPGATrackSimLayerStudyTool.h:133
FPGATrackSimTrackPars::IHIP
@ IHIP
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimLayerStudyTool::FPGATrackSimLayerStudyTool
FPGATrackSimLayerStudyTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimLayerStudyTool.cxx:23
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
FPGATrackSimTrackPars::ID0
@ ID0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimLayerStudyTool::m_etapad
Gaudi::Property< double > m_etapad
Definition: FPGATrackSimLayerStudyTool.h:90
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimLayerStudyTool::m_etaTrueBinShift
std::vector< TH1D * > m_etaTrueBinShift
Definition: FPGATrackSimLayerStudyTool.h:129
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimLayerStudyTool::m_etaScale_v_r
std::vector< TH2D * > m_etaScale_v_r
Definition: FPGATrackSimLayerStudyTool.h:134
FPGATrackSimBinTool::steps
const ToolHandleArray< FPGATrackSimBinStep > & steps() const
Definition: FPGATrackSimBinTool.h:55
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthMsgStreamMacros.h
FPGATrackSimLayerStudyTool::m_rZ_allhits
std::vector< TH2D * > m_rZ_allhits
Definition: FPGATrackSimLayerStudyTool.h:117
FPGATrackSimLayerStudyTool::m_phiResidual_v_r
std::vector< TH2D * > m_phiResidual_v_r
Definition: FPGATrackSimLayerStudyTool.h:131
FPGATrackSimBinUtil::invalidBin
const IdxSet invalidBin
Definition: FPGATrackSimBinUtil.h:57
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimLayerStudyTool::m_phiResidual
std::vector< TH1D * > m_phiResidual
Definition: FPGATrackSimLayerStudyTool.h:126
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
FPGATrackSimLayerStudyTool::m_truth_tree
TTree * m_truth_tree
Definition: FPGATrackSimLayerStudyTool.h:176
IFPGATrackSimBinDesc::trackParsToParSet
virtual const FPGATrackSimBinUtil::ParSet trackParsToParSet(const FPGATrackSimTrackPars &pars) const =0
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
FPGATrackSimTrackPars::IZ0
@ IZ0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimBinStep::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:62
FPGATrackSimLayerStudyTool::m_truth_tree_eta
double m_truth_tree_eta
Definition: FPGATrackSimLayerStudyTool.h:181
FPGATrackSimLayerStudyTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimLayerStudyTool.cxx:28
FPGATrackSimLayerStudyTool::m_binnedhits
const FPGATrackSimBinnedHits * m_binnedhits
Definition: FPGATrackSimLayerStudyTool.h:94
IFPGATrackSimBinDesc::etaResidual
virtual double etaResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const =0
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimLayerStudyTool::m_truthIsValid
bool m_truthIsValid
Definition: FPGATrackSimLayerStudyTool.h:99
FPGATrackSimLayerStudyTool::bookTrees
StatusCode bookTrees()
Definition: FPGATrackSimLayerStudyTool.cxx:127
FPGATrackSimLayerStudyTool::m_bin_tree_etamod
std::vector< int > m_bin_tree_etamod
Definition: FPGATrackSimLayerStudyTool.h:171
FPGATrackSimLayerStudyTool::m_bin_tree_dettype
std::vector< int > m_bin_tree_dettype
Definition: FPGATrackSimLayerStudyTool.h:173
FPGATrackSimLayerStudyTool.h
FPGATrackSimLayerStudyTool::m_bin_tree_hash
std::vector< int > m_bin_tree_hash
Definition: FPGATrackSimLayerStudyTool.h:168
FPGATrackSimLayerStudyTool::m_d0Dist
std::vector< TH1D * > m_d0Dist
Definition: FPGATrackSimLayerStudyTool.h:152
FPGATrackSimBinTool::lastStep
FPGATrackSimBinStep * lastStep()
Definition: FPGATrackSimBinTool.h:56
FPGATrackSimLayerStudyTool::m_truthparset
FPGATrackSimBinUtil::ParSet m_truthparset
Definition: FPGATrackSimLayerStudyTool.h:102
FPGATrackSimBinnedHits.h
Binning Classes for GenScanTool.
FPGATrackSimLayerStudyTool::registerHistograms
StatusCode registerHistograms(const FPGATrackSimBinnedHits *binnedhits, bool skipTruth)
Definition: FPGATrackSimLayerStudyTool.cxx:46
dqutils::padding
std::atomic< int > padding
Definition: MonitoringFile_MoveVertexMonitoring.cxx:20
pi
#define pi
Definition: TileMuonFitter.cxx:65
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:40
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimHit::getGPhi
float getGPhi() const
Definition: FPGATrackSimHit.h:153
FPGATrackSimLayerStudyTool::fillHitLevelInput
void fillHitLevelInput(const FPGATrackSimHit *hit)
Definition: FPGATrackSimLayerStudyTool.cxx:255
FPGATrackSimLayerStudyTool::m_N_ptplot
int m_N_ptplot
Definition: FPGATrackSimLayerStudyTool.h:130
FPGATrackSimBinUtil::GeomHelpers::dPhiHitTrkFromPars
static double dPhiHitTrkFromPars(double r, const FPGATrackSimTrackPars &pars)
Definition: FPGATrackSimBinUtil.cxx:162
FPGATrackSimLayerStudyTool::m_truthbin
std::vector< FPGATrackSimBinUtil::IdxSet > m_truthbin
Definition: FPGATrackSimLayerStudyTool.h:101
FPGATrackSimLayerStudyTool::m_truth_tree_d0
double m_truth_tree_d0
Definition: FPGATrackSimLayerStudyTool.h:179
FPGATrackSimLayerStudyTool::m_isSingleParticle
bool m_isSingleParticle
Definition: FPGATrackSimLayerStudyTool.h:98
FPGATrackSimLayerStudyTool::m_z0pad
Gaudi::Property< double > m_z0pad
Definition: FPGATrackSimLayerStudyTool.h:89
FPGATrackSimLayerStudyTool::m_etaShift2D_road
TH2D * m_etaShift2D_road
Definition: FPGATrackSimLayerStudyTool.h:139
FPGATrackSimLayerStudyTool::m_ptDist
std::vector< TH1D * > m_ptDist
Definition: FPGATrackSimLayerStudyTool.h:149
FPGATrackSimLayerStudyTool::m_bin_tree_detzone
std::vector< int > m_bin_tree_detzone
Definition: FPGATrackSimLayerStudyTool.h:174
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimLayerStudyTool::setBinPlotsActive
void setBinPlotsActive(const FPGATrackSimBinUtil::IdxSet &idx)
Definition: FPGATrackSimLayerStudyTool.cxx:365
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
IFPGATrackSimBinDesc::parNames
virtual const std::string & parNames(unsigned i) const =0
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGATrackSimLayerStudyTool::m_phiTrueBinShift
std::vector< TH1D * > m_phiTrueBinShift
Definition: FPGATrackSimLayerStudyTool.h:128
FPGATrackSimLayerStudyTool::m_bin_tree_bin
std::vector< unsigned > m_bin_tree_bin
Definition: FPGATrackSimLayerStudyTool.h:164
FPGATrackSimLayerStudyTool::m_phiShift_road
TH1D * m_phiShift_road
Definition: FPGATrackSimLayerStudyTool.h:136
FPGATrackSimLayerStudyTool::ClearTreeVectors
void ClearTreeVectors()
Definition: FPGATrackSimLayerStudyTool.cxx:154
FPGATrackSimLayerStudyTool::m_hitsPerStepBin
std::vector< TH1D * > m_hitsPerStepBin
Definition: FPGATrackSimLayerStudyTool.h:142
FPGATrackSimLayerStudyTool::m_etaResidual
std::vector< TH1D * > m_etaResidual
Definition: FPGATrackSimLayerStudyTool.h:127
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimLayerStudyTool::m_etaShift_road
TH1D * m_etaShift_road
Definition: FPGATrackSimLayerStudyTool.h:137
FPGATrackSimLayerStudyTool::m_hitsPerLayer2D
TH2D * m_hitsPerLayer2D
Definition: FPGATrackSimLayerStudyTool.h:144
FPGATrackSimLayerStudyTool::m_drScale
Gaudi::Property< double > m_drScale
Definition: FPGATrackSimLayerStudyTool.h:83
FPGATrackSimLayerStudyTool::makeAndRegHist
StatusCode makeAndRegHist(HistType *&ptr, HistDef... histargs)
Definition: FPGATrackSimLayerStudyTool.h:187
FPGATrackSimLayerStudyTool::m_truthpars
FPGATrackSimTrackPars m_truthpars
Definition: FPGATrackSimLayerStudyTool.h:100
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimLayerStudyTool::m_bin_tree_r
std::vector< float > m_bin_tree_r
Definition: FPGATrackSimLayerStudyTool.h:165
FPGATrackSimLayerStudyTool::m_etaScale
Gaudi::Property< double > m_etaScale
Definition: FPGATrackSimLayerStudyTool.h:82
FPGATrackSimLayerStudyTool::m_bin_tree_z
std::vector< float > m_bin_tree_z
Definition: FPGATrackSimLayerStudyTool.h:166
IFPGATrackSimBinDesc::parSetToTrackPars
virtual const FPGATrackSimTrackPars parSetToTrackPars(const FPGATrackSimBinUtil::ParSet &parset) const =0
FPGATrackSimBinTool::binDesc
const IFPGATrackSimBinDesc * binDesc() const
Definition: FPGATrackSimBinTool.h:53
FPGATrackSimHit::getZ
float getZ() const
Definition: FPGATrackSimHit.h:151
FPGATrackSimLayerStudyTool::m_z0Dist
std::vector< TH1D * > m_z0Dist
Definition: FPGATrackSimLayerStudyTool.h:153
inRange
bool inRange(const double *boundaries, const double value, const double tolerance=0.02)
Definition: LArSCIdVsIdTest.cxx:5
FPGATrackSimLayerStudyTool::m_etaResidual_v_r
std::vector< TH2D * > m_etaResidual_v_r
Definition: FPGATrackSimLayerStudyTool.h:132
SampleType::skipTruth
@ skipTruth
FPGATrackSimBinUtil::makeVariationSet
std::vector< IdxSet > makeVariationSet(const std::vector< unsigned > &scanpars, const IdxSet &idx)
Definition: FPGATrackSimBinUtil.cxx:93
FPGATrackSimBinnedHits::BinEntry
Definition: FPGATrackSimBinnedHits.h:70
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:28
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimLayerStudyTool::m_truthpars_hists
TH1D * m_truthpars_hists[5]
Definition: FPGATrackSimLayerStudyTool.h:118
FPGATrackSimLayerStudyTool::m_inputHits
TH1D * m_inputHits
Definition: FPGATrackSimLayerStudyTool.h:120
FPGATrackSimLayerStudyTool::m_truth_tree_parset
std::vector< double > m_truth_tree_parset
Definition: FPGATrackSimLayerStudyTool.h:182
ATLAS_NOT_THREAD_SAFE
void FPGATrackSimLayerStudyTool::fillBinLevelOutput ATLAS_NOT_THREAD_SAFE(const FPGATrackSimBinUtil::IdxSet &idx, const FPGATrackSimBinnedHits::BinEntry &data)
Definition: FPGATrackSimLayerStudyTool.cxx:170
FPGATrackSimLayerStudyTool::m_distPlotClasses
std::vector< std::string > m_distPlotClasses
Definition: FPGATrackSimLayerStudyTool.h:148
FPGATrackSimLayerStudyTool::m_truth_tree_z0
double m_truth_tree_z0
Definition: FPGATrackSimLayerStudyTool.h:180
FPGATrackSimLayerStudyTool::m_bin_tree_id
std::vector< int > m_bin_tree_id
Definition: FPGATrackSimLayerStudyTool.h:167
FPGATrackSimTrackPars::IPHI
@ IPHI
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimBinnedHits::getBinTool
const FPGATrackSimBinTool & getBinTool() const
Definition: FPGATrackSimBinnedHits.h:63
FPGATrackSimBinTool::parRange
double parRange(unsigned par) const
Definition: FPGATrackSimBinTool.h:70
FPGATrackSimLayerStudyTool::m_phiShift2D_road
TH2D * m_phiShift2D_road
Definition: FPGATrackSimLayerStudyTool.h:138
FPGATrackSimLayerStudyTool::m_qptpad
Gaudi::Property< double > m_qptpad
Definition: FPGATrackSimLayerStudyTool.h:88
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:152
FPGATrackSimLayerStudyTool::m_bin_tree_side
std::vector< int > m_bin_tree_side
Definition: FPGATrackSimLayerStudyTool.h:170
FPGATrackSimLayerStudyTool::m_bin_tree_phimod
std::vector< int > m_bin_tree_phimod
Definition: FPGATrackSimLayerStudyTool.h:172
trigbs_pickEvents.cnt
cnt
Definition: trigbs_pickEvents.py:71
FPGATrackSimLayerStudyTool::m_etaDist
std::vector< TH1D * > m_etaDist
Definition: FPGATrackSimLayerStudyTool.h:150
FPGATrackSimLayerStudyTool::m_truth_tree_qOverPt
double m_truth_tree_qOverPt
Definition: FPGATrackSimLayerStudyTool.h:178
FPGATrackSimLayerStudyTool::m_dir
Gaudi::Property< std::string > m_dir
Definition: FPGATrackSimLayerStudyTool.h:80
FPGATrackSimTrackPars::NPARS
@ NPARS
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimLayerStudyTool::m_phipad
Gaudi::Property< double > m_phipad
Definition: FPGATrackSimLayerStudyTool.h:87
IFPGATrackSimBinDesc
Definition: IFPGATrackSimBinDesc.h:47
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
LArCellBinning.step
step
Definition: LArCellBinning.py:158
FPGATrackSimLayerStudyTool::m_truth_tree_phi
double m_truth_tree_phi
Definition: FPGATrackSimLayerStudyTool.h:177
FPGATrackSimLayerStudyTool::m_plotAllBins
Gaudi::Property< bool > m_plotAllBins
Definition: FPGATrackSimLayerStudyTool.h:84
FPGATrackSimLayerStudyTool::makeAndRegHistVector
StatusCode makeAndRegHistVector(std::vector< HistType * > &vec, unsigned len, const std::vector< std::string > *namevec, const char *namebase, HistDef... histargs)
Definition: FPGATrackSimLayerStudyTool.h:196
FPGATrackSimBinnedHits::getNLayers
unsigned getNLayers() const
Definition: FPGATrackSimBinnedHits.h:97
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimLayerStudyTool::m_binsFilled
TH1D * m_binsFilled
Definition: FPGATrackSimLayerStudyTool.h:123
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50
IFPGATrackSimBinDesc::phiResidual
virtual double phiResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const =0
FPGATrackSimBinTool::stepNames
const std::vector< std::string > & stepNames() const
Definition: FPGATrackSimBinTool.h:58
FPGATrackSimLayerStudyTool::m_bin_tree_layer
std::vector< int > m_bin_tree_layer
Definition: FPGATrackSimLayerStudyTool.h:169
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimLayerStudyTool::m_bin_tree
TTree * m_bin_tree
Definition: FPGATrackSimLayerStudyTool.h:163
FPGATrackSimLayerStudyTool::m_phiDist
std::vector< TH1D * > m_phiDist
Definition: FPGATrackSimLayerStudyTool.h:151
FPGATrackSimLayerStudyTool::m_binPlotsActive
bool m_binPlotsActive
Definition: FPGATrackSimLayerStudyTool.h:110
FPGATrackSimBinnedHits
Definition: FPGATrackSimBinnedHits.h:50
FPGATrackSimTrackPars::IETA
@ IETA
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimLayerStudyTool::m_hitsPerLayer
TH1D * m_hitsPerLayer
Definition: FPGATrackSimLayerStudyTool.h:143