ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimOutputHeaderTool Class Reference

#include <FPGATrackSimOutputHeaderTool.h>

Inheritance diagram for FPGATrackSimOutputHeaderTool:
Collaboration diagram for FPGATrackSimOutputHeaderTool:

Public Member Functions

 FPGATrackSimOutputHeaderTool (const std::string &, const std::string &, const IInterface *)
virtual ~FPGATrackSimOutputHeaderTool ()=default
virtual StatusCode initialize () override
virtual StatusCode finalize () override
FPGATrackSimLogicalEventInputHeaderaddInputBranch (const std::string &branchName, bool write=true)
FPGATrackSimLogicalEventOutputHeaderaddOutputBranch (const std::string &branchName, bool write=true)
StatusCode configureReadBranches () const
StatusCode readData (bool &last) const
StatusCode writeData () const
std::string fileName ()
TTree * getEventTree ()
void activateEventOutput () const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode openFile (std::string const &path) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< std::vector< std::string > > m_inpath {this, "InFileName", {"."}, "input file paths"}
Gaudi::Property< std::string > m_rwoption {this, "RWstatus", std::string("READ"), "define read or write file option: READ, RECREATE, HEADER"}
Gaudi::Property< std::string > m_treeName {this, "OutputTreeName", "FPGATrackSimLogicalEventTree", "Name of the output TTree to create."}
ServiceHandle< ITHistSvc > m_tHistSvc {this, "THistSvc", "THistSvc"}
Gaudi::Property< int > m_eventLimit {this, "EventLimit", 10000 , "Maximum Number of Events to Output"}
Gaudi::Property< bool > m_requireActivation {this, "RequireActivation", false , "Only output if activated on event, good for doing a single region in a large file"}
std::atomic< unsigned > m_event = 0
std::atomic< unsigned > m_totevent = 0
std::atomic< unsigned > m_file = 0
std::atomic< bool > m_activated {false}
std::mutex m_writeMutex
std::vector< FPGATrackSimLogicalEventInputHeader * > m_eventInputHeaders ATLAS_THREAD_SAFE
std::vector< FPGATrackSimLogicalEventOutputHeader * > m_eventOutputHeaders ATLAS_THREAD_SAFE
std::vector< std::string > m_branchNameIns
std::vector< std::string > m_branchNameOuts
TFile *m_infile ATLAS_THREAD_SAFE = nullptr
TTree *m_EventTree ATLAS_THREAD_SAFE = nullptr
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 29 of file FPGATrackSimOutputHeaderTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ FPGATrackSimOutputHeaderTool()

FPGATrackSimOutputHeaderTool::FPGATrackSimOutputHeaderTool ( const std::string & algname,
const std::string & name,
const IInterface * ifc )

Definition at line 9 of file FPGATrackSimOutputHeaderTool.cxx.

9 :
10 AthAlgTool(algname,name,ifc) {}
AthAlgTool()
Default constructor:

◆ ~FPGATrackSimOutputHeaderTool()

virtual FPGATrackSimOutputHeaderTool::~FPGATrackSimOutputHeaderTool ( )
virtualdefault

Member Function Documentation

◆ activateEventOutput()

void FPGATrackSimOutputHeaderTool::activateEventOutput ( ) const
inline

Definition at line 56 of file FPGATrackSimOutputHeaderTool.h.

◆ addInputBranch()

FPGATrackSimLogicalEventInputHeader * FPGATrackSimOutputHeaderTool::addInputBranch ( const std::string & branchName,
bool write = true )

Definition at line 135 of file FPGATrackSimOutputHeaderTool.cxx.

135 {
136 m_eventInputHeaders.push_back(new FPGATrackSimLogicalEventInputHeader());
137 FPGATrackSimLogicalEventInputHeader* inputHeader = m_eventInputHeaders.at(m_eventInputHeaders.size() - 1);
138 m_branchNameIns.push_back(branchName);
139 if (write) {
140 m_EventTree->Branch(branchName.c_str(), "FPGATrackSimLogicalEventInputHeader", inputHeader);
141 }
142 return inputHeader;
143}
std::vector< std::string > m_branchNameIns

◆ addOutputBranch()

FPGATrackSimLogicalEventOutputHeader * FPGATrackSimOutputHeaderTool::addOutputBranch ( const std::string & branchName,
bool write = true )

Definition at line 145 of file FPGATrackSimOutputHeaderTool.cxx.

