ATLAS Offline Software
FPGATrackSimDataPrepAlg.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
4 
12 
16 
18 
21 
23 
24 #include "GaudiKernel/IEventProcessor.h"
25 
26 #ifdef BENCHMARK_LOGICALHITSALG
27 #define TIME(name) \
28  t_1 = std::chrono::steady_clock::now(); \
29  (name) += std::chrono::duration_cast<std::chrono::microseconds>(t_1 - t_0).count(); \
30  t_0 = t_1;
31 
32 size_t m_tread = 0;
33 size_t m_tprocess = 0;
34 size_t m_tfin = 0;
35 #else
36 #define TIME(name)
37 #endif
38 
39 
41 // Initialize
42 
43 FPGATrackSimDataPrepAlg::FPGATrackSimDataPrepAlg (const std::string& name, ISvcLocator* pSvcLocator) :
44  AthAlgorithm(name, pSvcLocator)
45 {
46 }
47 
48 
50 {
51  std::stringstream ss(m_description);
52  std::string line;
53  ATH_MSG_INFO("Tag config:");
54  if (!m_description.empty()) {
55  while (std::getline(ss, line, '\n')) {
56  ATH_MSG_INFO('\t' << line);
57  }
58  }
59 
60 
61  ATH_CHECK(m_hitSGInputTool.retrieve(EnableTool{!m_hitSGInputTool.empty()}));
62 
63  ATH_CHECK(m_hitInputTool.retrieve(EnableTool{!m_hitInputTool.empty()}));
64  ATH_CHECK(m_hitInputTool2.retrieve(EnableTool{m_secondInputToolN > 0 && !m_hitInputTool2.empty()}));
65  ATH_CHECK(m_hitMapTool.retrieve());
66  ATH_CHECK(m_hitFilteringTool.retrieve(EnableTool{m_doHitFiltering}));
67  ATH_CHECK(m_clusteringTool.retrieve(EnableTool{m_clustering}));
68  ATH_CHECK(m_spacepointsTool.retrieve(EnableTool{m_doSpacepoints}));
69 
70  ATH_CHECK(m_writeOutputTool.retrieve());
71  ATH_CHECK(m_FPGATrackSimMapping.retrieve());
72  if ( m_doEvtSel ) {
73  ATH_CHECK(m_evtSel.retrieve());
74  }
75 
76  ATH_MSG_DEBUG("initialize() Instantiating root objects");
78  m_logicEventHeader = m_writeOutputTool->addInputBranch(m_postClusterBranch.value(), true);
79 
80  ATH_MSG_DEBUG("initialize() Setting branch");
81 
82  if (!m_monTool.empty())
83  ATH_CHECK(m_monTool.retrieve());
84 
85  ATH_CHECK( m_FPGAClusterKey.initialize() );
87  ATH_CHECK( m_FPGAHitKey.initialize() );
88  ATH_CHECK( m_FPGASpacePointsKey.initialize() );
94 
95  ATH_MSG_DEBUG("initialize() Finished");
96 
97 
98  return StatusCode::SUCCESS;
99 }
100 
101 
103 // MAIN EXECUTE ROUTINE //
105 
107 {
108 #ifdef BENCHMARK_LOGICALHITSALG
109  std::chrono::time_point<std::chrono::steady_clock> t_0, t_1;
111 #endif
112 
113  const EventContext& ctx = getContext();
114 
115  // Read inputs
116  bool done = false;
117  ATH_CHECK(readInputs(done));
118 
119  if (done) {
120  SmartIF<IEventProcessor> appMgr{service("ApplicationMgr")};
121  if (!appMgr) {
122  ATH_MSG_ERROR("Failed to retrieve ApplicationMgr as IEventProcessor");
123  return StatusCode::FAILURE;
124  }
125  return appMgr->stopRun();
126  }
127 
129  ATH_CHECK( FPGAHits.record (std::make_unique<FPGATrackSimHitCollection>()));
130 
132  ATH_CHECK( FPGAHitUnmapped.record (std::make_unique<FPGATrackSimHitCollection>()));
133 
135  ATH_CHECK( FPGAClusters.record (std::make_unique<FPGATrackSimClusterCollection>()));
136 
138  ATH_CHECK( FPGAClustersFiltered.record (std::make_unique<FPGATrackSimClusterCollection>()));
139 
141  ATH_CHECK( FPGASpacePoints.record (std::make_unique<FPGATrackSimClusterCollection>()));
142 
144  ATH_CHECK(truthLinkVec.record(std::make_unique<xAODTruthParticleLinkVector>()));
145 
147  ATH_CHECK(FPGATruthTracks.record(std::make_unique<FPGATrackSimTruthTrackCollection>()));
148 
150  ATH_CHECK(FPGAOfflineTracks.record(std::make_unique<FPGATrackSimOfflineTrackCollection>()));
151 
152  // Apply truth track cuts
153  if ( m_doEvtSel ){
154  if (!m_evtSel->selectEvent(&m_eventHeader))
155  {
156  ATH_MSG_DEBUG("Event skipped by: " << m_evtSel->name());
157  return StatusCode::SUCCESS;
158  }
159  else {
160  ATH_MSG_DEBUG("Event accepted by: " << m_evtSel->name());
161  // Make a new truth link vector based on FPGATrackSim selections
162  if (m_runOnRDO) {
163  SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer(m_inputTruthParticleContainerKey, ctx); // Read offline TruthParticles
164  if (!truthParticleContainer.isValid()) {
165  ATH_MSG_ERROR("No valid truth particle container with key " << truthParticleContainer.key());
166  m_evtSel->setSelectedEvent(false);
167  return StatusCode::FAILURE;
168  }
169  const ElementLink<xAOD::TruthParticleContainer> eltp(*truthParticleContainer, truthParticleContainer->size() - 1);
170  std::vector<FPGATrackSimTruthTrack> const& truthtracks = m_eventHeader.optional().getTruthTracks();
171  for (const xAOD::TruthParticle* truthParticle : *truthParticleContainer) // loop over offline truth particles
172  {
173  for (const FPGATrackSimTruthTrack& fpgaTruthTrack : truthtracks) // loop over FPGA truth tracks
174  {
175  if (fpgaTruthTrack.getBarcode() == static_cast<HepMcParticleLink::barcode_type>(truthParticle->barcode()))
176  {
177  truthLinkVec->push_back(new xAODTruthParticleLink(HepMcParticleLink(truthParticle->barcode(), 0,
179  ATH_MSG_VERBOSE("Truth link added");
180  break;
181  }
182  }
183  }
184  std::stable_sort(truthLinkVec->begin(), truthLinkVec->end(), SortTruthParticleLink());
185  ATH_MSG_VERBOSE("Truth link size: " << truthLinkVec->size());
186  if (truthLinkVec->size() == 0)
187  {
188  ATH_MSG_DEBUG("No truth particles selected. Event skipped...");
189  m_evtSel->setSelectedEvent(false);
190  return StatusCode::SUCCESS;
191  }
192  }
193  }
194  } else {
195  ATH_MSG_DEBUG("No Event Selection applied");
196  }
197  TIME(m_tread);
198 
199  // Event passes cuts, count it
200  m_evt++;
201 
202  // Map, cluster, and filter hits
203  ATH_CHECK(processInputs(FPGAHitUnmapped, FPGAClusters, FPGAClustersFiltered, FPGASpacePoints));
204 
205  // Now that this is done, push truth tracks back to storegate.
206  for (const auto& truthtrack : m_logicEventHeader->optional().getTruthTracks()) {
207  FPGATruthTracks->push_back(truthtrack);
208  }
209 
210  // Need to do the same for offline tracks.
211  for (const auto& offlineTrack : m_logicEventHeader->optional().getOfflineTracks()) {
212  FPGAOfflineTracks->push_back(offlineTrack);
213  }
214 
215  // Get reference to hits
216  unsigned regionID = m_evtSel->getRegionID();
217  // Recording Data
218  auto mon_regionID = Monitored::Scalar<unsigned>("regionID", regionID);
219  Monitored::Group(m_monTool, mon_regionID);
220 
221  TIME(m_tprocess);
222 
223  // If and when we set up code to run over more than one region/tower at a time this will need to be updated
224  std::vector<FPGATrackSimHit> const & hits = m_logicEventHeader->towers().at(0).hits();
225 
226  std::vector<std::shared_ptr<const FPGATrackSimHit>> phits;
227  phits.reserve(hits.size());
228  for (FPGATrackSimHit const& h : hits) {
229  if (h.isReal()) phits.emplace_back(std::make_shared<const FPGATrackSimHit>(h));
230  }
231 
232  for (const auto & Hit : phits) FPGAHits->push_back(*Hit);
233 
234  auto mon_nhits = Monitored::Scalar<unsigned>("nHits", hits.size());
235  auto mon_nhits_unmapped = Monitored::Scalar<unsigned>("nHits_unmapped", m_hits_miss.size());
236  Monitored::Group(m_monTool, mon_nhits, mon_nhits_unmapped);
237 
238  // Write the output and reset
239  ATH_CHECK(m_writeOutputTool->writeData());
240 
241  // Reset data pointers
245 
246  TIME(m_tfin);
247 
248  return StatusCode::SUCCESS;
249 }
250 
251 
253 // INPUT PASSING, READING AND PROCESSING //
255 
257 {
258 
259  if ( !m_hitSGInputTool.empty()) {
260  ATH_CHECK(m_hitSGInputTool->readData(&m_eventHeader, Gaudi::Hive::currentContext()));
261  ATH_MSG_DEBUG("Loaded " << m_eventHeader.nHits() << " hits in event header from SG");
262 
263  return StatusCode::SUCCESS;
264  }
265 
266  if (m_ev % m_firstInputToolN == 0)
267  {
268  // Read primary input
269  ATH_CHECK(m_hitInputTool->readData(&m_firstInputHeader, done));
270  if (done)
271  {
272  ATH_MSG_INFO("Cannot read more events from file, returning");
273  return StatusCode::SUCCESS; // end of loop over events
274  }
275  }
276 
278 
279  // Read secondary input
280  for (int i = 0; i < m_secondInputToolN; i++)
281  {
282  ATH_CHECK(m_hitInputTool2->readData(&m_eventHeader, done, false));
283  if (done)
284  {
285  ATH_MSG_INFO("Cannot read more events from file, returning");
286  return StatusCode::SUCCESS;
287  }
288  }
289 
290  m_ev++;
291 
292  return StatusCode::SUCCESS;
293 }
294 
295 
296 // Applies clustering, mapping, hit filtering, and space points
301 {
302  m_clusters.clear();
303  m_spacepoints.clear();
304  m_hits_miss.clear();
305 
306  // Map hits
307  ATH_MSG_DEBUG("Running hits conversion");
311 
312  ATH_CHECK(m_hitMapTool->getUnmapped(m_hits_miss));
313  for (const FPGATrackSimHit& hit : m_hits_miss) FPGAHitUnmapped->push_back(hit);
314 
315 
316 
317  ATH_MSG_DEBUG("Hits conversion done");
318  // Random removal of hits
319  if (m_doHitFiltering) {
320  ATH_MSG_DEBUG("Running hits filtering");
321  ATH_CHECK(m_hitFilteringTool->DoRandomRemoval(*m_logicEventHeader, true));
322  }
323 
324  // At this stage, copy the logicEventHeader.
326 
327  // Clustering
328  if (m_clustering)
329  {
330  ATH_MSG_DEBUG("Running clustering");
333 
334  // I think I also want to pass m_clusters to random removal (but won't work currently)
335  if (m_doHitFiltering) ATH_CHECK(m_hitFilteringTool->DoRandomRemoval(*m_logicEventHeader, false));
336  for (const FPGATrackSimCluster& cluster : m_clusters_original) FPGAClusters->push_back(cluster);
337 
338  }
339 
340  // Filter hits/clusters (untested for hits, ie with m_clustering = false)
341  if (m_doHitFiltering)
342  {
343  // get the sets of layers that we want to filter hits from
344  std::vector<int> filter_pixel_physLayers;
345  std::vector<int> filter_strip_physLayers;
346  const FPGATrackSimPlaneMap *planeMap = m_FPGATrackSimMapping->PlaneMap_1st();
347  ATH_CHECK(m_hitFilteringTool->GetPairedStripPhysLayers(planeMap, filter_strip_physLayers));
348  m_clusters.clear();
349  ATH_CHECK(m_hitFilteringTool->DoHitFiltering(*m_logicEventHeader, filter_pixel_physLayers, filter_strip_physLayers, m_clusters));
350  for (const FPGATrackSimCluster &cluster : m_clusters) FPGAClustersFiltered->push_back(cluster);
351 
352  }
353 
354  // Space points
355  if (m_doSpacepoints) {
357  for (const FPGATrackSimCluster& cluster : m_spacepoints) FPGASpacePoints->push_back(cluster);
358  }
359 
360  return StatusCode::SUCCESS;
361 }
362 
364 // Finalize
365 
367 {
368 #ifdef BENCHMARK_LOGICALHITSALG
369  ATH_MSG_INFO("Timings:" <<
370  "\nread input: " << std::setw(10) << m_tread <<
371  "\nprocess hits: " << std::setw(10) << m_tprocess <<
372  "\nfin: " << std::setw(10) << m_tfin
373  );
374 #endif
375 
376  // TODO print out some data prep alg related stats here.s
377 
378  return StatusCode::SUCCESS;
379 }
FPGATrackSimDataPrepAlg::readInputs
StatusCode readInputs(bool &done)
Definition: FPGATrackSimDataPrepAlg.cxx:256
FPGATrackSimDataPrepAlg::m_evt
double m_evt
Definition: FPGATrackSimDataPrepAlg.h:109
checkFileSG.line
line
Definition: checkFileSG.py:75
FPGATrackSimDataPrepAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: FPGATrackSimDataPrepAlg.h:117
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
FPGATrackSimDataPrepAlg::m_hitSGInputTool
ToolHandle< IFPGATrackSimInputTool > m_hitSGInputTool
Definition: FPGATrackSimDataPrepAlg.h:72
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:74
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
FPGATrackSimDataPrepAlg::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimDataPrepAlg.cxx:49
FPGATrackSimDataPrepAlg::m_eventHeader
FPGATrackSimEventInputHeader m_eventHeader
Definition: FPGATrackSimDataPrepAlg.h:98
FPGATrackSimDataPrepAlg::m_hitMapTool
ToolHandle< FPGATrackSimRawToLogicalHitsTool > m_hitMapTool
Definition: FPGATrackSimDataPrepAlg.h:75
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimCluster
Definition: FPGATrackSimCluster.h:25
FPGATrackSimDataPrepAlg::execute
virtual StatusCode execute() override
Definition: FPGATrackSimDataPrepAlg.cxx:106
FPGATrackSimDataPrepAlg::m_logicEventHeader_precluster
FPGATrackSimLogicalEventInputHeader * m_logicEventHeader_precluster
Definition: FPGATrackSimDataPrepAlg.h:100
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
FPGATrackSimDataPrepAlg::m_doSpacepoints
Gaudi::Property< bool > m_doSpacepoints
Definition: FPGATrackSimDataPrepAlg.h:88
FPGATrackSimNNTrackTool.h
Utilize NN score to build track candidates.
FPGATrackSimDataPrepAlg::m_logicEventHeader
FPGATrackSimLogicalEventInputHeader * m_logicEventHeader
Definition: FPGATrackSimDataPrepAlg.h:101
FPGATrackSimTruthTrack
Definition: FPGATrackSimTruthTrack.h:14
TIME
#define TIME(name)
Definition: FPGATrackSimDataPrepAlg.cxx:36
FPGATrackSimDataPrepAlg::m_ev
int m_ev
Definition: FPGATrackSimDataPrepAlg.h:69
FPGATrackSimReadRawRandomHitsTool.h
FPGATrackSimDataPrepAlg::m_evtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_evtSel
Definition: FPGATrackSimDataPrepAlg.h:81
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
FPGATrackSimDataPrepAlg::m_description
std::string m_description
Definition: FPGATrackSimDataPrepAlg.h:68
FPGATrackSimDataPrepAlg::m_FPGAOfflineTrackKey
SG::WriteHandleKey< FPGATrackSimOfflineTrackCollection > m_FPGAOfflineTrackKey
Definition: FPGATrackSimDataPrepAlg.h:129
FPGATrackSimOptionalEventInfo::getTruthTracks
const std::vector< FPGATrackSimTruthTrack > & getTruthTracks() const
Definition: FPGATrackSimOptionalEventInfo.h:37
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimDataPrepAlg::m_FPGAClusterFilteredKey
SG::WriteHandleKey< FPGATrackSimClusterCollection > m_FPGAClusterFilteredKey
Definition: FPGATrackSimDataPrepAlg.h:120
FPGATrackSimEventInputHeader::nHits
int nHits() const
Definition: FPGATrackSimEventInputHeader.h:37
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
FPGATrackSimDataPrepAlg::m_hitFilteringTool
ToolHandle< IFPGATrackSimHitFilteringTool > m_hitFilteringTool
Definition: FPGATrackSimDataPrepAlg.h:76
FPGATrackSimDataPrepAlg::m_spacepointsTool
ToolHandle< FPGATrackSimSpacePointsToolI > m_spacepointsTool
Definition: FPGATrackSimDataPrepAlg.h:78
Hit
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloGpu/ISF_FastCaloGpu/Hit.h:16
FPGATrackSimDataPrepAlg::m_doEvtSel
Gaudi::Property< bool > m_doEvtSel
Definition: FPGATrackSimDataPrepAlg.h:90
FPGATrackSimLogicalEventInputHeader::optional
FPGATrackSimOptionalEventInfo const & optional() const
Definition: FPGATrackSimLogicalEventInputHeader.h:32
FPGATrackSimDataPrepAlg::m_spacepoints
std::vector< FPGATrackSimCluster > m_spacepoints
Definition: FPGATrackSimDataPrepAlg.h:105
python.handimod.now
now
Definition: handimod.py:675
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimDataPrepAlg::m_doHitFiltering
Gaudi::Property< bool > m_doHitFiltering
Definition: FPGATrackSimDataPrepAlg.h:86
FPGATrackSimDataPrepAlg::m_FPGAHitUnmappedKey
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitUnmappedKey
Definition: FPGATrackSimDataPrepAlg.h:123
FPGATrackSimLogicalEventOutputHeader.h
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:125
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
FPGATrackSimRawToLogicalHitsTool.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimDataPrepAlg::m_clustering
Gaudi::Property< bool > m_clustering
Definition: FPGATrackSimDataPrepAlg.h:87
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()
FPGATrackSimPlaneMap
Definition: FPGATrackSimPlaneMap.h:62
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
FPGATrackSimDataPrepAlg::m_secondInputToolN
Gaudi::Property< int > m_secondInputToolN
Definition: FPGATrackSimDataPrepAlg.h:85
FPGATrackSimDataPrepAlg::m_FPGAClusterKey
SG::WriteHandleKeyArray< FPGATrackSimClusterCollection > m_FPGAClusterKey
Definition: FPGATrackSimDataPrepAlg.h:119
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimDataPrepAlg::m_runOnRDO
Gaudi::Property< bool > m_runOnRDO
Definition: FPGATrackSimDataPrepAlg.h:91
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
FPGATrackSimDataPrepAlg::m_clusters_original
std::vector< FPGATrackSimCluster > m_clusters_original
Definition: FPGATrackSimDataPrepAlg.h:104
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:33
FPGATrackSimDataPrepAlg::m_clusteringTool
ToolHandle< FPGATrackSimClusteringToolI > m_clusteringTool
Definition: FPGATrackSimDataPrepAlg.h:77
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:94
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
FPGATrackSimDataPrepAlg::m_FPGAHitKey
SG::WriteHandleKeyArray< FPGATrackSimHitCollection > m_FPGAHitKey
Definition: FPGATrackSimDataPrepAlg.h:122
FPGATrackSimDataPrepAlg::m_postClusterBranch
Gaudi::Property< std::string > m_postClusterBranch
Definition: FPGATrackSimDataPrepAlg.h:95
h
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
FPGATrackSimDataPrepAlg::m_clusters
std::vector< FPGATrackSimCluster > m_clusters
Definition: FPGATrackSimDataPrepAlg.h:104
FPGATrackSimDataPrepAlg::m_truthLinkContainerKey
SG::WriteHandleKey< xAODTruthParticleLinkVector > m_truthLinkContainerKey
Definition: FPGATrackSimDataPrepAlg.h:126
FPGATrackSimDataPrepAlg::m_firstInputToolN
Gaudi::Property< int > m_firstInputToolN
Definition: FPGATrackSimDataPrepAlg.h:84
FPGATrackSimDataPrepAlg::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimDataPrepAlg.h:80
FPGATrackSimDataPrepAlg::m_hits_miss
std::vector< FPGATrackSimHit > m_hits_miss
Definition: FPGATrackSimDataPrepAlg.h:106
FPGATrackSimDataPrepAlg::FPGATrackSimDataPrepAlg
FPGATrackSimDataPrepAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimDataPrepAlg.cxx:43
FPGATrackSimLogicalEventInputHeader::towers
const std::vector< FPGATrackSimTowerInputHeader > & towers() const
Definition: FPGATrackSimLogicalEventInputHeader.h:36
FPGATrackSimDataPrepAlg::m_hitInputTool
ToolHandle< IFPGATrackSimEventInputHeaderTool > m_hitInputTool
Definition: FPGATrackSimDataPrepAlg.h:73
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:99
FPGATrackSimLogicalEventInputHeader.h
FPGATrackSimEventInputHeader::reset
void reset()
Definition: FPGATrackSimEventInputHeader.cxx:15
FPGATrackSimDataPrepAlg::m_FPGASpacePointsKey
SG::WriteHandleKeyArray< FPGATrackSimClusterCollection > m_FPGASpacePointsKey
Definition: FPGATrackSimDataPrepAlg.h:121
FPGATrackSimDataPrepAlg::processInputs
StatusCode processInputs(SG::WriteHandle< FPGATrackSimHitCollection > &FPGAHitUnmapped, SG::WriteHandle< FPGATrackSimClusterCollection > &FPGAClusters, SG::WriteHandle< FPGATrackSimClusterCollection > &FPGAClustersFiltered, SG::WriteHandle< FPGATrackSimClusterCollection > &FPGASpacePoints)
Definition: FPGATrackSimDataPrepAlg.cxx:297
FPGATrackSimDataPrepAlg::finalize
virtual StatusCode finalize() override
Definition: FPGATrackSimDataPrepAlg.cxx:366
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
FPGATrackSimTrackFitterTool.h
FPGATrackSimDataPrepAlg::m_FPGATruthTrackKey
SG::WriteHandleKey< FPGATrackSimTruthTrackCollection > m_FPGATruthTrackKey
Definition: FPGATrackSimDataPrepAlg.h:128
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.