ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimOptionalEventInfo.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGFPGATrackSimOBJECTS_FPGATrackSimOPTIONALEVENTINFO_H
6#define TRIGFPGATrackSimOBJECTS_FPGATrackSimOPTIONALEVENTINFO_H
7
8#include <TObject.h>
9#include <vector>
10#include <iostream>
11#include <sstream>
12
16
18
19public:
20
23
24 void reset() const;
25
26 // Offline Clusters
27 const std::vector<FPGATrackSimCluster>& getOfflineClusters() const { return m_OfflineClusters; }
28 size_t nOfflineClusters() const { return m_OfflineClusters.size(); }
29 void addOfflineCluster(const FPGATrackSimCluster& c) const { m_OfflineClusters.push_back(c); }
30
31 // Offline Tracks
32 const std::vector<FPGATrackSimOfflineTrack>& getOfflineTracks() const { return m_OfflineTracks; }
33 size_t nOfflineTracks() const { return m_OfflineTracks.size(); }
34 void addOfflineTrack(const FPGATrackSimOfflineTrack& t) const { m_OfflineTracks.push_back(t); };
35
36 // Truth Tracks
37 const std::vector<FPGATrackSimTruthTrack>& getTruthTracks() const { return m_TruthTracks; }
38 size_t nTruthTracks() const { return m_TruthTracks.size(); }
39 void addTruthTrack(const FPGATrackSimTruthTrack& t) const { m_TruthTracks.push_back(t); }
40
41
42 //reserve sizes
43 void reserveOfflineClusters(size_t size) const { m_OfflineClusters.reserve(size); }
44 void reserveOfflineTracks(size_t size) const { m_OfflineTracks.reserve(size); }
45 void reserveTruthTracks(size_t size) const { m_TruthTracks.reserve(size); }
46
47
48private:
49
50 // Mutable members required for ROOT I/O operations within const execute() method.
51 // - Call chain: FPGATrackSimDataPrepAlg::execute() const
52 // --> FPGATrackSimOutputHeaderTool::writeData() const
53 // --> FPGATrackSimLogicalEventInputHeader::reset() const
54 // - Execute creates local copies, moves data to ROOT objects under m_rootWriteMutex, then resets
55 // - Thread-safety: local objects are per-thread, persistent ROOT objects protected by mutex
56
57 mutable std::vector<FPGATrackSimCluster> m_OfflineClusters ATLAS_THREAD_SAFE;
58 mutable std::vector<FPGATrackSimOfflineTrack> m_OfflineTracks ATLAS_THREAD_SAFE;
59 mutable std::vector<FPGATrackSimTruthTrack> m_TruthTracks ATLAS_THREAD_SAFE;
60
61
63};
64
65std::ostream& operator<<(std::ostream&, const FPGATrackSimOptionalEventInfo&);
66#endif
std::ostream & operator<<(std::ostream &, const FPGATrackSimOptionalEventInfo &)
void addOfflineCluster(const FPGATrackSimCluster &c) const
const std::vector< FPGATrackSimTruthTrack > & getTruthTracks() const
std::vector< FPGATrackSimCluster > m_OfflineClusters ATLAS_THREAD_SAFE
void addOfflineTrack(const FPGATrackSimOfflineTrack &t) const
void addTruthTrack(const FPGATrackSimTruthTrack &t) const
const std::vector< FPGATrackSimCluster > & getOfflineClusters() const
const std::vector< FPGATrackSimOfflineTrack > & getOfflineTracks() const