145 {
146 m_eventOutputHeaders.push_back(new FPGATrackSimLogicalEventOutputHeader());
147 FPGATrackSimLogicalEventOutputHeader* outputHeader = m_eventOutputHeaders.at(m_eventOutputHeaders.size() - 1);
148 m_branchNameOuts.push_back(branchName);
149 if (write) {
150 m_EventTree->Branch(branchName.c_str(), "FPGATrackSimLogicalEventOutputHeader", outputHeader);
151 }
152 return outputHeader;
153}
std::vector< std::string > m_branchNameOuts

◆ configureReadBranches()

StatusCode FPGATrackSimOutputHeaderTool::configureReadBranches ( ) const

Definition at line 52 of file FPGATrackSimOutputHeaderTool.cxx.

52 {
53
54 // Don't do anything
55 if (m_rwoption.value() != std::string("READ")) {
56 ATH_MSG_FATAL("Called configureReadBranches() when ROOT file was not opened in READ mode.");
57 return StatusCode::FAILURE;
58 }
59
60 // In read mode, we want to make sure the configured branches are actually available.
61 // Configuration is via a function call (to allow different algorithms to set up different numbers of branches).
62 for (unsigned i = 0; i < m_branchNameIns.size(); i++) {
63 std::string branchName = m_branchNameIns.at(i);
64 if (!m_EventTree->GetListOfBranches()->FindObject(branchName.c_str())) {
65 ATH_MSG_FATAL("Configured input branch: " << branchName << " not found!");
66 return StatusCode::FAILURE;
67 }
68 TBranch *branchIn = m_EventTree->GetBranch(branchName.c_str());
69 branchIn->SetAddress(&(m_eventInputHeaders.at(i)));
70 m_EventTree->SetBranchStatus(branchName.c_str(), 1);
71 }
72
73 // Do the same thing for the output branches. In fact we could maybe combine these loops by making a function.
74 for (unsigned i = 0; i < m_branchNameOuts.size(); i++) {
75 std::string branchName = m_branchNameOuts.at(i);
76 if (!m_EventTree->GetListOfBranches()->FindObject(branchName.c_str())) {
77 ATH_MSG_FATAL("Configured output branch: " << branchName << " not found!");
78 return StatusCode::FAILURE;
79 }
80 TBranch *branchIn = m_EventTree->GetBranch(branchName.c_str());
81 branchIn->SetAddress(&(m_eventOutputHeaders.at(i)));
82 m_EventTree->SetBranchStatus(branchName.c_str(), 1);
83 }
84
85 return StatusCode::SUCCESS;
86}
#define ATH_MSG_FATAL(x)
Gaudi::Property< std::string > m_rwoption

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ fileName()

std::string FPGATrackSimOutputHeaderTool::fileName ( )
inline

Definition at line 51 of file FPGATrackSimOutputHeaderTool.h.

51{ return std::accumulate(m_inpath.value().begin(), m_inpath.value().end(), std::string{}); }
Gaudi::Property< std::vector< std::string > > m_inpath

◆ finalize()

StatusCode FPGATrackSimOutputHeaderTool::finalize ( )
overridevirtual

Definition at line 156 of file FPGATrackSimOutputHeaderTool.cxx.

157{
158 ATH_MSG_INFO ("finalize: closing files");
159
160 if (m_rwoption.value() == std::string("RECREATE")) {
161 ATH_MSG_INFO ("Contains " << m_EventTree->GetEntries() << " entries, over " << m_event << " events run");
162 // close the output files, but check that it exists (for athenaMP)
163 m_infile->Write();
164 }
165
166 if (m_rwoption.value() != std::string("HEADER")) {
167 m_infile->Close();
168 }
169
170 // deleting pointers
171 for (auto* header : m_eventInputHeaders) delete header;
172 for (auto* header : m_eventOutputHeaders) delete header;
173
174 return StatusCode::SUCCESS;
175}
#define ATH_MSG_INFO(x)

◆ getEventTree()

TTree * FPGATrackSimOutputHeaderTool::getEventTree ( )
inline

Definition at line 54 of file FPGATrackSimOutputHeaderTool.h.

54{ return m_EventTree; }

◆ initialize()

StatusCode FPGATrackSimOutputHeaderTool::initialize ( )
overridevirtual

Definition at line 89 of file FPGATrackSimOutputHeaderTool.cxx.

