gstreamer
Loading...
Searching...
No Matches
gRootTree.h
Go to the documentation of this file.
1#pragma once
2
3// c++
4#include <map>
5
6// ROOT
7#include "TTree.h"
8#include "ROOT/TThreadedObject.hxx"
9
10// gemc
13
14#define EVENTHEADERTREENAME "event_header"
15#define RUNHEADERTREENAME "run_header"
16#define TRUEINFONAMEPREFIX "true_info_"
17#define DIGITIZEDNAMEPREFIX "digitized_"
18#define GENERATEDTREENAMEDESC "Generated Particles"
19
20#define ERR_GSTREAMERROOTTREENOTFOUND 850
21
22#define EVENTHEADERTREENAMEDESC "Event Header"
23#define RUNHEADERTREENAMEDESC "Run Header"
24#define TRUEINFOTREENAMEDESC "True Info Data"
25#define DIGITIZEDTREENAMEDESC "Digitized Data"
26
54{
55public:
57 ~GRootTree() { if (log) log->debug(NORMAL, "~GRootTree"); }
58
70 GRootTree([[maybe_unused]] const std::unique_ptr<GEventHeader>& gevent_header, std::shared_ptr<GLogger>& log);
71
80 GRootTree([[maybe_unused]] const std::unique_ptr<GRunHeader>& grun_header, std::shared_ptr<GLogger>& log);
81
93 GRootTree(const std::string& detectorName, const GTrueInfoData* gdata, std::shared_ptr<GLogger>& log);
94
106 GRootTree(const std::string& detectorName, const GDigitizedData* gdata, std::shared_ptr<GLogger>& log);
107
118 GRootTree(const std::string& treeName, const GGeneratedParticleBank& particles, std::shared_ptr<GLogger>& log);
119
129 bool fillTree(const std::unique_ptr<GEventHeader>& gevent_header);
130
137 bool fillTree(const std::unique_ptr<GRunHeader>& run_header);
138
147 bool fillTree(const std::vector<const GTrueInfoData*>& trueInfoData);
148
157 bool fillTree(const std::vector<const GDigitizedData*>& digitizedData);
158
167 bool fillTree(const GGeneratedParticleBank& particles);
168
169private:
171 std::unique_ptr<TTree> root_tree;
172
174 std::map<std::string, std::vector<int>> intVarsMap;
175
177 std::map<std::string, std::vector<double>> doubleVarsMap;
178
180 std::map<std::string, std::vector<std::string>>stringVarsMap;
181
188 void registerVariable(const std::string& varname, int value, bool can_ignore_duplicates = false);
189
196 void registerVariable(const std::string& varname, double value);
197
204 void registerVariable(const std::string& varname, const std::string& value);
205
207 std::shared_ptr<GLogger>& log;
208};
void debug(debug_type type, Args &&... args) const
Helper class encapsulating one ROOT TTree and its branch storage.
Definition gRootTree.h:54
GRootTree(const std::unique_ptr< GEventHeader > &gevent_header, std::shared_ptr< GLogger > &log)
Construct an event-header tree and register its branches.
Definition gRootTree.cc:10
~GRootTree()
Destructor emitting a debug trace when a logger is available.
Definition gRootTree.h:57
bool fillTree(const std::unique_ptr< GEventHeader > &gevent_header)
Fill the event-header tree with one event header entry.
Definition gRootTree.cc:28
std::vector< GGeneratedParticleData > GGeneratedParticleBank
NORMAL