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
19#define ERR_GSTREAMERROOTTREENOTFOUND 850
20
21#define EVENTHEADERTREENAMEDESC "Event Header"
22#define RUNHEADERTREENAMEDESC "Run Header"
23#define TRUEINFOTREENAMEDESC "True Info Data"
24#define DIGITIZEDTREENAMEDESC "Digitized Data"
25
51{
52public:
54 ~GRootTree() { if (log) log->debug(NORMAL, "~GRootTree"); }
55
67 GRootTree([[maybe_unused]] const std::unique_ptr<GEventHeader>& gevent_header, std::shared_ptr<GLogger>& log);
68
77 GRootTree([[maybe_unused]] const std::unique_ptr<GRunHeader>& grun_header, std::shared_ptr<GLogger>& log);
78
90 GRootTree(const std::string& detectorName, const GTrueInfoData* gdata, std::shared_ptr<GLogger>& log);
91
103 GRootTree(const std::string& detectorName, const GDigitizedData* gdata, std::shared_ptr<GLogger>& log);
104
114 bool fillTree(const std::unique_ptr<GEventHeader>& gevent_header);
115
122 bool fillTree(const std::unique_ptr<GRunHeader>& run_header);
123
132 bool fillTree(const std::vector<const GTrueInfoData*>& trueInfoData);
133
142 bool fillTree(const std::vector<const GDigitizedData*>& digitizedData);
143
144private:
146 std::unique_ptr<TTree> root_tree;
147
149 std::map<std::string, std::vector<int>> intVarsMap;
150
152 std::map<std::string, std::vector<double>> doubleVarsMap;
153
155 std::map<std::string, std::vector<std::string>> stringVarsMap;
156
163 void registerVariable(const std::string& varname, int value);
164
171 void registerVariable(const std::string& varname, double value);
172
179 void registerVariable(const std::string& varname, const std::string& value);
180
182 std::shared_ptr<GLogger>& log;
183};
void debug(debug_type type, Args &&... args) const
Helper class encapsulating one ROOT TTree and its branch storage.
Definition gRootTree.h:51
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:54
bool fillTree(const std::unique_ptr< GEventHeader > &gevent_header)
Fill the event-header tree with one event header entry.
Definition gRootTree.cc:75
NORMAL