90{
91 // Dump the configuration to make sure it propagated through right
92 const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
93 for( Gaudi::Details::PropertyBase* prop : props ) {
94 if (prop->ownerTypeName()==this->type()) {
95 ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
96 }
97 }
98
99 ATH_CHECK(m_tHistSvc.retrieve());
100
101 if( m_rwoption.value()!=std::string("HEADER"))
102 {
103 if (m_inpath.value().empty())
104 {
105 ATH_MSG_ERROR("Empty input file list");
106 return StatusCode::FAILURE;
107 }
108 ATH_CHECK(openFile(m_inpath.value().front()));
109 }
110
111 if (m_rwoption.value() == std::string("READ")) {
112 ATH_MSG_DEBUG ("Initialized in READ MODE");
113 } else if (m_rwoption.value()==std::string("RECREATE") || m_rwoption.value()==std::string("HEADER")) {
114
115 // branches are NO LONGER created here, the user needs to do this.
116 m_EventTree = new TTree(m_treeName.value().c_str(), "data");
117
118 // For HEADER-- use THistSvc explicitly to set things up.
119 if (m_rwoption.value() == std::string("HEADER")) {
120 ATH_CHECK(m_tHistSvc->regTree(Form("/FPGATRACKSIMOUTPUT/%s", m_treeName.value().c_str()), m_EventTree));
121 }
122
123 } else {
124 ATH_MSG_ERROR ("RWstatus = " << m_rwoption.value() << " is not allowed!");
125 return StatusCode::FAILURE;
126 }
127
128 m_event = 0; // in file
129 m_totevent = 0; // total counter
130 return StatusCode::SUCCESS;
131}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
StatusCode openFile(std::string const &path) const
Gaudi::Property< std::string > m_treeName

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ openFile()

StatusCode FPGATrackSimOutputHeaderTool::openFile ( std::string const & path) const
private

Definition at line 14 of file FPGATrackSimOutputHeaderTool.cxx.

15{
16 // close old file (I don't think we delete the pointer. Does ROOT handle that?)
17 if (m_infile && m_infile->IsOpen()) m_infile->Close();
18
19 // open new file
20 ATH_MSG_DEBUG ("Opening file " << path.c_str() << " in " << m_rwoption.value() << " mode.");
21 m_infile = TFile::Open(path.c_str(), m_rwoption.value().c_str());
22
23 if (!m_infile) {
24 ATH_MSG_FATAL("Could not open input file: " << path);
25 return StatusCode::FAILURE;
26 }
27
28 if (m_rwoption.value() == std::string("READ")) {
29 // get the tree
30 m_EventTree = (TTree*) m_infile->Get(m_treeName.value().c_str());
31 if (!m_EventTree || m_EventTree->GetEntries() == -1) {
32 ATH_MSG_FATAL ("Input file: " << m_inpath.value() << " has no entries");
33 return StatusCode::FAILURE;
34 }
35
36 ATH_MSG_INFO ("Input file: " << path << " has " << m_EventTree->GetEntries() << " event entries.");
37 }
38
39 m_infile->cd();
40 m_event = 0; // in file
41 m_totevent = 0; // total counter
42 return StatusCode::SUCCESS;
43}
path
python interpreter configuration --------------------------------------—
Definition athena.py:126

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ readData()

StatusCode FPGATrackSimOutputHeaderTool::readData ( bool & last) const

Definition at line 236 of file FPGATrackSimOutputHeaderTool.cxx.

