ATLAS Offline Software
FPGATrackSimLogicalHitsProcessAlg.cxx
Go to the documentation of this file.
1 
3 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 
6 
15 
19 
21 
24 
26 
27 #include "GaudiKernel/IEventProcessor.h"
28 
29 #include <algorithm>
30 #include <vector>
31 
32 constexpr bool enableBenchmark =
33 #ifdef BENCHMARK_FPGATRACKSIM
34  true;
35 #else
36  false;
37 #endif
38 
40 // Initialize
41 
42 FPGATrackSimLogicalHitsProcessAlg::FPGATrackSimLogicalHitsProcessAlg (const std::string& name, ISvcLocator* pSvcLocator) :
43  AthAlgorithm(name, pSvcLocator)
44 {
45 }
46 
47 
49 {
50  // Dump the configuration to make sure it propagated through right
51  const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
52  for( Gaudi::Details::PropertyBase* prop : props ) {
53  if (prop->ownerTypeName()==this->type()) {
54  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
55  }
56  }
57 
58  std::stringstream ss(m_description);
59  std::string line;
60  ATH_MSG_INFO("Tag config:");
61  if (!m_description.empty()) {
62  while (std::getline(ss, line, '\n')) {
63  ATH_MSG_INFO('\t' << line);
64  }
65  }
66  ATH_CHECK(m_roadFinderTool.retrieve());
67  ATH_CHECK(m_LRTRoadFilterTool.retrieve(EnableTool{m_doLRT}));
68  ATH_CHECK(m_LRTRoadFinderTool.retrieve(EnableTool{m_doLRT}));
69  ATH_CHECK(m_houghRootOutputTool.retrieve(EnableTool{m_doHoughRootOutput1st}));
70  ATH_CHECK(m_NNTrackTool.retrieve(EnableTool{m_doNNTrack}));
71  ATH_CHECK(m_roadFilterTool.retrieve(EnableTool{m_filterRoads}));
72  ATH_CHECK(m_roadFilterTool2.retrieve(EnableTool{m_filterRoads2}));
73 
74  ATH_CHECK(m_spacepointsTool.retrieve(EnableTool{m_doSpacepoints}));
75 
76  ATH_CHECK(m_trackFitterTool_1st.retrieve(EnableTool{m_doTracking}));
78  ATH_CHECK(m_writeOutputTool.retrieve());
79  ATH_CHECK(m_FPGATrackSimMapping.retrieve());
80  ATH_CHECK(m_slicingEngineTool.retrieve());
81 
82 
96 
97 
98 
99  ATH_MSG_DEBUG("initialize() Instantiating root objects");
100 
101  // ROOT branches created for test vectors.
102  m_logicEventOutputHeader = m_writeOutputTool->addOutputBranch(m_outputBranch.value(), true);
103 
105 
106  // Updated slicing engine test vectors will have three streams.
110 
111  // We also need a pre- and post- SP copy of the SPs.
113 
114  // Connect the slicing tools accordingly. We probably no longer need to hook up the roadfinder here.
117 
118  ATH_MSG_DEBUG("initialize() Setting branch");
119 
120  if (!m_monTool.empty())
121  ATH_CHECK(m_monTool.retrieve());
122 
134 
135  ATH_CHECK( m_chrono.retrieve() );
136  ATH_MSG_DEBUG("initialize() Finished");
137 
138  return StatusCode::SUCCESS;
139 }
140 
141 
143 // MAIN EXECUTE ROUTINE //
145 
147 {
148  const EventContext& ctx = getContext();
149 
150  // Get reference to hits from StoreGate.
152  if (!FPGAHits.isValid()) {
153  if (m_evt == 0) {
154  ATH_MSG_WARNING("Didn't receive " << FPGAHits.key() << " on first event; assuming no input events.");
155  }
156  SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
157  if (!appMgr) {
158  ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
159  return StatusCode::FAILURE;
160  }
161  return appMgr->stopRun();
162  }
163 
164  // Set up write handles.
169 
170  ATH_CHECK( FPGAHits_1st.record (std::make_unique<FPGATrackSimHitCollection>()));
171  ATH_CHECK( FPGAHits_2nd.record (std::make_unique<FPGATrackSimHitCollection>()));
172  ATH_CHECK( FPGARoads_1st.record (std::make_unique<FPGATrackSimRoadCollection>()));
173  ATH_CHECK( FPGAHitsInRoads_1st.record (std::make_unique<FPGATrackSimHitContainer>()));
174 
176  ATH_CHECK(FPGATracks_1stHandle.record (std::make_unique<FPGATrackSimTrackCollection>()));
177 
179  ATH_CHECK( FPGAHitsFiltered_1st.record (std::make_unique<FPGATrackSimHitCollection>()));
180 
182  ATH_CHECK( FPGASpacePoints.record (std::make_unique<FPGATrackSimClusterCollection>()));
183 
184  // Query the event selection service to make sure this event passed cuts.
185  if (!m_evtSel->getSelectedEvent()) {
186 
187  // Potentially write the output data, now it's empty and reset, but this keeps things synchronized over trees
188  if (m_writeOutputData) {
189  std::vector<std::shared_ptr<const FPGATrackSimRoad>> roads_1st;
190  std::vector<FPGATrackSimTrack> tracks_1st;
191  auto dataFlowInfo = std::make_unique<FPGATrackSimDataFlowInfo>();
192  ATH_CHECK(writeOutputData(roads_1st, tracks_1st, dataFlowInfo.get()));
193  }
194 
195  return StatusCode::SUCCESS;
196  }
197  ATH_MSG_INFO("Event accepted by: " << m_evtSel->name());
198  if ((m_writeRegion>=0)&&(m_writeRegion==m_evtSel->getRegionID())) {
199  m_writeOutputTool->activateEventOutput();
200  }
201 
202  // Event passes cuts, count it. technically, DataPrep does this now.
203  m_evt++;
204 
205  // Read event info structure. all we need this for is to propagate to our event info structures.
207  if (!FPGAEventInfo.isValid()) {
208  ATH_MSG_ERROR("Could not find FPGA Event Info with key " << FPGAEventInfo.key());
209  return StatusCode::FAILURE;
210  }
211  FPGATrackSimEventInfo eventInfo = *FPGAEventInfo.cptr();
214  m_slicedStripHeader->newEvent(eventInfo);
216 
217  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: Split hits to 1st and 2nd stage");
218 
219  std::vector<std::shared_ptr<const FPGATrackSimHit>> phits_output, phits_all, phits_1st, phits_2nd;
220  phits_1st.reserve(FPGAHits->size());
221  phits_2nd.reserve(FPGAHits->size());
222  ATH_MSG_DEBUG("Incoming Hits: " << FPGAHits->size());
223  for (const FPGATrackSimHit& hit : *(FPGAHits.cptr())) {
224  phits_all.emplace_back(&hit, [](const FPGATrackSimHit*){});
225  }
226 
227  // Use the slicing engine tool to do the stage-based separation. Does not use the pmap.
228  m_slicingEngineTool->sliceHits(phits_all, phits_1st, phits_2nd);
229  // record 1st stage hits in SG
230  for (auto& hit : phits_1st) {
231  FPGAHits_1st->push_back(*hit);
232  }
233 
235 
236  // The slicing engine puts strip hits into a logical event input header. That header now needs to go
237  // to the spacepoint tool if it's turned on. Those hits then get added to phits_1st or phits_2nd as appropriate.
238  if (m_doSpacepoints) {
239  m_spacepoints.clear();
240  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: SP fornmation");
242  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: SP fornmation");
243  for (const FPGATrackSimCluster& cluster : m_spacepoints) FPGASpacePoints->push_back(cluster);
244  }
245 
246  // Use a property to control whether the strips/SPs go to 1st or second stage.
247  for (const FPGATrackSimHit& hit : m_slicedStripHeader->towers().at(0).hits()) {
248  (m_secondStageStrips ? phits_2nd : phits_1st).emplace_back(&hit, [](const FPGATrackSimHit*){});
249  }
250  for (auto& hit : phits_2nd) {
251  FPGAHits_2nd->push_back(*hit);
252  }
253 
254  // Add all hits including SPs to this for the HoughRootOutputTool
255  for (const FPGATrackSimHit& hit : *(FPGAHits_2nd.cptr())) {
256  phits_output.emplace_back(&hit, [](const FPGATrackSimHit*){});
257  }
258 
259  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: Split hits to 1st and 2nd stage");
260  ATH_MSG_DEBUG("1st stage hits: " << phits_1st.size() << " 2nd stage hits: " << phits_2nd.size() );
261  if (phits_1st.empty()) return StatusCode::SUCCESS;
262  // Get truth tracks from DataPrep as well.
264  if (!FPGATruthTracks.isValid()) {
265  ATH_MSG_ERROR("Could not find FPGA Truth Track Collection with key " << FPGATruthTracks.key());
266  return StatusCode::FAILURE;
267  }
268 
269  // Same for offline tracks.
271  if (!FPGAOfflineTracks.isValid()) {
272  ATH_MSG_ERROR("Could not find FPGA Offline Track Collection with key " << FPGAOfflineTracks.key());
273  return StatusCode::FAILURE;
274  }
275 
276 
278  // roads //
280 
282  const std::vector<FPGATrackSimTruthTrack>& truthtracks = *FPGATruthTracks;
284  auto nLogicalLayers = m_FPGATrackSimMapping->PlaneMap_1st(0)->getNLogiLayers();
287  auto monitorRoads = [&](auto& monitor, const auto& roads) {
288  if (!monitor.empty()) {
289  monitor->fillRoad(roads, truthtracks, nLogicalLayers);
290  }
291  };
292 
293 
294  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: GetRoads");
295  // get roads
296  std::vector<std::shared_ptr<const FPGATrackSimRoad>> roads_1st;
297  ATH_CHECK(m_roadFinderTool->getRoads(phits_1st, roads_1st, *(FPGATruthTracks.cptr())));
298  monitorRoads(m_1st_stage_road_monitor, roads_1st);
299  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: GetRoads");
300 
301 
302 
303  // Standard road Filter
304  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: RoadFiltering");
305  std::vector<std::shared_ptr<const FPGATrackSimRoad>> postfilter_roads;
306  if (m_filterRoads) {
307  ATH_CHECK(m_roadFilterTool->filterRoads(roads_1st, postfilter_roads));
308  roads_1st = std::move(postfilter_roads);
309  }
311  monitorRoads(m_1st_stage_road_post_filter_1_monitor, roads_1st);
312  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: RoadFiltering");
313 
314 
315  // overlap removal
316  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: OverlapRemoval");
317  if (m_doOverlapRemoval) ATH_CHECK(m_overlapRemovalTool_1st->runOverlapRemoval(roads_1st));
319  monitorRoads(m_1st_stage_road_post_OLR_monitor, roads_1st);
320  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: OverlapRemoval");
321 
322 
323  // Road Filter2
324  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: RoadFiltering2");
325  std::vector<std::shared_ptr<const FPGATrackSimRoad>> postfilter2_roads;
326  if (m_filterRoads2) {
327  ATH_CHECK(m_roadFilterTool2->filterRoads(roads_1st, postfilter2_roads));
328  roads_1st = std::move(postfilter2_roads);
329  }
331  monitorRoads(m_1st_stage_road_post_filter_2_monitor, roads_1st);
332  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: RoadFiltering2");
333 
334 
336  // tracks //
338 
340  auto monitorTracks = [&](auto& monitor, const auto& tracks) {
341  if (monitor.empty()) return;
342  // prepare vector<const FPGATrackSimTrack*> regardless of input type
343  std::vector<const FPGATrackSimTrack*> track_ptrs;
344  track_ptrs.reserve(tracks.size());
345  // transform tracks into a vector of pointers
346  if constexpr (std::is_pointer_v<typename std::decay_t<decltype(tracks)>::value_type>) {
347  // tracks is std::vector<const FPGATrackSimTrack*>
348  track_ptrs.insert(track_ptrs.end(), tracks.begin(), tracks.end());
349  } else {
350  // tracks is std::vector<FPGATrackSimTrack>
351  std::transform(tracks.begin(), tracks.end(), std::back_inserter(track_ptrs), [](const auto& t) { return &t; });
352  }
353  // monitor using track pointers
354  monitor->fillTrack(track_ptrs, truthtracks, 1.e15);
355  };
356 
357  // Get tracks
358  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: Getting Tracks");
359  std::vector<FPGATrackSimTrack> tracks_1st;
360  if (m_doTracking) {
361  if (m_doNNTrack) {
362  ATH_MSG_DEBUG("Performing NN tracking");
363  ATH_CHECK(m_NNTrackTool->getTracks_1st(roads_1st, tracks_1st));
364  if (m_doGNNTrack) {
365  ATH_MSG_DEBUG("Performing track parameter estimation");
366  ATH_CHECK(m_NNTrackTool->setTrackParameters(tracks_1st,true,m_evtSel->getMin(), m_evtSel->getMax()));
367  }
368  } else {
369  ATH_MSG_DEBUG("Performing Linear tracking");
370  if (m_passLowestChi2TrackOnly) { // Pass only the lowest chi2 track per road
371  // Loop over roads and keep only the best track for each road
372  for (const auto& road : roads_1st) {
373  std::vector<FPGATrackSimTrack> tracksForCurrentRoad;
374 
375  // Collect tracks for this road
376  std::vector<std::shared_ptr<const FPGATrackSimRoad>> roadVec = {road};
377  ATH_CHECK(m_trackFitterTool_1st->getTracks(roadVec, tracksForCurrentRoad, m_evtSel->getMin(), m_evtSel->getMax()));
378 
379  // Find the best track for this road
380  if (!tracksForCurrentRoad.empty()) {
381  auto bestTrackIter = std::min_element(
382  tracksForCurrentRoad.begin(), tracksForCurrentRoad.end(),
383  [](const FPGATrackSimTrack& a, const FPGATrackSimTrack& b) {
384  return a.getChi2ndof() < b.getChi2ndof();
385  });
386 
387  if (bestTrackIter != tracksForCurrentRoad.end() && bestTrackIter->getChi2ndof() < 1.e15) {
388  tracks_1st.push_back(*bestTrackIter);
389  }
390  }
391  }
392  } else { // Pass all tracks with chi2 < 1e15
393  ATH_CHECK(m_trackFitterTool_1st->getTracks(roads_1st, tracks_1st, m_evtSel->getMin(), m_evtSel->getMax()));
394  }
395  }
396  } else { // No tracking;
397  ATH_MSG_DEBUG("No tracking. Just running dummy road2track algorith");
398  if(m_doGNNPixelSeeding) { //For GNNPixelSeeding, convert the roads to a track in the simplest form
399  for (const std::shared_ptr<const FPGATrackSimRoad>& road : roads_1st) {
400  std::vector<std::shared_ptr<const FPGATrackSimHit>> track_hits;
401  for (unsigned layer = 0; layer < road->getNLayers(); ++layer) {
402  track_hits.insert(track_hits.end(), road->getHits(layer).begin(), road->getHits(layer).end());
403  }
404 
405  FPGATrackSimTrack track_cand;
406  track_cand.setNLayers(track_hits.size());
407  for (size_t ihit = 0; ihit < track_hits.size(); ++ihit) {
408  track_cand.setFPGATrackSimHit(ihit, *(track_hits[ihit]));
409  }
410  tracks_1st.push_back(track_cand);
411  }
412  }
413  else { roadsToTrack(roads_1st, tracks_1st, m_FPGATrackSimMapping->PlaneMap_1st(0)); }
414  }
415 
418  monitorTracks(m_1st_stage_track_monitor, tracks_1st);
419  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: Getting Tracks");
420 
421 
422  // set track parameters to truth
423  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: Set Track Parameters to Truth");
424  //Loop over tracks and set the region for all of them, also optionally set track parameters to truth
425  for (FPGATrackSimTrack& track : tracks_1st) {
426  track.setRegion(m_region);
427  if (m_SetTruthParametersForTracks >= 0 && truthtracks.size() > 0) {
429  track.setQOverPt(truthtracks.front().getQOverPt());
430  else if (m_SetTruthParametersForTracks != 1)
431  track.setD0(truthtracks.front().getD0());
432  else if (m_SetTruthParametersForTracks != 2)
433  track.setPhi(truthtracks.front().getPhi());
434  else if (m_SetTruthParametersForTracks != 3)
435  track.setZ0(truthtracks.front().getZ0());
436  else if (m_SetTruthParametersForTracks != 4)
437  track.setEta(truthtracks.front().getEta());
438  }
439  }
442  monitorTracks(m_1st_stage_track_post_setTruth_monitor, tracks_1st);
443  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: Set Track Parameters to Truth");
444 
445  // Loop over roads and store them in SG (after track finding to also copy the sector information)
446  for (auto const& road : roads_1st) {
447  std::vector<FPGATrackSimHit> road_hits;
448  ATH_MSG_DEBUG("Hough Road X Y: " << road->getX() << " " << road->getY());
449  for (size_t l = 0; l < road->getNLayers(); ++l) {
450  for (const auto& layerH : road->getHits(l)) {
451  road_hits.push_back(*layerH);
452  }
453  }
454  FPGAHitsInRoads_1st->push_back(std::move(road_hits));
455  FPGARoads_1st->push_back(*road);
456  }
457 
458  // overlap removal
459  if constexpr (enableBenchmark) m_chrono->chronoStart("1st Stage: OverlapRemoval");
460  if (m_doOverlapRemoval) ATH_CHECK(m_overlapRemovalTool_1st->runOverlapRemoval(tracks_1st));
461  // monitor variables (vectors of pointers)
462  std::vector<const FPGATrackSimTrack*> tracks_1st_after_chi2;
463  std::vector<const FPGATrackSimTrack*> tracks_1st_after_overlap;
464  for (const FPGATrackSimTrack& track : tracks_1st) {
465  if (track.getChi2ndof() < m_trackScoreCut.value()) {
467  tracks_1st_after_chi2.push_back(&track);
468  if (track.passedOR()) {
469  tracks_1st_after_overlap.push_back(&track);
471  }
472  }
473  }
475  monitorTracks(m_1st_stage_track_post_chi2_monitor, tracks_1st_after_chi2);
477  monitorTracks(m_1st_stage_track_post_OLR_monitor, tracks_1st_after_overlap);
478  if constexpr (enableBenchmark) m_chrono->chronoStop("1st Stage: OverlapRemoval");
479 
480  m_nRoadsTot += roads_1st.size();
481  m_nTracksTot += tracks_1st.size();
482 
483  // Do some simple monitoring of efficiencies. okay, we need truth tracks here.
484  if (truthtracks.size() > 0) {
485  m_evt_truth++;
486  if (roads_1st.size() > 0) m_nRoadsFound++;
487  if (roads_1st.size() > m_maxNRoadsFound) m_maxNRoadsFound = roads_1st.size();
488 
489  unsigned npasschi2(0);
490  unsigned npasschi2OLR(0);
491  if (tracks_1st.size() > 0) {
492  m_nTracksFound++;
493  if (tracks_1st.size() > m_maxNTracksTot) m_maxNTracksTot = tracks_1st.size();
494  for (const auto& track : tracks_1st) {
495  if (track.getChi2ndof() < m_trackScoreCut.value()) {
496  npasschi2++;
497  if (track.passedOR()) {
498  npasschi2OLR++;
499  }
500  }
501  }
502  }
503  if (npasschi2 > m_maxNTracksChi2Tot) m_maxNTracksChi2Tot = npasschi2;
504  if (npasschi2OLR > m_maxNTracksChi2OLRTot) m_maxNTracksChi2OLRTot = npasschi2OLR;
505  if (npasschi2 > 0) m_nTracksChi2Found++;
506  if (npasschi2OLR > 0) m_nTracksChi2OLRFound++;
507  }
508 
509  for (const FPGATrackSimTrack& track : tracks_1st) FPGATracks_1stHandle->push_back(track);
510 
511  // Now, we may want to do large-radius tracking on the hits not used by the first stage tracking.
512  // This follows overlap removal.
513  std::vector<std::shared_ptr<const FPGATrackSimRoad>> roadsLRT;
514  std::vector<FPGATrackSimTrack> tracksLRT; // currently empty
515  if (m_doLRT) {
516  // Filter out hits that are on successful first-stage tracks
517  std::vector<std::shared_ptr<const FPGATrackSimHit>> remainingHits;
518 
519  if (m_doLRTHitFiltering) {
520  ATH_MSG_DEBUG("Doing hit filtering based on prompt tracks.");
521  ATH_CHECK(m_LRTRoadFilterTool->filterUsedHits(tracks_1st, phits_1st, remainingHits));
522 
523  for (const auto &Hit : remainingHits) FPGAHitsFiltered_1st->push_back(*Hit);
524 
525  } else {
526  ATH_MSG_DEBUG("No hit filtering requested; using all hits for LRT.");
527  remainingHits = std::move(phits_1st);
528  }
529 
530  // Get LRT roads with remaining hits
531  ATH_MSG_DEBUG("Finding LRT roads");
532  ATH_CHECK(m_LRTRoadFinderTool->getRoads( remainingHits, roadsLRT ));
533  }
534 
535  auto dataFlowInfo = std::make_unique<FPGATrackSimDataFlowInfo>();
536 
537  // Write the output and reset
538  if (m_writeOutputData) {
539  ATH_CHECK(writeOutputData(roads_1st, tracks_1st, dataFlowInfo.get()));
540  }
541 
542  // This one we can do-- by passing in truth and offline tracks via storegate above (*FPGAOfflineTracks).
544  ATH_MSG_DEBUG("Running HoughRootOutputTool in 1st stage.");
545 
546  SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
547  if (!appMgr) {
548  ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
549  return StatusCode::FAILURE;
550  }
551 
552  // Create output ROOT file
553  ATH_CHECK(m_houghRootOutputTool->fillTree(tracks_1st, truthtracks, *FPGAOfflineTracks, phits_output, m_writeOutNonSPStripHits, false));
554  }
555 
556  // Reset data pointers
559 
560  return StatusCode::SUCCESS;
561 }
562 
563 
565 // INPUT PASSING, READING AND PROCESSING //
567 
568 StatusCode FPGATrackSimLogicalHitsProcessAlg::writeOutputData( const std::vector<std::shared_ptr<const FPGATrackSimRoad>>& roads_1st,
569  std::vector<FPGATrackSimTrack> const& tracks_1st,
570  FPGATrackSimDataFlowInfo const* dataFlowInfo)
571 {
573 
574  ATH_MSG_DEBUG("NFPGATrackSimRoads_1st = " << roads_1st.size() << ", NFPGATrackSimTracks_1st = " << tracks_1st.size());
575 
576  if (!m_writeOutputData) return StatusCode::SUCCESS;
579 
582 
585 
586  // It would be nice to rearrange this so both algorithms use one instance of this tool, I think.
587  // Which means that dataprep can't call writeData because that does Fill().
588  ATH_CHECK(m_writeOutputTool->writeData());
589 
590 
591 
592  return StatusCode::SUCCESS;
593 }
594 
595 
597 // Finalize
598 
600 {
601  ATH_MSG_INFO("PRINTING FPGATRACKSIM SIMPLE STATS");
602  ATH_MSG_INFO("========================================================================================");
603  ATH_MSG_INFO("Ran on events = " << m_evt);
604  ATH_MSG_INFO("Inclusive efficiency to find a road = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nRoadsFound/(float)m_evt_truth)));
605  ATH_MSG_INFO("Inclusive efficiency to find a track = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksFound/(float)m_evt_truth)));
606  ATH_MSG_INFO("Inclusive efficiency to find a track passing chi2 = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksChi2Found/(float)m_evt_truth)));
607  ATH_MSG_INFO("Inclusive efficiency to find a track passing chi2 and OLR = " << (m_evt_truth == 0 ? "NAN" : std::to_string(m_nTracksChi2OLRFound/(float)m_evt_truth)));
608 
609 
610  ATH_MSG_INFO("Number of 1st stage roads/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nRoadsTot/(float)m_evt)));
611  ATH_MSG_INFO("Number of 1st stage track combinations/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksTot/(float)m_evt)));
612  ATH_MSG_INFO("Number of 1st stage tracks passing chi2/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksChi2Tot/(float)m_evt)));
613  ATH_MSG_INFO("Number of 1st stage tracks passing chi2 and OLR/event = " << (m_evt == 0 ? "NAN" : std::to_string(m_nTracksChi2OLRTot/(float)m_evt)));
614  ATH_MSG_INFO("========================================================================================");
615 
616  ATH_MSG_INFO("Max number of 1st stage roads in an event = " << m_maxNRoadsFound);
617  ATH_MSG_INFO("Max number of 1st stage track combinations in an event = " << m_maxNTracksTot);
618  ATH_MSG_INFO("Max number of 1st stage tracks passing chi2 in an event = " << m_maxNTracksChi2Tot);
619  ATH_MSG_INFO("Max number of 1st stage tracks passing chi2 and OLR in an event = " << m_maxNTracksChi2OLRTot);
620  ATH_MSG_INFO("========================================================================================");
621 
622  return StatusCode::SUCCESS;
623 }
624 
625 
627 // Helpers
628 
629 void FPGATrackSimLogicalHitsProcessAlg::printHitSubregions(std::vector<FPGATrackSimHit> const & hits)
630 {
631  ATH_MSG_WARNING("Hit regions:");
632  for (const auto& hit : hits)
633  {
634  std::vector<uint32_t> regions = m_FPGATrackSimMapping->SubRegionMap()->getRegions(hit);
635  std::stringstream ss;
636  for (auto r : regions)
637  ss << r << ",";
638  ATH_MSG_WARNING("\t[" << ss.str() << "]");
639  }
640 }
FPGATrackSimLogicalHitsProcessAlg::m_passLowestChi2TrackOnly
Gaudi::Property< bool > m_passLowestChi2TrackOnly
Definition: FPGATrackSimLogicalHitsProcessAlg.h:145
FPGATrackSimLogicalHitsProcessAlg::m_doSpacepoints
Gaudi::Property< bool > m_doSpacepoints
Definition: FPGATrackSimLogicalHitsProcessAlg.h:129
FPGATrackSimLogicalHitsProcessAlg::m_filterRoads
Gaudi::Property< bool > m_filterRoads
Definition: FPGATrackSimLogicalHitsProcessAlg.h:133
beamspotman.r
def r
Definition: beamspotman.py:672
FPGATrackSimLogicalHitsProcessAlg::m_maxNRoadsFound
unsigned long m_maxNRoadsFound
Definition: FPGATrackSimLogicalHitsProcessAlg.h:186
FPGATrackSimLogicalHitsProcessAlg::m_slicedSecondPixelHeader
FPGATrackSimLogicalEventInputHeader * m_slicedSecondPixelHeader
Definition: FPGATrackSimLogicalHitsProcessAlg.h:164
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_OLR_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_OLR_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:121
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_filter_2_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_filter_2_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:112
FPGATrackSimLogicalHitsProcessAlg::m_writeOutputTool
ToolHandle< FPGATrackSimOutputHeaderTool > m_writeOutputTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:94
FPGATrackSimRegionSlices.h
Stores slice definitions for FPGATrackSim regions.
FPGATrackSimLogicalHitsProcessAlg::m_LRTRoadFinderTool
ToolHandle< IFPGATrackSimRoadFinderTool > m_LRTRoadFinderTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:87
FPGATrackSimLogicalHitsProcessAlg::m_doHoughRootOutput1st
Gaudi::Property< bool > m_doHoughRootOutput1st
Definition: FPGATrackSimLogicalHitsProcessAlg.h:135
FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey_2nd
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey_2nd
Definition: FPGATrackSimLogicalHitsProcessAlg.h:205
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimLogicalHitsProcessAlg::m_spacepointsTool
ToolHandle< FPGATrackSimSpacePointsToolI > m_spacepointsTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:84
FPGATrackSimLogicalHitsProcessAlg::m_doGNNPixelSeeding
Gaudi::Property< bool > m_doGNNPixelSeeding
Definition: FPGATrackSimLogicalHitsProcessAlg.h:138
FPGATrackSimLogicalHitsProcessAlg::m_description
std::string m_description
Definition: FPGATrackSimLogicalHitsProcessAlg.h:81
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
FPGATrackSimLogicalHitsProcessAlg::m_logicEventOutputHeader
FPGATrackSimLogicalEventOutputHeader * m_logicEventOutputHeader
Definition: FPGATrackSimLogicalHitsProcessAlg.h:167
FPGATrackSimLogicalHitsProcessAlg::m_FPGARoadKey
SG::WriteHandleKey< FPGATrackSimRoadCollection > m_FPGARoadKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:208
FPGATrackSimLogicalHitsProcessAlg::m_slicedHitHeader
FPGATrackSimLogicalEventInputHeader * m_slicedHitHeader
Definition: FPGATrackSimLogicalHitsProcessAlg.h:162
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimLogicalHitsProcessAlg::m_nTracksTot
long m_nTracksTot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:176
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
FPGATrackSimCluster
Definition: FPGATrackSimCluster.h:24
FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitInRoadsKey
SG::WriteHandleKey< FPGATrackSimHitContainer > m_FPGAHitInRoadsKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:207
FPGATrackSimTrack
Definition: FPGATrackSimTrack.h:18
FPGATrackSimLogicalHitsProcessAlg::m_region
Gaudi::Property< int > m_region
Definition: FPGATrackSimLogicalHitsProcessAlg.h:148
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
FPGATrackSimLogicalEventOutputHeader::reserveFPGATrackSimRoads_1st
void reserveFPGATrackSimRoads_1st(size_t size)
Definition: FPGATrackSimLogicalEventOutputHeader.h:24
FPGATrackSimNNTrackTool.h
Utilize NN score to build track candidates.
FPGATrackSimLogicalHitsProcessAlg::m_LRTRoadFilterTool
ToolHandle< FPGATrackSimLLPRoadFilterTool > m_LRTRoadFilterTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:86
FPGATrackSimLogicalHitsProcessAlg::m_doTracking
Gaudi::Property< bool > m_doTracking
Definition: FPGATrackSimLogicalHitsProcessAlg.h:130
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:115
FPGATrackSimLogicalHitsProcessAlg::m_writeRegion
Gaudi::Property< int > m_writeRegion
Definition: FPGATrackSimLogicalHitsProcessAlg.h:150
FPGATrackSimLogicalHitsProcessAlg::m_writeOutNonSPStripHits
Gaudi::Property< bool > m_writeOutNonSPStripHits
Definition: FPGATrackSimLogicalHitsProcessAlg.h:143
FPGATrackSimLogicalHitsProcessAlg::FPGATrackSimLogicalHitsProcessAlg
FPGATrackSimLogicalHitsProcessAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:42
FPGATrackSimLogicalHitsProcessAlg::m_FPGATruthTrackKey
SG::ReadHandleKey< FPGATrackSimTruthTrackCollection > m_FPGATruthTrackKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:211
FPGATrackSimLogicalHitsProcessAlg::m_evtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_evtSel
Definition: FPGATrackSimLogicalHitsProcessAlg.h:97
FPGATrackSimLogicalEventOutputHeader::reset
void reset()
Definition: FPGATrackSimLogicalEventOutputHeader.cxx:12
FPGATrackSimLogicalHitsProcessAlg::m_writeOutputData
Gaudi::Property< bool > m_writeOutputData
Definition: FPGATrackSimLogicalHitsProcessAlg.h:141
FPGATrackSimLogicalHitsProcessAlg::m_spacepoints
std::vector< FPGATrackSimCluster > m_spacepoints
Definition: FPGATrackSimLogicalHitsProcessAlg.h:171
FPGATrackSimLogicalHitsProcessAlg::m_FPGAEventInfoKey
SG::ReadHandleKey< FPGATrackSimEventInfo > m_FPGAEventInfoKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:213
FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksChi2OLRTot
unsigned long m_maxNTracksChi2OLRTot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:189
FPGATrackSimReadRawRandomHitsTool.h
PrintTrkAnaSummary.l
l
Printing final latex table to .tex output file.
Definition: PrintTrkAnaSummary.py:369
SG::WriteHandle::cptr
const_pointer_type cptr() const
Dereference the pointer.
FPGATrackSimLogicalHitsProcessAlg::m_overlapRemovalTool_1st
ToolHandle< FPGATrackSimOverlapRemovalTool > m_overlapRemovalTool_1st
Definition: FPGATrackSimLogicalHitsProcessAlg.h:93
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
FPGATrackSimLogicalHitsProcessAlg::m_sliceFirstPixelBranch
Gaudi::Property< std::string > m_sliceFirstPixelBranch
Definition: FPGATrackSimLogicalHitsProcessAlg.h:155
FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitFilteredKey
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitFilteredKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:206
FPGATrackSimLogicalHitsProcessAlg::m_FPGAOfflineTrackKey
SG::ReadHandleKey< FPGATrackSimOfflineTrackCollection > m_FPGAOfflineTrackKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:212
MuonR4::to_string
std::string to_string(const SectorProjector proj)
Definition: MsTrackSeeder.cxx:66
FPGATrackSimLogicalHitsProcessAlg::m_doNNTrack
Gaudi::Property< bool > m_doNNTrack
Definition: FPGATrackSimLogicalHitsProcessAlg.h:136
FPGATrackSimTrack::setFPGATrackSimHit
void setFPGATrackSimHit(unsigned i, const FPGATrackSimHit &hit)
Definition: FPGATrackSimTrack.cxx:98
FPGATrackSimLogicalHitsProcessAlg::m_FPGATrackKey
SG::WriteHandleKey< FPGATrackSimTrackCollection > m_FPGATrackKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:209
FPGATrackSimLogicalHitsProcessAlg::m_evt_truth
double m_evt_truth
Definition: FPGATrackSimLogicalHitsProcessAlg.h:180
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksTot
unsigned long m_maxNTracksTot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:187
FPGATrackSimLogicalHitsProcessAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:101
FPGATrackSimLogicalEventOutputHeader::getDataFlowInfo
FPGATrackSimDataFlowInfo const & getDataFlowInfo() const
Definition: FPGATrackSimLogicalEventOutputHeader.h:47
FPGATrackSimHit
Definition: FPGATrackSimHit.h:42
FPGATrackSimLogicalHitsProcessAlg::m_evt
double m_evt
Definition: FPGATrackSimLogicalHitsProcessAlg.h:174
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
FPGATrackSimLogicalHitsProcessAlg::m_trackScoreCut
Gaudi::Property< float > m_trackScoreCut
Definition: FPGATrackSimLogicalHitsProcessAlg.h:142
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_chi2_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_chi2_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:119
FPGATrackSimLogicalHitsProcessAlg::m_doLRTHitFiltering
Gaudi::Property< bool > m_doLRTHitFiltering
Definition: FPGATrackSimLogicalHitsProcessAlg.h:140
FPGATrackSimLogicalHitsProcessAlg::m_roadFilterTool2
ToolHandle< IFPGATrackSimRoadFilterTool > m_roadFilterTool2
Definition: FPGATrackSimLogicalHitsProcessAlg.h:89
Hit
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloGpu/ISF_FastCaloGpu/Hit.h:16
FPGATrackSimEventInfo
Definition: FPGATrackSimEventInfo.h:14
FPGATrackSimDataFlowInfo
Definition: FPGATrackSimDataFlowInfo.h:18
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FPGATrackSimLogicalEventOutputHeader::reserveFPGATrackSimTracks_1st
void reserveFPGATrackSimTracks_1st(size_t size)
Definition: FPGATrackSimLogicalEventOutputHeader.h:37
FPGATrackSimLogicalHitsProcessAlg::m_roadFinderTool
ToolHandle< FPGATrackSimRoadUnionTool > m_roadFinderTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:85
FPGATrackSimLogicalEventOutputHeader.h
roadsToTrack
void roadsToTrack(std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads, std::vector< FPGATrackSimTrack > &track_cands, const FPGATrackSimPlaneMap *pmap)
Definition: FPGATrackSimHoughFunctions.cxx:674
FPGATrackSimLogicalHitsProcessAlg::execute
virtual StatusCode execute() override
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:146
FPGATrackSimLogicalHitsProcessAlg::m_SetTruthParametersForTracks
Gaudi::Property< int > m_SetTruthParametersForTracks
Definition: FPGATrackSimLogicalHitsProcessAlg.h:128
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimLogicalEventOutputHeader::addFPGATrackSimRoads_1st
void addFPGATrackSimRoads_1st(const std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads_1st)
Definition: FPGATrackSimLogicalEventOutputHeader.h:25
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGATrackSimDataFlowInfo.h
Structs that store the data flow information per event.
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimRawToLogicalHitsTool.h
FPGATrackSimLogicalHitsProcessAlg::m_doOverlapRemoval
Gaudi::Property< bool > m_doOverlapRemoval
Definition: FPGATrackSimLogicalHitsProcessAlg.h:131
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
FPGATrackSimLogicalHitsProcessAlg::m_sliceStripBranchPreSP
Gaudi::Property< std::string > m_sliceStripBranchPreSP
Definition: FPGATrackSimLogicalHitsProcessAlg.h:158
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimLogicalHitsProcessAlg::m_writeInputBranches
Gaudi::Property< bool > m_writeInputBranches
Definition: FPGATrackSimLogicalHitsProcessAlg.h:149
FPGATrackSimLogicalHitsProcessAlg::m_outputRoadUnionTool
Gaudi::Property< bool > m_outputRoadUnionTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:147
FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey_1st
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey_1st
Definition: FPGATrackSimLogicalHitsProcessAlg.h:204
FPGATrackSimLogicalHitsProcessAlg::writeOutputData
StatusCode writeOutputData(const std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads_1st, std::vector< FPGATrackSimTrack > const &tracks_1st, FPGATrackSimDataFlowInfo const *dataFlowInfo)
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:568
FPGATrackSimLogicalHitsProcessAlg::m_FPGAHitKey
SG::ReadHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:198
FPGATrackSimLogicalEventInputHeader::newEvent
void newEvent(FPGATrackSimEventInfo &event)
Definition: FPGATrackSimLogicalEventInputHeader.h:29
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
FPGATrackSimLogicalHitsProcessAlg::m_slicedStripHeaderPreSP
FPGATrackSimLogicalEventInputHeader * m_slicedStripHeaderPreSP
Definition: FPGATrackSimLogicalHitsProcessAlg.h:166
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:106
FPGATrackSimLogicalHitsProcessAlg::m_sliceBranch
Gaudi::Property< std::string > m_sliceBranch
Definition: FPGATrackSimLogicalHitsProcessAlg.h:153
FPGATrackSimLogicalEventOutputHeader::setDataFlowInfo
void setDataFlowInfo(FPGATrackSimDataFlowInfo const &info)
Definition: FPGATrackSimLogicalEventOutputHeader.h:48
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
FPGATrackSimLogicalEventInputHeader::reset
void reset()
Definition: FPGATrackSimLogicalEventInputHeader.cxx:10
FPGATrackSimLogicalHitsProcessAlg::m_chrono
ServiceHandle< IChronoStatSvc > m_chrono
Definition: FPGATrackSimLogicalHitsProcessAlg.h:125
FPGATrackSimLogicalHitsProcessAlg::m_nTracksFound
long m_nTracksFound
Definition: FPGATrackSimLogicalHitsProcessAlg.h:182
FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2Tot
long m_nTracksChi2Tot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:177
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_filter_1_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_filter_1_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:108
FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2OLRFound
long m_nTracksChi2OLRFound
Definition: FPGATrackSimLogicalHitsProcessAlg.h:184
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
FPGATrackSimLogicalHitsProcessAlg::m_maxNTracksChi2Tot
unsigned long m_maxNTracksChi2Tot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:188
FPGATrackSimLogicalEventOutputHeader::addFPGATrackSimTracks_1st
void addFPGATrackSimTracks_1st(std::vector< FPGATrackSimTrack > const &tracks_1st)
Definition: FPGATrackSimLogicalEventOutputHeader.h:38
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
FPGATrackSimLogicalHitsProcessAlg::printHitSubregions
void printHitSubregions(std::vector< FPGATrackSimHit > const &hits)
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:629
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimLogicalHitsProcessAlg::m_slicedStripHeader
FPGATrackSimLogicalEventInputHeader * m_slicedStripHeader
Definition: FPGATrackSimLogicalHitsProcessAlg.h:165
FPGATrackSimOverlapRemovalTool.h
Overlap removal tool for FPGATrackSimTrack.
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
FPGATrackSimLogicalHitsProcessAlg::m_sliceSecondPixelBranch
Gaudi::Property< std::string > m_sliceSecondPixelBranch
Definition: FPGATrackSimLogicalHitsProcessAlg.h:156
FPGATrackSimLogicalHitsProcessAlg::finalize
virtual StatusCode finalize() override
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:599
FPGATrackSimLogicalHitsProcessAlg.h
FPGATrackSimLogicalHitsProcessAlg::m_trackFitterTool_1st
ToolHandle< FPGATrackSimTrackFitterTool > m_trackFitterTool_1st
Definition: FPGATrackSimLogicalHitsProcessAlg.h:92
FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2Found
long m_nTracksChi2Found
Definition: FPGATrackSimLogicalHitsProcessAlg.h:183
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
FPGATrackSimLogicalHitsProcessAlg::m_nRoadsTot
long m_nRoadsTot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:175
FPGATrackSimLogicalHitsProcessAlg::m_nTracksChi2OLRTot
long m_nTracksChi2OLRTot
Definition: FPGATrackSimLogicalHitsProcessAlg.h:178
a
TList * a
Definition: liststreamerinfos.cxx:10
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
FPGATrackSimLogicalHitsProcessAlg::m_roadFilterTool
ToolHandle< IFPGATrackSimRoadFilterTool > m_roadFilterTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:88
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_road_post_OLR_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_road_post_OLR_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:110
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
FPGATrackSimLogicalHitsProcessAlg::m_sliceStripBranch
Gaudi::Property< std::string > m_sliceStripBranch
Definition: FPGATrackSimLogicalHitsProcessAlg.h:157
FPGATrackSimLogicalHitsProcessAlg::m_doLRT
Gaudi::Property< bool > m_doLRT
Definition: FPGATrackSimLogicalHitsProcessAlg.h:139
FPGATrackSimLogicalHitsProcessAlg::m_FPGASpacePointsKey
SG::WriteHandleKey< FPGATrackSimClusterCollection > m_FPGASpacePointsKey
Definition: FPGATrackSimLogicalHitsProcessAlg.h:201
FPGATrackSimLogicalHitsProcessAlg::m_slicingEngineTool
ToolHandle< FPGATrackSimSlicingEngineTool > m_slicingEngineTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:95
FPGATrackSimLogicalEventInputHeader::towers
const std::vector< FPGATrackSimTowerInputHeader > & towers() const
Definition: FPGATrackSimLogicalEventInputHeader.h:36
FPGATrackSimLogicalHitsProcessAlg::m_nRoadsFound
long m_nRoadsFound
Definition: FPGATrackSimLogicalHitsProcessAlg.h:181
FPGATrackSimLogicalHitsProcessAlg::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:48
enableBenchmark
constexpr bool enableBenchmark
Definition: FPGATrackSimLogicalHitsProcessAlg.cxx:32
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
FPGATrackSimLogicalHitsProcessAlg::m_slicedFirstPixelHeader
FPGATrackSimLogicalEventInputHeader * m_slicedFirstPixelHeader
Definition: FPGATrackSimLogicalHitsProcessAlg.h:163
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimTrack::setNLayers
void setNLayers(int)
set the number of layers in the track.
Definition: FPGATrackSimTrack.cxx:107
FPGATrackSimLogicalEventInputHeader.h
FPGATrackSimLogicalHitsProcessAlg::m_filterRoads2
Gaudi::Property< bool > m_filterRoads2
Definition: FPGATrackSimLogicalHitsProcessAlg.h:134
FPGATrackSimLogicalHitsProcessAlg::m_outputBranch
Gaudi::Property< std::string > m_outputBranch
Definition: FPGATrackSimLogicalHitsProcessAlg.h:154
FPGATrackSimLogicalHitsProcessAlg::m_doGNNTrack
Gaudi::Property< bool > m_doGNNTrack
Definition: FPGATrackSimLogicalHitsProcessAlg.h:137
value_type
Definition: EDM_MasterSearch.h:11
FPGATrackSimLogicalHitsProcessAlg::m_1st_stage_track_post_setTruth_monitor
ToolHandle< FPGATrackSimTrackMonitor > m_1st_stage_track_post_setTruth_monitor
Definition: FPGATrackSimLogicalHitsProcessAlg.h:117
FPGATrackSimLogicalHitsProcessAlg::m_secondStageStrips
Gaudi::Property< bool > m_secondStageStrips
Definition: FPGATrackSimLogicalHitsProcessAlg.h:146
FPGATrackSimLogicalHitsProcessAlg::m_NNTrackTool
ToolHandle< FPGATrackSimNNTrackTool > m_NNTrackTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:90
FPGATrackSimTrackFitterTool.h
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimLogicalHitsProcessAlg::m_houghRootOutputTool
ToolHandle< FPGATrackSimHoughRootOutputTool > m_houghRootOutputTool
Definition: FPGATrackSimLogicalHitsProcessAlg.h:91
FPGATrackSimTrack.h
FPGATrackSimCluster.h
FPGATrackSimLogicalHitsProcessAlg::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimLogicalHitsProcessAlg.h:96