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
12
14
15#define HEADERTREENAME "event_header"
16#define TRUEINFONAMEPREFIX "true_info_"
17#define DIGITIZEDNAMEPREFIX "digitized_"
18
19#define ERR_GSTREAMERROOTTREENOTFOUND 850
20
21#define HEADERTREENAMEDESC "Event Header"
22#define TRUEINFOTREENAMEDESC "True Info Data"
23#define DIGITIZEDTREENAMEDESC "Digitized Data"
24
48{
49public:
51 ~GRootTree() { if (log) log->debug(NORMAL, "~GRootTree"); }
52
64 GRootTree([[maybe_unused]] const std::unique_ptr<GEventHeader>& gevent_header, std::shared_ptr<GLogger>& log);
65
77 GRootTree(const std::string& detectorName, const GTrueInfoData* gdata, std::shared_ptr<GLogger>& log);
78
90 GRootTree(const std::string& detectorName, const GDigitizedData* gdata, std::shared_ptr<GLogger>& log);
91
100 bool fillTree(const std::unique_ptr<GEventHeader>& gevent_header);
101
112 bool fillTree(const std::vector<const GTrueInfoData*>& trueInfoData);
113
124 bool fillTree(const std::vector<const GDigitizedData*>& digitizedData);
125
126private:
128 std::unique_ptr<TTree> root_tree;
129
130 // variable maps
131 // index is hit number
132 std::map<std::string, std::vector<int>> intVarsMap;
133 std::map<std::string, std::vector<double>> doubleVarsMap;
134 std::map<std::string, std::vector<std::string>> stringVarsMap;
135
141 void registerVariable(const std::string& varname, int value);
142
148 void registerVariable(const std::string& varname, double value);
149
155 void registerVariable(const std::string& varname, const std::string& value);
156
158 std::shared_ptr<GLogger>& log;
159};
void debug(debug_type type, Args &&... args) const
Adapter that owns a ROOT TTree and provides a type-safe fill interface for gstreamer data.
Definition gRootTree.h:48
GRootTree(const std::unique_ptr< GEventHeader > &gevent_header, std::shared_ptr< GLogger > &log)
Construct a header tree and register header branches.
Definition gRootTree.cc:8
~GRootTree()
Destructor prints a debug trace when a logger is present.
Definition gRootTree.h:51
bool fillTree(const std::unique_ptr< GEventHeader > &gevent_header)
Fill the header tree for one event.
Definition gRootTree.cc:61
NORMAL
Shared constants and error codes for the gstreamer module.