237{
238 if (m_rwoption.value() != std::string("READ")) {
239 ATH_MSG_WARNING ("Asked to read file that is not in READ mode");
240 return StatusCode::SUCCESS;
241 }
242
243 for (auto* header : m_eventInputHeaders) {
244 header->reset();
245 }
246
247 for (auto* header : m_eventOutputHeaders) {
248 header->reset();
249 }
250
251 ATH_MSG_DEBUG ("Asked Event " << m_event << " in this file; current total is " << m_totevent);
252 last = false;
253 if (m_event >= static_cast<unsigned>(m_EventTree->GetEntries())) {
254 std::lock_guard<std::mutex> lock(m_writeMutex);
255 if (m_event >= static_cast<unsigned>(m_EventTree->GetEntries())) {
256 unsigned current_file = m_file++;
257 if (current_file < m_inpath.value().size()) {
258 ATH_CHECK(openFile(m_inpath.value().at(current_file)));
259 // If opening a new file we need to update the branch addresses.
261 }
262 else {
263 last = true;
264 return StatusCode::SUCCESS;
265 }
266 }
267 }
268
269 // Protect ROOT TTree reads with mutex
270 {
271 std::lock_guard<std::mutex> lock(m_writeMutex);
272 // Read the objects. I removed some of the debug messages here, they could be readded.
273 for (const std::string& branchName : m_branchNameIns) {
274 int statIn = m_EventTree->GetBranch(branchName.c_str())->GetEntry(m_event);
275 if (statIn <= 0) ATH_MSG_WARNING("Error in reading from branch " << branchName);
276 }
277
278 for (const std::string& branchName : m_branchNameOuts) {
279 int statOut = m_EventTree->GetBranch(branchName.c_str())->GetEntry(m_event);
280 if (statOut <= 0) ATH_MSG_WARNING("Error in reading from branch " << branchName);
281 }
282 }
283
284 // increase counters
285 m_event++;
286 m_totevent++;
287
288 return StatusCode::SUCCESS;
289}
#define ATH_MSG_WARNING(x)

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeData()

StatusCode FPGATrackSimOutputHeaderTool::writeData ( ) const

Definition at line 180 of file FPGATrackSimOutputHeaderTool.cxx.

180 {
181
182 if (m_rwoption.value() == std::string("READ")) {
183 ATH_MSG_WARNING ("Asked to write file in READ mode");
184 return StatusCode::SUCCESS;
185 }
186
187 ATH_MSG_DEBUG ("Writing data in TTree, event cnt=" << m_event << " limit=" << m_eventLimit << " activated" << m_activated);
188
189 // Interpret -1 as no limit.
190 if ((m_event < static_cast<unsigned>(m_eventLimit) || m_eventLimit < 0) &&
192
193 {
194 std::lock_guard<std::mutex> lock(m_writeMutex);
195 m_EventTree->Fill(); // Protected ROOT operation
196 }
197
198 m_event++;
199 m_totevent++;
200 m_activated = false;
201
202 for (unsigned i = 0; i < m_eventInputHeaders.size(); i++) {
203 ATH_MSG_DEBUG("Wrote event " << m_event << " in input header (" << m_branchNameIns.at(i) << ") event " << m_eventInputHeaders.at(i)->event());
204 }
205 for (unsigned i = 0; i < m_eventOutputHeaders.size(); i++) {
206 ATH_MSG_DEBUG("Wrote event " << m_event << " in output header (" << m_branchNameOuts.at(i) << ")");
207 ATH_MSG_DEBUG("n.roads_1st = " << m_eventOutputHeaders.at(i)->nFPGATrackSimRoads_1st());
208 ATH_MSG_DEBUG("n.roads_2nd = " << m_eventOutputHeaders.at(i)->nFPGATrackSimRoads_2nd());
209 ATH_MSG_DEBUG("n.tracks_1st = " << m_eventOutputHeaders.at(i)->nFPGATrackSimTracks_1st());
210 ATH_MSG_DEBUG("n.tracks_2nd = " << m_eventOutputHeaders.at(i)->nFPGATrackSimTracks_2nd());
211 }
212 }
213
214 // Reset any input headers that we wrote out (with debugging prints).
215 for (unsigned i = 0; i < m_eventInputHeaders.size(); i++) {
216 m_eventInputHeaders.at(i)->reset();
217 }
218
219 // Reset any output headers that we wrote out (With debugging prints).
220 for (unsigned i = 0; i < m_eventOutputHeaders.size(); i++) {
221 m_eventOutputHeaders.at(i)->reset();
222 }
223
224 // Only return FAILURe if there were no input AND output headers (i.e. something is misconfigured).
225 if (m_eventInputHeaders.size() == 0 and m_eventOutputHeaders.size() == 0) {
226 ATH_MSG_ERROR("Tried to fill output ROOT file with no configured input or output headers.");
227 return StatusCode::FAILURE;
228 }
229
230 return StatusCode::SUCCESS;
231}

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/4]

std::vector<FPGATrackSimLogicalEventInputHeader*> m_eventInputHeaders FPGATrackSimOutputHeaderTool::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 89 of file FPGATrackSimOutputHeaderTool.h.

◆ ATLAS_THREAD_SAFE [2/4]

