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#define ANCESTORTREENAME "ancestors"
20#define ANCESTORTREENAMEDESC "Geant4 Ancestors"
21
22#define ERR_GSTREAMERROOTTREENOTFOUND 850
23
24#define EVENTHEADERTREENAMEDESC "Event Header"
25#define RUNHEADERTREENAMEDESC "Run Header"
26#define TRUEINFOTREENAMEDESC "True Info Data"
27#define DIGITIZEDTREENAMEDESC "Digitized Data"
28
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};
void debug(debug_type type, Args &&... args) const
Helper class encapsulating one ROOT TTree and its branch storage.
Definition gRootTree.h:56
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:28
std::vector< GAncestorData > GAncestorBank
std::vector< GGeneratedParticleData > GGeneratedParticleBank
NORMAL