ATLAS Offline Software
FPGATrackSimReportingAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
5 
6 
7 
8 FPGATrackSim::FPGATrackSimReportingAlg::FPGATrackSimReportingAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthReentrantAlgorithm(name, pSvcLocator) {
9 }
10 
12 {
13  ATH_CHECK(m_xAODPixelClusterContainerKeys.initialize());
14  ATH_CHECK(m_xAODStripClusterContainerKeys.initialize());
15  ATH_CHECK(m_xAODSpacePointContainerKeys.initialize());
16  ATH_CHECK(m_FPGARoadsKey.initialize(!m_isDataPrep));
17  ATH_CHECK(m_FPGAProtoTrackCollections.initialize(!m_isDataPrep));
18  ATH_CHECK(m_FPGATracksKey.initialize(!m_isDataPrep));
19  ATH_CHECK(m_ActsTrackCollections.initialize(!m_isDataPrep));
20 
21  ATH_CHECK(m_ActsInspectionTool.retrieve());
22  return StatusCode::SUCCESS;
23 }
24 
26 {
27  // Process xAOD Pixel Clusters
28  std::vector<SG::ReadHandle<xAOD::PixelClusterContainer>> xAODPixelClusterContainers = m_xAODPixelClusterContainerKeys.makeHandles(ctx);
29  for (SG::ReadHandle<xAOD::PixelClusterContainer>& clusterContainer : xAODPixelClusterContainers)
30  {
31  if (!clusterContainer.isValid()) {
32  ATH_MSG_ERROR("Invalid SG key " << clusterContainer.key());
33  return StatusCode::FAILURE;
34  }
35  processxAODClusters<xAOD::PixelCluster>(clusterContainer);
36  }
37  // Process xAOD Strip Clusters
38  std::vector<SG::ReadHandle<xAOD::StripClusterContainer>> xAODStripClusterContainers = m_xAODStripClusterContainerKeys.makeHandles(ctx);
39  for (SG::ReadHandle<xAOD::StripClusterContainer>& clusterContainer : xAODStripClusterContainers)
40  {
41  if (!clusterContainer.isValid()) {
42  ATH_MSG_ERROR("Invalid SG key " << clusterContainer.key());
43  return StatusCode::FAILURE;
44  }
45  processxAODClusters<xAOD::StripCluster>(clusterContainer);
46  }
47  // Process xAOD SpacePoints
48  std::vector<SG::ReadHandle<xAOD::SpacePointContainer>> xAODSpacePointContainers = m_xAODSpacePointContainerKeys.makeHandles(ctx);
49  for (SG::ReadHandle<xAOD::SpacePointContainer>& spContainer : xAODSpacePointContainers)
50  {
51  if (!spContainer.isValid()) {
52  ATH_MSG_WARNING("Invalid SG key " << spContainer.key());
53  }
54  else {processxAODSpacePoints(spContainer);}
55  }
56  if (!m_isDataPrep.value()) {
57  // Process FPGATrackSim Roads
58  SG::ReadHandle<FPGATrackSimRoadCollection> FPGATrackSimRoads(m_FPGARoadsKey, ctx);
59  if (!FPGATrackSimRoads.isValid()) {
60  ATH_MSG_ERROR("Could not find FPGA Roads Collection with key " << FPGATrackSimRoads.key());
61  return StatusCode::FAILURE;
62  }
63  processFPGARoads(FPGATrackSimRoads);
64 
65  // Process FPGATrackSim Tracks
66  SG::ReadHandle<FPGATrackSimTrackCollection> FPGATrackSimTracks(m_FPGATracksKey, ctx);
67  if (!FPGATrackSimTracks.isValid()) {
68  ATH_MSG_ERROR("Could not find FPGA Track Collection with key " << FPGATrackSimTracks.key());
69  return StatusCode::FAILURE;
70  }
71  processFPGATracks(FPGATrackSimTracks);
72 
73  // Process FPGATrackSim Prototracks
74  std::vector<SG::ReadHandle<ActsTrk::ProtoTrackCollection>> FPGATrackSimProtoTracks = m_FPGAProtoTrackCollections.makeHandles(ctx);
75  for (SG::ReadHandle<ActsTrk::ProtoTrackCollection>& prototrackContainer : FPGATrackSimProtoTracks)
76  {
77  if (!prototrackContainer.isValid()) {
78  ATH_MSG_ERROR("Invalid SG key " << prototrackContainer.key());
79  return StatusCode::FAILURE;
80  }
81  processFPGAPrototracks(prototrackContainer);
82  }
83 
84  // Process Acts tracks
85  std::vector<SG::ReadHandle<ActsTrk::TrackContainer>> FPGAActsTracks = m_ActsTrackCollections.makeHandles(ctx);
86  for (SG::ReadHandle<ActsTrk::TrackContainer>& actsTrackContainer : FPGAActsTracks)
87  {
88  if (actsTrackContainer.cptr()) ATH_MSG_DEBUG("Proccessing " << actsTrackContainer.key());
89  else continue;
90  // initialize the ReadHandle pair if necessarys
91  m_allActsTracks.try_emplace(actsTrackContainer.key(), std::vector<FPGATrackSimActsEventTracks>{});
92 
93  // fetch acts tracks
94  m_allActsTracks[actsTrackContainer.key()].push_back(m_ActsInspectionTool->getActsTracks(*(actsTrackContainer.cptr())));
95 
96  // initialize ReadHandle stats map for all tracks if necessary
97  m_actsTrackStats.try_emplace(actsTrackContainer.key(), std::map<uint32_t, std::vector<uint32_t>>{});
98 
99  m_actsTrackStats[actsTrackContainer.key()].emplace(
100  Acts::TrackStateFlag::OutlierFlag, std::vector<uint32_t>{});
101  m_actsTrackStats[actsTrackContainer.key()].emplace(
102  Acts::TrackStateFlag::HoleFlag, std::vector<uint32_t>{});
103  m_actsTrackStats[actsTrackContainer.key()].emplace(
104  Acts::TrackStateFlag::MeasurementFlag, std::vector<uint32_t>{});
105 
106  for (const auto& track : m_allActsTracks[actsTrackContainer.key()].back()) {
107  uint32_t t_nOutliers = 0, t_nMeasurements = 0, t_nHoles = 0;
108  for (const auto& measurement : track->trackMeasurements)
109  {
110  if (measurement->outlierFlag) ++t_nOutliers;
111  if (measurement->measurementFlag) ++t_nMeasurements;
112  if (measurement->holeFlag) ++t_nHoles;
113  }
114  m_actsTrackStats[actsTrackContainer.key()][Acts::TrackStateFlag::OutlierFlag].push_back(t_nOutliers);
115  m_actsTrackStats[actsTrackContainer.key()][Acts::TrackStateFlag::HoleFlag].push_back(t_nHoles);
116  m_actsTrackStats[actsTrackContainer.key()][Acts::TrackStateFlag::MeasurementFlag].push_back(t_nMeasurements);
117  }
118  if (m_printoutForEveryEvent) ATH_MSG_INFO(m_ActsInspectionTool->getPrintoutActsEventTracks(m_allActsTracks[actsTrackContainer.key()].back()));
119  }
120  } // if it's not the data preparation chain
121  return StatusCode::SUCCESS;
122 }
123 
125 {
126  ATH_MSG_INFO("Printing statistics for FPGA objects");
127 
128  if (!m_isDataPrep.value()) {
129  // Printing summary for clusters/FPGATracks
130  std::string summaryTableFPGATracks = "\n"
131  "Number of measurements for FPGA Tracks\n"
132  "|-----------------------------------|\n"
133  "| | min | max | Avg |\n"
134  "|-----------------------------------|\n";
135 
136  if (not m_pixelClustersPerFPGATrack.empty()) {
137  summaryTableFPGATracks += std::format("| Pixels | {:>4} | {:>4} | {:>10.2f} |\n",
138  *std::min_element(m_pixelClustersPerFPGATrack.begin(), m_pixelClustersPerFPGATrack.end()),
139  *std::max_element(m_pixelClustersPerFPGATrack.begin(), m_pixelClustersPerFPGATrack.end()),
140  std::accumulate(m_pixelClustersPerFPGATrack.begin(), m_pixelClustersPerFPGATrack.end(), 0.0) / m_pixelClustersPerFPGATrack.size());
141  }
142  else summaryTableFPGATracks += std::format("| Pixels | ---- | ---- | inf |\n");
143 
144  if (not m_stripClustersPerFPGATrack.empty()) {
145  summaryTableFPGATracks += std::format("| Strips | {:>4} | {:>4} | {:>10.2f} |\n",
146  *std::min_element(m_stripClustersPerFPGATrack.begin(), m_stripClustersPerFPGATrack.end()),
147  *std::max_element(m_stripClustersPerFPGATrack.begin(), m_stripClustersPerFPGATrack.end()),
148  std::accumulate(m_stripClustersPerFPGATrack.begin(), m_stripClustersPerFPGATrack.end(), 0.0) / m_stripClustersPerFPGATrack.size());
149  }
150  else summaryTableFPGATracks += std::format("| Strips | ---- | ---- | inf |\n");
151 
152  summaryTableFPGATracks += "|-----------------------------------|";
153  ATH_MSG_INFO( summaryTableFPGATracks );
154 
155 
156  // Printing summary for clusters/prototracks
157  std::string summaryTableFPGAPrototracks = std::format("\n"
158  "Number of measurements for FPGA Prototracks\n"
159  "|-----------------------------------|\n"
160  "| | min | max | Avg |\n"
161  "|-----------------------------------|\n");
162 
163  if (not m_pixelClustersPerPrototrack.empty()) {
164  summaryTableFPGAPrototracks += std::format("| Pixels | {:>4} | {:>4} | {:>10.2f} |\n",
165  *std::min_element(m_pixelClustersPerPrototrack.begin(), m_pixelClustersPerPrototrack.end()),
166  *std::max_element(m_pixelClustersPerPrototrack.begin(), m_pixelClustersPerPrototrack.end()),
167  std::accumulate(m_pixelClustersPerPrototrack.begin(), m_pixelClustersPerPrototrack.end(), 0.0) / m_pixelClustersPerPrototrack.size());
168  }
169  else summaryTableFPGAPrototracks += std::format("| Pixels | ---- | ---- | inf |\n");
170 
171  if (not m_stripClustersPerPrototrack.empty()) {
172  summaryTableFPGAPrototracks += std::format("| Strips | {:>4} | {:>4} | {:>10.2f} |\n",
173  *std::min_element(m_stripClustersPerPrototrack.begin(), m_stripClustersPerPrototrack.end()),
174  *std::max_element(m_stripClustersPerPrototrack.begin(), m_stripClustersPerPrototrack.end()),
175  std::accumulate(m_stripClustersPerPrototrack.begin(), m_stripClustersPerPrototrack.end(), 0.0) / m_stripClustersPerPrototrack.size());
176  }
177  else summaryTableFPGAPrototracks += std::format("| Strips | ---- | ---- | inf |\n");
178 
179  summaryTableFPGAPrototracks += "|-----------------------------------|";
180  ATH_MSG_INFO( summaryTableFPGAPrototracks );
181  }
182 
183  ATH_MSG_INFO(m_ActsInspectionTool->getPrintoutStatistics(m_actsTrackStats));
184  return StatusCode::SUCCESS;
185 }
186 
187 template <class XAOD_CLUSTER>
189 {
190  if (m_printoutForEveryEvent) printxAODClusters(clusterContainer);
191 }
192 
193 template <class XAOD_CLUSTER>
195 {
196  std::string mainTable = "\n"
197  "|=========================================================================================|\n"
198  "| # | Global coordinates | Hash ID | Identifier |\n"
199  "| | x | y | z | | |\n"
200  "|-----------------------------------------------------------------------------------------|\n";
201  unsigned int counter = 0;
202  for (const auto& cluster : *clusterContainer)
203  {
204  ++counter;
205  mainTable += std::format("| {:>6} | {:>12} | {:>12} | {:>12} | {:>12} | {:>18} |\n",
206  counter,
207  cluster->globalPosition().x(),
208  cluster->globalPosition().y(),
209  cluster->globalPosition().z(),
210  cluster->identifierHash(),
211  cluster->identifier());
212  }
213  mainTable += "|=========================================================================================|";
214  ATH_MSG_INFO("Printout of xAOD clusters coming from " << clusterContainer.key() << mainTable );
215 }
216 
217 
219 {
220  if (m_printoutForEveryEvent) printxAODSpacePoints(spContainer);
221 }
222 
224 {
225  std::string mainTable = "\n"
226  "|============================================================================|\n"
227  "| # | Global coordinates | element ID list |\n"
228  "| | x | y | z | |\n"
229  "|----------------------------------------------------------------------------|\n";
230  unsigned int counter = 0;
231  for (const auto& sp : *spContainer)
232  {
233  ++counter;
234  mainTable += std::format("| {:>6} | {:>12} | {:>12} | {:>12} | {:>9}, {:>9} |\n",
235  counter,
236  sp->globalPosition().x(),
237  sp->globalPosition().y(),
238  sp->globalPosition().z(),
239  sp->elementIdList()[0],
240  sp->elementIdList().size() == 2 ? sp->elementIdList()[1] : 0);
241  }
242  mainTable += "|=========================================================================================|";
243  ATH_MSG_INFO("Printout of xAOD space points coming from " << spContainer.key() << mainTable );
244 }
245 
246 
248 {
249  if (m_printoutForEveryEvent) printFPGARoads(FPGARoads);
250 }
251 
253 {
254  std::string mainTable = "\n"
255  "|--------------------------------------------------------------------------------------------------|\n"
256  "| # | SubRegion | xBin | yBin | X | Y | RoadID |\n"
257  "|--------------------------------------------------------------------------------------------------|\n";
258 
259  unsigned int roadCounter = 0, hitCounter = 0;
260  for (const FPGATrackSimRoad& road : *FPGARoads)
261  {
262  ++roadCounter;
263  mainTable += std::format("| {:>6} | {:>11} | {:>10} | {:>10} | {:>12} | {:>12} | {:>12} |\n",
264  roadCounter,
265  road.getSubRegion(),
266  road.getXBin(),
267  road.getYBin(),
268  road.getX(),
269  road.getY(),
270  road.getRoadID());
271  mainTable +=
272  "| __________________________________________________________________________________________|\n"
273  "| | layer | ## | type | Global coordinates | isReal |\n"
274  "| | | | | x | y | z | |\n"
275  "| |.........................................................................................|\n";
276  for (unsigned int i = 0; i < road.getNLayers(); ++i)
277  {
278  hitCounter = 0;
279  const std::vector<std::shared_ptr<const FPGATrackSimHit>>& hits = road.getHits(i);
280  for (auto const& hit : hits)
281  {
282  if (!hit) {
283  ATH_MSG_WARNING("Null pointer for FPGATrackSimHit");
284  continue;
285  }
286  try {
287  ++hitCounter;
288  mainTable += std::format("| | {:>9} | {:>6} | {:>8} | {:>13} | {:>13} | {:>13} | {:>7} |\n",
289  (hit->isMapped() ? hit->getLayer() : 9999),
290  hitCounter,
291  (hit->isPixel() ? "Pixel" : hit->isStrip() ? "Strip" : "FAILED"),
292  hit->getX(),
293  hit->getY(),
294  hit->getZ(),
295  hit->isReal());
296  } catch (const std::exception& e) {
297  ATH_MSG_ERROR("Exception while processing FPGATrackSimHit: " << e.what());
298  }
299 
300  }
301  }
302  mainTable += "|--------------------------------------------------------------------------------------------------|\n";
303  }
304  ATH_MSG_INFO("List of FPGA roads for " << FPGARoads.key() << mainTable);
305 }
306 
307 
309 {
310  for (auto const& track : *FPGATracks)
311  {
312  const std::vector <FPGATrackSimHit>& hits = track.getFPGATrackSimHits();
313  uint32_t pixelHits = 0, stripHits = 0;
314  for (const FPGATrackSimHit& hit : hits)
315  {
316  if (hit.isPixel()) ++pixelHits;
317  if (hit.isStrip()) ++stripHits;
318  }
319  m_pixelClustersPerFPGATrack.push_back(pixelHits);
320  m_stripClustersPerFPGATrack.push_back(stripHits);
321  }
322  if (m_printoutForEveryEvent) printFPGATracks(FPGATracks);
323 }
324 
326 {
327  std::string maintable = "\n|--------------------------------------------------------------------------------------------------|\n";
328  unsigned int trackCounter = 0;
329  for (auto const& track : *FPGATracks)
330  {
331  ++trackCounter;
332  maintable += "| # | Eta | Phi | D0 | Z0 | QOverPt | chi2/ndf |\n"
333  "|--------------------------------------------------------------------------------------------------|\n";
334 
335  try
336  {
337  maintable += std::format("| {:>6} | {:>12.8f} | {:>12.8f} | {:>12.8f} | {:>12.5f} | {:>12.9f} | {:>12.8f} |\n",
338  trackCounter,
339  track.getEta(),
340  track.getPhi(),
341  track.getD0(),
342  track.getZ0(),
343  track.getQOverPt(),
344  track.getChi2ndof());
345  }
346  catch (const std::exception& e)
347  {
348  ATH_MSG_ERROR("Exception while processing FPGATrackSimTrack: " << e.what());
349  continue;
350  }
351 
352  maintable += "|__________________________________________________________________________________________________|\n"
353  "| | ## | type | layer | Global coordinates | isReal | HashID |\n"
354  "| | | | | x | y | z | | |\n"
355  "| |.........................................................................................|\n";
356  const std::vector <FPGATrackSimHit>& hits = track.getFPGATrackSimHits();
357  unsigned int hitCounter = 0;
358  for (auto const& hit : hits)
359  {
360  try {
361  ++hitCounter;
362  maintable += std::format("| | {:>6} | {:>8} | {:>5} | {:>9.3f} | {:>9.3f} | {:>9.3f} | {:>6} | {:>14} |\n",
363  hitCounter,
364  (hit.isPixel() ? "Pixel" : hit.isStrip() ? "Strip" : "FAILED"),
365  hit.getLayer(),
366  hit.getX(),
367  hit.getY(),
368  hit.getZ(),
369  hit.isReal(),
370  hit.getIdentifierHash());
371  } catch (const std::exception& e) {
372  ATH_MSG_ERROR("Exception while processing FPGATrackSimHits: " << e.what());
373  }
374  }
375  maintable += "|--------------------------------------------------------------------------------------------------|\n";
376  }
377  ATH_MSG_INFO("List of FPGA tracks for " << FPGATracks.key() << maintable);
378 }
379 
381 {
382  unsigned int nPixelMeasurements, nStripMeasurements;
383  for (auto const& prototrack : *FPGAPrototracks)
384  {
385  nPixelMeasurements = 0, nStripMeasurements = 0;
386  const std::vector<ActsTrk::ATLASUncalibSourceLink>* measurements = &prototrack.measurements;
387  for (const ActsTrk::ATLASUncalibSourceLink& measurementLink : *measurements)
388  {
389  const xAOD::UncalibratedMeasurement& measurement = ActsTrk::getUncalibratedMeasurement(measurementLink);
390  if (measurement.type() == xAOD::UncalibMeasType::PixelClusterType) ++nPixelMeasurements;
391  else if (measurement.type() == xAOD::UncalibMeasType::StripClusterType) ++nStripMeasurements;
392  }
393  m_pixelClustersPerPrototrack.push_back(nPixelMeasurements);
394  m_stripClustersPerPrototrack.push_back(nStripMeasurements);
395 
396  }
397  if (m_printoutForEveryEvent) printFPGAPrototracks(FPGAPrototracks);
398 }
399 
401 {
402  std::string mainTable = "\n";
403  if(not (*FPGAPrototracks).empty()) mainTable += "|---------------------------------------------------------------------------------------------|\n";
404 
405  unsigned int prototrackCounter = 0;
406  for (auto const& prototrack : *FPGAPrototracks)
407  {
408  ++prototrackCounter;
409  const Acts::BoundTrackParameters& initialParameters = *prototrack.parameters;
410  const Acts::BoundVector& parameters = initialParameters.parameters();
411  mainTable +=
412  "| # | QopT | Theta | Phi | d0 | z0 |\n"
413  "|---------------------------------------------------------------------------------------------|\n";
414  mainTable += std::format("| {:>6} | {:>14.10f} | {:>14.10f} | {:>14.10f} | {:>14.10f} | {:>14.10f} |\n",
415  prototrackCounter,
416  parameters[Acts::eBoundQOverP],
417  parameters[Acts::eBoundTheta],
418  parameters[Acts::eBoundPhi],
419  parameters[Acts::eBoundLoc0],
420  parameters[Acts::eBoundLoc1]);
421 
422  const std::vector<ActsTrk::ATLASUncalibSourceLink>* measurements = &prototrack.measurements;
423  unsigned int measurementCounter = 0;
424  if (measurements->size())
425  {
426  mainTable +=
427  "| _____________________________________________________________________________________|\n"
428  "| | | type | Global coordinates | HashID | Identifier |\n"
429  "| | ## | | x | y | z | | |\n"
430  "| | |...........................................................................|\n";
431 
432  }
433  for (const ActsTrk::ATLASUncalibSourceLink& measurementLink : *measurements)
434  {
435  ++measurementCounter;
436  const xAOD::UncalibratedMeasurement& measurement = ActsTrk::getUncalibratedMeasurement(measurementLink);
437  if (measurement.type() == xAOD::UncalibMeasType::PixelClusterType) {
438  const xAOD::PixelCluster* pixelCluster = dynamic_cast<const xAOD::PixelCluster*>(&measurement);
439  mainTable += std::format("| | {:>6} | Pixel | {:>8.3f} | {:>8.3f} | {:>8.3f} | {:>7} | {:>19} |\n",
440  measurementCounter,
441  pixelCluster->globalPosition().cast<double>().x(),
442  pixelCluster->globalPosition().cast<double>().y(),
443  pixelCluster->globalPosition().cast<double>().z(),
444  pixelCluster->identifierHash(),
445  pixelCluster->identifier());
446  }
447  else if (measurement.type() == xAOD::UncalibMeasType::StripClusterType) {
448  const xAOD::StripCluster* stripCluster = dynamic_cast<const xAOD::StripCluster*>(&measurement);
449  mainTable += std::format("| | {:>6} | Strip | {:>8.3f} | {:>8.3f} | {:>8.3f} | {:>7} | {:>19} |\n",
450  measurementCounter,
451  stripCluster->globalPosition().cast<double>().x(),
452  stripCluster->globalPosition().cast<double>().y(),
453  stripCluster->globalPosition().cast<double>().z(),
454  stripCluster->identifierHash(),
455  stripCluster->identifier());
456  }
457  }
458  mainTable += "|---------------------------------------------------------------------------------------------|\n";
459  }
460  ATH_MSG_INFO("Printing out prototracks coming from " << FPGAPrototracks.key() << mainTable);
461 }
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
FPGATrackSim::FPGATrackSimReportingAlg::processxAODClusters
void processxAODClusters(SG::ReadHandle< DataVector< XAOD_CLUSTER >> &clusterContainer) const
Definition: FPGATrackSimReportingAlg.cxx:188
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSim::FPGATrackSimReportingAlg::printxAODSpacePoints
void printxAODSpacePoints(SG::ReadHandle< DataVector< xAOD::SpacePoint >> &spContainer) const
Definition: FPGATrackSimReportingAlg.cxx:223
vtune_athena.format
format
Definition: vtune_athena.py:14
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSim::FPGATrackSimReportingAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: FPGATrackSimReportingAlg.cxx:25
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::UncalibMeasType::StripClusterType
@ StripClusterType
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
Trk::stripCluster
@ stripCluster
Definition: MeasurementType.h:23
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
FPGATrackSim::FPGATrackSimReportingAlg::printFPGATracks
void printFPGATracks(SG::ReadHandle< FPGATrackSimTrackCollection > &FPGATracks) const
Definition: FPGATrackSimReportingAlg.cxx:325
FPGATrackSim::FPGATrackSimReportingAlg::printFPGAPrototracks
void printFPGAPrototracks(SG::ReadHandle< ActsTrk::ProtoTrackCollection > &FPGAPrototracks) const
Definition: FPGATrackSimReportingAlg.cxx:400
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::UncalibratedMeasurement_v1::type
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
lumiFormat.i
int i
Definition: lumiFormat.py:85
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
FPGATrackSim::FPGATrackSimReportingAlg::initialize
virtual StatusCode initialize() override final
Definition: FPGATrackSimReportingAlg.cxx:11
calibdata.exception
exception
Definition: calibdata.py:496
xAOD::StripCluster_v1
Definition: StripCluster_v1.h:17
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
FPGATrackSim::FPGATrackSimReportingAlg::printFPGARoads
void printFPGARoads(SG::ReadHandle< FPGATrackSimRoadCollection > &FPGARoads) const
Definition: FPGATrackSimReportingAlg.cxx:252
ActsTrk::getUncalibratedMeasurement
const xAOD::UncalibratedMeasurement & getUncalibratedMeasurement(const ATLASUncalibSourceLink &source_link)
Definition: ATLASSourceLink.h:26
SG::VarHandleBase::key
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:64
FPGATrackSim::FPGATrackSimReportingAlg::processFPGARoads
void processFPGARoads(SG::ReadHandle< FPGATrackSimRoadCollection > &FPGARoads) const
Definition: FPGATrackSimReportingAlg.cxx:247
FPGATrackSim::FPGATrackSimReportingAlg::processFPGATracks
void processFPGATracks(SG::ReadHandle< FPGATrackSimTrackCollection > &FPGATracks) const
Definition: FPGATrackSimReportingAlg.cxx:308
Trk::pixelCluster
@ pixelCluster
Definition: MeasurementType.h:22
xAOD::PixelCluster_v1
Definition: PixelCluster_v1.h:17
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
FPGATrackSim::FPGATrackSimReportingAlg::finalize
virtual StatusCode finalize() override final
Definition: FPGATrackSimReportingAlg.cxx:124
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
FPGATrackSimReportingAlg.h
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
FPGATrackSim::FPGATrackSimReportingAlg::processxAODSpacePoints
void processxAODSpacePoints(SG::ReadHandle< DataVector< xAOD::SpacePoint >> &spContainer) const
Definition: FPGATrackSimReportingAlg.cxx:218
FPGATrackSim::FPGATrackSimReportingAlg::processFPGAPrototracks
void processFPGAPrototracks(SG::ReadHandle< ActsTrk::ProtoTrackCollection > &FPGAPrototracks) const
Definition: FPGATrackSimReportingAlg.cxx:380
test_pyathena.counter
counter
Definition: test_pyathena.py:15
FPGATrackSim::FPGATrackSimReportingAlg::FPGATrackSimReportingAlg
FPGATrackSimReportingAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimReportingAlg.cxx:8
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:30
xAOD::UncalibMeasType::PixelClusterType
@ PixelClusterType
FPGATrackSim::FPGATrackSimReportingAlg::printxAODClusters
void printxAODClusters(SG::ReadHandle< DataVector< XAOD_CLUSTER >> &clusterContainer) const
Definition: FPGATrackSimReportingAlg.cxx:194