std::vector<FPGATrackSimLogicalEventOutputHeader*> m_eventOutputHeaders FPGATrackSimOutputHeaderTool::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 90 of file FPGATrackSimOutputHeaderTool.h.

◆ ATLAS_THREAD_SAFE [3/4]

TFile* m_infile FPGATrackSimOutputHeaderTool::ATLAS_THREAD_SAFE = nullptr
mutableprivate

Definition at line 96 of file FPGATrackSimOutputHeaderTool.h.

◆ ATLAS_THREAD_SAFE [4/4]

TTree* m_EventTree FPGATrackSimOutputHeaderTool::ATLAS_THREAD_SAFE = nullptr
mutableprivate

Definition at line 97 of file FPGATrackSimOutputHeaderTool.h.

◆ m_activated

std::atomic<bool> FPGATrackSimOutputHeaderTool::m_activated {false}
mutableprivate

Definition at line 85 of file FPGATrackSimOutputHeaderTool.h.

85{false}; // static so if any instance is active they all are

◆ m_branchNameIns

std::vector<std::string> FPGATrackSimOutputHeaderTool::m_branchNameIns
private

Definition at line 92 of file FPGATrackSimOutputHeaderTool.h.

◆ m_branchNameOuts

std::vector<std::string> FPGATrackSimOutputHeaderTool::m_branchNameOuts
private

Definition at line 93 of file FPGATrackSimOutputHeaderTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_event

std::atomic<unsigned> FPGATrackSimOutputHeaderTool::m_event = 0
mutableprivate

Definition at line 82 of file FPGATrackSimOutputHeaderTool.h.

◆ m_eventLimit

Gaudi::Property<int> FPGATrackSimOutputHeaderTool::m_eventLimit {this, "EventLimit", 10000 , "Maximum Number of Events to Output"}
private

Definition at line 76 of file FPGATrackSimOutputHeaderTool.h.

76{this, "EventLimit", 10000 , "Maximum Number of Events to Output"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_file

std::atomic<unsigned> FPGATrackSimOutputHeaderTool::m_file = 0
mutableprivate

Definition at line 84 of file FPGATrackSimOutputHeaderTool.h.

◆ m_inpath

Gaudi::Property<std::vector<std::string> > FPGATrackSimOutputHeaderTool::m_inpath {this, "InFileName", {"."}, "input file paths"}
private

Definition at line 63 of file FPGATrackSimOutputHeaderTool.h.

63{this, "InFileName", {"."}, "input file paths"};

◆ m_requireActivation

Gaudi::Property<bool> FPGATrackSimOutputHeaderTool::m_requireActivation {this, "RequireActivation", false , "Only output if activated on event, good for doing a single region in a large file"}
private

Definition at line 79 of file FPGATrackSimOutputHeaderTool.h.

79{this, "RequireActivation", false , "Only output if activated on event, good for doing a single region in a large file"};

◆ m_rwoption

Gaudi::Property<std::string> FPGATrackSimOutputHeaderTool::m_rwoption {this, "RWstatus", std::string("READ"), "define read or write file option: READ, RECREATE, HEADER"}
private

Definition at line 67 of file FPGATrackSimOutputHeaderTool.h.

67{this, "RWstatus", std::string("READ"), "define read or write file option: READ, RECREATE, HEADER"};

◆ m_tHistSvc

ServiceHandle<ITHistSvc> FPGATrackSimOutputHeaderTool::m_tHistSvc {this, "THistSvc", "THistSvc"}
private

Definition at line 73 of file FPGATrackSimOutputHeaderTool.h.

73{this, "THistSvc", "THistSvc"};

◆ m_totevent

std::atomic<unsigned> FPGATrackSimOutputHeaderTool::m_totevent = 0
mutableprivate

Definition at line 83 of file FPGATrackSimOutputHeaderTool.h.

◆ m_treeName

Gaudi::Property<std::string> FPGATrackSimOutputHeaderTool::m_treeName {this, "OutputTreeName", "FPGATrackSimLogicalEventTree", "Name of the output TTree to create."}
private

Definition at line 70 of file FPGATrackSimOutputHeaderTool.h.

70{this, "OutputTreeName", "FPGATrackSimLogicalEventTree", "Name of the output TTree to create."};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeMutex

std::mutex FPGATrackSimOutputHeaderTool::m_writeMutex
mutableprivate

Definition at line 86 of file FPGATrackSimOutputHeaderTool.h.


The documentation for this class was generated from the following files: