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
14namespace gstreamer::root {
15inline constexpr char EVENTHEADERTREENAME[] = "event_header";
16inline constexpr char RUNHEADERTREENAME[] = "run_header";
17inline constexpr char TRUEINFONAMEPREFIX[] = "true_info_";
18inline constexpr char DIGITIZEDNAMEPREFIX[] = "digitized_";
19inline constexpr char GENERATEDTREENAMEDESC[] = "Generated Particles";
20inline constexpr char ANCESTORTREENAME[] = "ancestors";
21inline constexpr char ANCESTORTREENAMEDESC[] = "Geant4 Ancestors";
22inline constexpr int ERR_GSTREAMERROOTTREENOTFOUND = 850;
23inline constexpr char EVENTHEADERTREENAMEDESC[] = "Event Header";
24inline constexpr char RUNHEADERTREENAMEDESC[] = "Run Header";
25inline constexpr char TRUEINFOTREENAMEDESC[] = "True Info Data";
26inline constexpr char DIGITIZEDTREENAMEDESC[] = "Digitized Data";
27} // namespace gstreamer::root
28
34
56{
57public:
59 ~GRootTree() { if (log) log->debug(NORMAL, "~GRootTree"); }
60
72 GRootTree([[maybe_unused]] const std::unique_ptr<GEventHeader>& gevent_header, std::shared_ptr<GLogger>& log);
73
82 GRootTree([[maybe_unused]] const std::unique_ptr<GRunHeader>& grun_header, std::shared_ptr<GLogger>& log);
83
95 GRootTree(const std::string& detectorName, const GTrueInfoData* gdata, std::shared_ptr<GLogger>& log);
96
108 GRootTree(const std::string& detectorName, const GDigitizedData* gdata, std::shared_ptr<GLogger>& log);
109
120 GRootTree(const std::string& treeName, const GGeneratedParticleBank& particles, std::shared_ptr<GLogger>& log);
121
123 GRootTree(const GAncestorBank& ancestors, std::shared_ptr<GLogger>& log);
124
134 bool fillTree(const std::unique_ptr<GEventHeader>& gevent_header);
135
142 bool fillTree(const std::unique_ptr<GRunHeader>& run_header);
143
152 bool fillTree(const std::vector<const GTrueInfoData*>& trueInfoData);
153
162 bool fillTree(const std::vector<const GDigitizedData*>& digitizedData);
163
172 bool fillTree(const GGeneratedParticleBank& particles);
173
175 bool fillTree(const GAncestorBank& ancestors);
176
177private:
179 std::unique_ptr<TTree> root_tree;
180
182 std::map<std::string, std::vector<int>> intVarsMap;
183
185 std::map<std::string, std::vector<double>> doubleVarsMap;
186
188 std::map<std::string, std::vector<std::string>>stringVarsMap;
189
196 void registerVariable(const std::string& varname, int value, bool can_ignore_duplicates = false);
197
204 void registerVariable(const std::string& varname, double value);
205
212 void registerVariable(const std::string& varname, const std::string& value);
213
215 std::shared_ptr<GLogger>& log;
216};
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:59
bool fillTree(const std::unique_ptr< GEventHeader > &gevent_header)
Fill the event-header tree with one event header entry.
Definition gRootTree.cc:29
std::vector< GAncestorData > GAncestorBank
std::vector< GGeneratedParticleData > GGeneratedParticleBank
NORMAL
constexpr char RUNHEADERTREENAMEDESC[]
Definition gRootTree.h:24
constexpr int ERR_GSTREAMERROOTTREENOTFOUND
Definition gRootTree.h:22
constexpr char TRUEINFONAMEPREFIX[]
Definition gRootTree.h:17
constexpr char GENERATEDTREENAMEDESC[]
Definition gRootTree.h:19
constexpr char RUNHEADERTREENAME[]
Definition gRootTree.h:16
constexpr char EVENTHEADERTREENAME[]
Definition gRootTree.h:15
constexpr char ANCESTORTREENAMEDESC[]
Definition gRootTree.h:21
constexpr char EVENTHEADERTREENAMEDESC[]
Definition gRootTree.h:23
constexpr char TRUEINFOTREENAMEDESC[]
Definition gRootTree.h:25
constexpr char ANCESTORTREENAME[]
Definition gRootTree.h:20
constexpr char DIGITIZEDNAMEPREFIX[]
Definition gRootTree.h:18
constexpr char DIGITIZEDTREENAMEDESC[]
Definition gRootTree.h:26