ATLAS Offline Software
FPGATrackSimDataPrepAlg.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
4 
12 
16 
18 
21 
23 
24 #include "GaudiKernel/IEventProcessor.h"
25 
26 
27 constexpr bool enableBenchmark =
28 #ifdef BENCHMARK_FPGATRACKSIM
29  true;
30 #else
31  false;
32 #endif
33 
35 // Initialize
36 
37 FPGATrackSimDataPrepAlg::FPGATrackSimDataPrepAlg (const std::string& name, ISvcLocator* pSvcLocator) :
38  AthAlgorithm(name, pSvcLocator)
39 {
40 }
41 
42 
44 {
45  std::stringstream ss(m_description);
46  std::string line;
47  ATH_MSG_INFO("Tag config:");
48  if (!m_description.empty()) {
49  while (std::getline(ss, line, '\n')) {
50  ATH_MSG_INFO('\t' << line);
51  }
52  }
53 
54 
55  ATH_CHECK(m_hitSGInputTool.retrieve(EnableTool{!m_hitSGInputTool.empty()}));
56 
57  ATH_CHECK(m_hitInputTool.retrieve(EnableTool{!m_hitInputTool.empty()}));
58  ATH_CHECK(m_hitInputTool2.retrieve(EnableTool{m_secondInputToolN > 0 && !m_hitInputTool2.empty()}));
59  ATH_CHECK(m_hitMapTools.retrieve());
60  ATH_CHECK(m_hitFilteringTool.retrieve(EnableTool{m_doHitFiltering}));
61  ATH_CHECK(m_clusteringTool.retrieve(EnableTool{m_clustering > 0}));
62 
63  ATH_CHECK(m_writeOutputTool.retrieve());
64  ATH_CHECK(m_eventSelectionTools.retrieve());
65 
66 
67  ATH_MSG_DEBUG("initialize() Instantiating root objects");
69  m_logicEventHeader = m_writeOutputTool->addInputBranch(m_postClusterBranch.value(), true);
70 
71  ATH_MSG_DEBUG("initialize() Setting branch");
72 
73  if (!m_monTool.empty())
74  ATH_CHECK(m_monTool.retrieve());
75 
76  ATH_CHECK( m_FPGAClusterKey.initialize() );
84 
85  ATH_CHECK( m_chrono.retrieve() );
86  ATH_MSG_DEBUG("initialize() Finished");
87 
88 
89  return StatusCode::SUCCESS;
90 }
91 
92 
94 // MAIN EXECUTE ROUTINE //
96 
98 {
99  const EventContext& ctx = getContext();
100 
101  // Read inputs
102  bool done = false;
103  ATH_CHECK(readInputs(done));
104 
105  if (done) {
106  SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
107  if (!appMgr) {
108  ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
109  return StatusCode::FAILURE;
110  }
111  return appMgr->stopRun();
112  }
113 
115  ATH_CHECK( FPGAHits.record (std::make_unique<FPGATrackSimHitCollection>()));
116 
118  ATH_CHECK( FPGAHitUnmapped.record (std::make_unique<FPGATrackSimHitCollection>()));
119 
121  ATH_CHECK( FPGAClusters.record (std::make_unique<FPGATrackSimClusterCollection>()));
122 
124  ATH_CHECK(truthLinkVec.record(std::make_unique<xAODTruthParticleLinkVector>()));
125 
127  ATH_CHECK(FPGATruthTracks.record(std::make_unique<FPGATrackSimTruthTrackCollection>()));
128 
130  ATH_CHECK(FPGAOfflineTracks.record(std::make_unique<FPGATrackSimOfflineTrackCollection>()));
131  // Apply event selection based on truth tracks
132  if (m_doEvtSel) {
133  bool acceptEvent = false;
134  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: EventSelection");
136  {
137  if (eventSelector->selectEvent(m_eventHeader)) {
138  ATH_MSG_DEBUG("Event accepted by: " << eventSelector->name());
139  acceptEvent = true;
140  }
141  }
142  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: EventSelection");
143  if (m_useInternalTruthTracks && acceptEvent) {
144  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: TruthMatching");
145  SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer(m_inputTruthParticleContainerKey, ctx); // Read offline TruthParticles
146  if (!truthParticleContainer.isValid()) {
147  ATH_MSG_ERROR("No valid truth particle container with key " << truthParticleContainer.key());
148  return StatusCode::FAILURE;
149  }
150  ATH_MSG_DEBUG("making mp of truth particles");
151  std::unordered_map<HepMcParticleLink::barcode_type, std::pair<const xAOD::TruthParticle*, size_t>> truthParticlesMap;
152  size_t truthParticleIndex = 0;
153  for (const xAOD::TruthParticle* truthParticle : *truthParticleContainer) {
154  truthParticlesMap.insert(std::make_pair(HepMC::uniqueID(truthParticle), std::make_pair(truthParticle,truthParticleIndex)));
155  truthParticleIndex++;
156  }
158  truthLinkVec->reserve(fpgaTruthTracks.size());
159  ATH_MSG_DEBUG("begin truth matching for " << fpgaTruthTracks.size() << " FPGA truth tracks");
160  for (const FPGATrackSimTruthTrack& fpgaTruthTrack : fpgaTruthTracks) {
161  auto it = truthParticlesMap.find(fpgaTruthTrack.getUniqueID()); // TODO FIXME need to check FPGATrackSimTruthTrack uniqueIDs are properly filled
162  if (it != truthParticlesMap.end()) {
163  ElementLink<xAOD::TruthParticleContainer> truthParticleLink(*truthParticleContainer, it->second.second);
164  // TODO: check if we can avoid using the previously-created map and look directly for the unique ID in the link vector container
165  truthLinkVec->push_back(new xAODTruthParticleLink(HepMcParticleLink(HepMC::uniqueID(it->second.first), 0,
167  ATH_MSG_DEBUG("Truth link added");
168  }
169  }
170  if (truthLinkVec->empty()) {
171  ATH_MSG_DEBUG("No truth particles selected. Skipping event...");
172  return StatusCode::SUCCESS;
173  }
174  std::stable_sort(truthLinkVec->begin(), truthLinkVec->end(), SortTruthParticleLink());
175  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: TruthMatching");
176  }
177  }
178  else {
179  ATH_MSG_DEBUG("No Event Selection applied");
180  for (auto eventSelector : m_eventSelectionTools) {
181  eventSelector->setSelectedEvent(true);
182  }
183  }
184 
185  // Event passes cuts, count it
186  m_evt++;
187 
188  // Map, cluster, and filter hits
189  ATH_CHECK(processInputs(FPGAHitUnmapped, FPGAClusters));
190 
191  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: get truth/offline tracks");
192  // Now that this is done, push truth tracks back to storegate.
193  for (const auto& truthtrack : m_logicEventHeader->optional().getTruthTracks()) {
194  FPGATruthTracks->push_back(truthtrack);
195  }
196 
197  // Need to do the same for offline tracks.
198  for (const auto& offlineTrack : m_logicEventHeader->optional().getOfflineTracks()) {
199  FPGAOfflineTracks->push_back(offlineTrack);
200  }
201 
202  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: get truth/offline tracks");
203 
204  // Get reference to hits
205 
206  // Recording Data
208  {
209  // Get reference to hits
210  const unsigned& regionID = eventSelector->getRegionID();
211 
212  auto mon_regionID = Monitored::Scalar<unsigned>("regionID", regionID);
213  Monitored::Group(m_monTool, mon_regionID);
214  }
215 
216  std::vector<FPGATrackSimHit> const& hits = m_logicEventHeader->towers().at(0).hits();
217  if (m_recordHits) {
218  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: record hits");
219  // If and when we set up code to run over more than one region/tower at a time this will need to be updated
220  FPGAHits->reserve(hits.size());
221  for (const auto& hit : hits) {
222  if (hit.isReal()) FPGAHits->push_back(hit);
223  }
224  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: record hits");
225  }
226 
227  auto mon_nhits = Monitored::Scalar<unsigned>("nHits", hits.size());
228  auto mon_nhits_unmapped = Monitored::Scalar<unsigned>("nHits_unmapped", m_hits_miss.size());
229  Monitored::Group(m_monTool, mon_nhits, mon_nhits_unmapped);
230 
231  // Put the FPGATrackSim event info on storegate so later algorithms can access it easily.
233  ATH_CHECK(FPGAEventInfo.record(std::make_unique<FPGATrackSimEventInfo>(m_eventHeader.event())));
234 
235  // Write the output and reset
236  if (m_writeOutputData)
237  ATH_CHECK(m_writeOutputTool->writeData());
238 
239  // Reset data pointers
243 
244  return StatusCode::SUCCESS;
245 }
246 
247 
249 // INPUT PASSING, READING AND PROCESSING //
251 
253 {
254 
255  if ( !m_hitSGInputTool.empty()) {
256  ATH_CHECK(m_hitSGInputTool->readData(&m_eventHeader, Gaudi::Hive::currentContext()));
257  ATH_MSG_DEBUG("Loaded " << m_eventHeader.nHits() << " hits in event header from SG");
258 
259  return StatusCode::SUCCESS;
260  }
261 
262  if (m_ev % m_firstInputToolN == 0)
263  {
264  // Read primary input
265  ATH_CHECK(m_hitInputTool->readData(&m_firstInputHeader, done));
266  if (done)
267  {
268  ATH_MSG_DEBUG("Cannot read more events from file, returning");
269  return StatusCode::SUCCESS; // end of loop over events
270  }
271  }
272 
274 
275  // Read secondary input
276  for (int i = 0; i < m_secondInputToolN; i++)
277  {
278  ATH_CHECK(m_hitInputTool2->readData(&m_eventHeader, done, false));
279  if (done)
280  {
281  ATH_MSG_INFO("Cannot read more events from file, returning");
282  return StatusCode::SUCCESS;
283  }
284  }
285 
286  m_ev++;
287 
288  return StatusCode::SUCCESS;
289 }
290 
291 
292 // Applies clustering, mapping, hit filtering, and space points
295 {
296  m_clusters->clear();
297  m_hits_miss.clear();
298 
299  // Map hits
300  ATH_MSG_DEBUG("Running hits conversion");
303  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: RawToLogical");
304  for (auto hitMapTool : m_hitMapTools){
305  ATH_CHECK(hitMapTool->convert(1, m_eventHeader, *m_logicEventHeader));
306  }
307  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: RawToLogical");
308 
309 
310  for (const FPGATrackSimHit& hit : m_hits_miss) FPGAHitUnmapped->push_back(hit);
311 
312 
313  ATH_MSG_DEBUG("Hits conversion done, #unmapped hists = " << m_hits_miss.size());
314 
315  // At this stage, copy the logicEventHeader.
317 
318  if constexpr (enableBenchmark) m_chrono->chronoStart("DataPrep: Clustering");
319  // Clustering
320  for (int ic = 0; ic < m_clustering; ic++) {
321  ATH_MSG_DEBUG("Running clustering");
323  // I think I also want to pass m_clusters to random removal (but won't work currently)
324  if (m_doHitFiltering) ATH_CHECK(m_hitFilteringTool->DoRandomRemoval(*m_logicEventHeader, false));
325  unsigned npix(0), nstrip(0);
326  for (const FPGATrackSimCluster& cluster : *m_clusters) {
327  if (cluster.getClusterEquiv().isPixel()) npix++;
328  else nstrip++;
329  }
330  m_nPixClusters += npix;
331  m_nStripClusters += nstrip;
332  if (npix > m_nMaxPixClusters) m_nMaxPixClusters = npix;
333  if (nstrip > m_nMaxStripClusters) m_nMaxStripClusters = nstrip;
334  if (m_clusters->size() > m_nMaxClusters) m_nMaxClusters = m_clusters->size();
335  }
336  FPGAClusters->insert(
337  FPGAClusters->end(),
338  std::make_move_iterator(m_clusters->begin()),
339  std::make_move_iterator(m_clusters->end()));
340 
341  if constexpr (enableBenchmark) m_chrono->chronoStop("DataPrep: Clustering");
342 
343  return StatusCode::SUCCESS;
344 }
345 
347 // Finalize
348 
350 {
351  ATH_MSG_INFO("PRINTING FPGATRACKSIM SIMPLE DATAPREP STATS");
352  ATH_MSG_INFO("========================================================================================");
353  ATH_MSG_INFO("Number of pixel clusters/event = " << m_nPixClusters/m_evt);
354  ATH_MSG_INFO("Number of strip clusters/event = " << m_nStripClusters/m_evt);
355  ATH_MSG_INFO("Max number of pixel clusters in an event = " << m_nMaxPixClusters);
356  ATH_MSG_INFO("Max number of strip clusters in an event = " << m_nMaxStripClusters);
357  ATH_MSG_INFO("Max number of clusters in an event = " << m_nMaxClusters);
358 
359  return StatusCode::SUCCESS;
360 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
FPGATrackSimDataPrepAlg::readInputs
StatusCode readInputs(bool &done)
Definition: FPGATrackSimDataPrepAlg.cxx:252
FPGATrackSimDataPrepAlg::m_chrono
ServiceHandle< IChronoStatSvc > m_chrono
Definition: FPGATrackSimDataPrepAlg.h:82
FPGATrackSimDataPrepAlg::m_evt
double m_evt
Definition: FPGATrackSimDataPrepAlg.h:109
FPGATrackSimDataPrepAlg::m_recordHits
Gaudi::Property< bool > m_recordHits
Definition: FPGATrackSimDataPrepAlg.h:92
FPGATrackSimDataPrepAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: FPGATrackSimDataPrepAlg.h:122
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
FPGATrackSimDataPrepAlg::m_hitSGInputTool
ToolHandle< IFPGATrackSimInputTool > m_hitSGInputTool
Definition: FPGATrackSimDataPrepAlg.h:73
FPGATrackSimOptionalEventInfo::getOfflineTracks
const std::vector< FPGATrackSimOfflineTrack > & getOfflineTracks() const
Definition: FPGATrackSimOptionalEventInfo.h:32
FPGATrackSimRegionSlices.h
Stores slice definitions for FPGATrackSim regions.
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimDataPrepAlg::m_hitInputTool2
ToolHandle< FPGATrackSimReadRawRandomHitsTool > m_hitInputTool2
Definition: FPGATrackSimDataPrepAlg.h:75
FPGATrackSimDataPrepAlg::m_nMaxStripClusters
unsigned m_nMaxStripClusters
Definition: FPGATrackSimDataPrepAlg.h:114
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
FPGATrackSimDataPrepAlg::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimDataPrepAlg.cxx:43
FPGATrackSimDataPrepAlg::m_eventHeader
FPGATrackSimEventInputHeader m_eventHeader
Definition: FPGATrackSimDataPrepAlg.h:99
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimCluster
Definition: FPGATrackSimCluster.h:24
FPGATrackSimDataPrepAlg::execute
virtual StatusCode execute() override
Definition: FPGATrackSimDataPrepAlg.cxx:97
FPGATrackSimDataPrepAlg::m_logicEventHeader_precluster
FPGATrackSimLogicalEventInputHeader * m_logicEventHeader_precluster
Definition: FPGATrackSimDataPrepAlg.h:101
FPGATrackSimDataPrepAlg::m_useInternalTruthTracks
Gaudi::Property< bool > m_useInternalTruthTracks
Definition: FPGATrackSimDataPrepAlg.h:91
SG::ReadHandle< xAOD::TruthParticleContainer >
FPGATrackSimNNTrackTool.h
Utilize NN score to build track candidates.
FPGATrackSimDataPrepAlg::m_logicEventHeader
FPGATrackSimLogicalEventInputHeader * m_logicEventHeader
Definition: FPGATrackSimDataPrepAlg.h:102
FPGATrackSimTruthTrack
Definition: FPGATrackSimTruthTrack.h:14
FPGATrackSimDataPrepAlg::m_hitMapTools
ToolHandleArray< FPGATrackSimRawToLogicalHitsTool > m_hitMapTools
Definition: FPGATrackSimDataPrepAlg.h:76
FPGATrackSimDataPrepAlg::m_ev
int m_ev
Definition: FPGATrackSimDataPrepAlg.h:70
skel.it
it
Definition: skel.GENtoEVGEN.py:407
FPGATrackSimDataPrepAlg::m_FPGAEventInfoKey
SG::WriteHandleKey< FPGATrackSimEventInfo > m_FPGAEventInfoKey
Definition: FPGATrackSimDataPrepAlg.h:134
FPGATrackSimReadRawRandomHitsTool.h
FPGATrackSimDataPrepAlg::m_description
std::string m_description
Definition: FPGATrackSimDataPrepAlg.h:69
FPGATrackSimDataPrepAlg::m_FPGAOfflineTrackKey
SG::WriteHandleKey< FPGATrackSimOfflineTrackCollection > m_FPGAOfflineTrackKey
Definition: FPGATrackSimDataPrepAlg.h:133
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
FPGATrackSimOptionalEventInfo::getTruthTracks
const std::vector< FPGATrackSimTruthTrack > & getTruthTracks() const
Definition: FPGATrackSimOptionalEventInfo.h:37
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimEventInputHeader::nHits
int nHits() const
Definition: FPGATrackSimEventInputHeader.h:38
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
FPGATrackSimDataPrepAlg::m_nStripClusters
unsigned long m_nStripClusters
Definition: FPGATrackSimDataPrepAlg.h:113
FPGATrackSimDataPrepAlg::m_writeOutputData
Gaudi::Property< bool > m_writeOutputData
Definition: FPGATrackSimDataPrepAlg.h:89
FPGATrackSimDataPrepAlg::m_hitFilteringTool
ToolHandle< IFPGATrackSimHitFilteringTool > m_hitFilteringTool
Definition: FPGATrackSimDataPrepAlg.h:77
FPGATrackSimDataPrepAlg::m_doEvtSel
Gaudi::Property< bool > m_doEvtSel
Definition: FPGATrackSimDataPrepAlg.h:90
FPGATrackSimLogicalEventInputHeader::optional
FPGATrackSimOptionalEventInfo const & optional() const
Definition: FPGATrackSimLogicalEventInputHeader.h:32
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FPGATrackSimDataPrepAlg::m_FPGAHitKey
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey
Definition: FPGATrackSimDataPrepAlg.h:126
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimDataPrepAlg::m_nMaxPixClusters
unsigned m_nMaxPixClusters
Definition: FPGATrackSimDataPrepAlg.h:112
FPGATrackSimDataPrepAlg::m_doHitFiltering
Gaudi::Property< bool > m_doHitFiltering
Definition: FPGATrackSimDataPrepAlg.h:87
FPGATrackSimDataPrepAlg::m_FPGAHitUnmappedKey
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitUnmappedKey
Definition: FPGATrackSimDataPrepAlg.h:127
FPGATrackSimLogicalEventOutputHeader.h
FPGATrackSimDataPrepAlg::m_clustering
Gaudi::Property< int > m_clustering
Definition: FPGATrackSimDataPrepAlg.h:88
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
FPGATrackSimDataPrepAlg::m_inputTruthParticleContainerKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_inputTruthParticleContainerKey
Definition: FPGATrackSimDataPrepAlg.h:129
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
FPGATrackSimRawToLogicalHitsTool.h
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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
FPGATrackSimDataPrepAlg.h
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
FPGATrackSimEventInputHeader::event
FPGATrackSimEventInfo const & event() const
Definition: FPGATrackSimEventInputHeader.h:33
grepfile.ic
int ic
Definition: grepfile.py:33
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
FPGATrackSimDataPrepAlg::m_secondInputToolN
Gaudi::Property< int > m_secondInputToolN
Definition: FPGATrackSimDataPrepAlg.h:86
FPGATrackSimDataPrepAlg::m_FPGAClusterKey
SG::WriteHandleKeyArray< FPGATrackSimClusterCollection > m_FPGAClusterKey
Definition: FPGATrackSimDataPrepAlg.h:125
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
FPGATrackSimDataPrepAlg::m_nMaxClusters
unsigned m_nMaxClusters
Definition: FPGATrackSimDataPrepAlg.h:115
FPGATrackSimOverlapRemovalTool.h
Overlap removal tool for FPGATrackSimTrack.
FPGATrackSimDataPrepAlg::m_writeOutputTool
ToolHandle< FPGATrackSimOutputHeaderTool > m_writeOutputTool
Definition: FPGATrackSimDataPrepAlg.h:79
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
FPGATrackSimEventInputHeader::optional
FPGATrackSimOptionalEventInfo const & optional() const
Definition: FPGATrackSimEventInputHeader.h:34
FPGATrackSimDataPrepAlg::m_clusteringTool
ToolHandle< FPGATrackSimClusteringToolI > m_clusteringTool
Definition: FPGATrackSimDataPrepAlg.h:78
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
FPGATrackSimDataPrepAlg::m_preClusterBranch
Gaudi::Property< std::string > m_preClusterBranch
Definition: FPGATrackSimDataPrepAlg.h:95
FPGATrackSimDataPrepAlg::processInputs
StatusCode processInputs(SG::WriteHandle< FPGATrackSimHitCollection > &FPGAHitUnmapped, SG::WriteHandle< FPGATrackSimClusterCollection > &FPGAClusters)
Definition: FPGATrackSimDataPrepAlg.cxx:293
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
FPGATrackSimDataPrepAlg::m_postClusterBranch
Gaudi::Property< std::string > m_postClusterBranch
Definition: FPGATrackSimDataPrepAlg.h:96
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
FPGATrackSimDataPrepAlg::m_clusters
std::unique_ptr< FPGATrackSimClusterCollection > m_clusters
Definition: FPGATrackSimDataPrepAlg.h:105
FPGATrackSimDataPrepAlg::m_truthLinkContainerKey
SG::WriteHandleKey< xAODTruthParticleLinkVector > m_truthLinkContainerKey
Definition: FPGATrackSimDataPrepAlg.h:130
FPGATrackSimDataPrepAlg::m_firstInputToolN
Gaudi::Property< int > m_firstInputToolN
Definition: FPGATrackSimDataPrepAlg.h:85
FPGATrackSimDataPrepAlg::m_hits_miss
std::vector< FPGATrackSimHit > m_hits_miss
Definition: FPGATrackSimDataPrepAlg.h:106
LArNewCalib_DelayDump_OFC_Cali.eventSelector
eventSelector
Definition: LArNewCalib_DelayDump_OFC_Cali.py:112
FPGATrackSimDataPrepAlg::FPGATrackSimDataPrepAlg
FPGATrackSimDataPrepAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimDataPrepAlg.cxx:37
FPGATrackSimDataPrepAlg::m_eventSelectionTools
ToolHandleArray< FPGATrackSim::FPGATrackSimEventSelectionTool > m_eventSelectionTools
Definition: FPGATrackSimDataPrepAlg.h:80
enableBenchmark
constexpr bool enableBenchmark
Definition: FPGATrackSimDataPrepAlg.cxx:27
FPGATrackSimLogicalEventInputHeader::towers
const std::vector< FPGATrackSimTowerInputHeader > & towers() const
Definition: FPGATrackSimLogicalEventInputHeader.h:36
FPGATrackSimDataPrepAlg::m_hitInputTool
ToolHandle< IFPGATrackSimEventInputHeaderTool > m_hitInputTool
Definition: FPGATrackSimDataPrepAlg.h:74
FPGATrackSimRoad.h
Defines a class for roads.
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
FPGATrackSimDataPrepAlg::m_firstInputHeader
FPGATrackSimEventInputHeader m_firstInputHeader
Definition: FPGATrackSimDataPrepAlg.h:100
FPGATrackSimLogicalEventInputHeader.h
FPGATrackSimEventInputHeader::reset
void reset()
Definition: FPGATrackSimEventInputHeader.cxx:14
FPGATrackSimDataPrepAlg::finalize
virtual StatusCode finalize() override
Definition: FPGATrackSimDataPrepAlg.cxx:349
FPGATrackSimTrackFitterTool.h
FPGATrackSimDataPrepAlg::m_FPGATruthTrackKey
SG::WriteHandleKey< FPGATrackSimTruthTrackCollection > m_FPGATruthTrackKey
Definition: FPGATrackSimDataPrepAlg.h:132
FPGATrackSimTruthTrackCollection
std::vector< FPGATrackSimTruthTrack > FPGATrackSimTruthTrackCollection
Definition: FPGATrackSimTruthTrackCollection.h:14
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimTrack.h
FPGATrackSimCluster.h
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
FPGATrackSimDataPrepAlg::m_nPixClusters
unsigned long m_nPixClusters
Definition: FPGATrackSimDataPrepAlg.h:111