GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TRuntimeObjects.h
Go to the documentation of this file.
1#ifndef RUNTIMEOBJECTS_H
2#define RUNTIMEOBJECTS_H
3
4#include <string>
5#include <map>
6#ifndef __CINT__
7#include <memory>
8#include <utility>
9#endif
10
11#include "TCutG.h"
12#include "TDirectory.h"
13#include "TList.h"
14
15#include "TFragment.h"
16#include "TUnpackedEvent.h"
17
18class TH1;
19class TH2;
20class TFile;
21class TProfile;
22
23/// Object passed to the online histograms.
24/**
25 For each event, an instance of this type will be passed to the custom histogrammer.
26 This class contains all detectors present, and all existing cuts and histograms.
27 */
28class TRuntimeObjects : public TNamed {
29public:
30/// Constructor
31#ifndef __CINT__
32 TRuntimeObjects(std::shared_ptr<const TFragment> frag, TList* objects, TList* gates, std::vector<TFile*>& cut_files,
33 TDirectory* directory = nullptr, const char* name = "default");
34#endif
35 TRuntimeObjects(TList* objects, TList* gates, std::vector<TFile*>& cut_files, TDirectory* directory = nullptr,
36 const char* name = "default");
37
38#ifndef __CINT__
39 /// Returns a pointer to the detector of type T
40 template <typename T>
41 std::shared_ptr<T> GetDetector()
42 {
43 return fDetectors->GetDetector<T>();
44 }
45
46 std::shared_ptr<const TFragment> GetFragment() { return fFrag; }
47#endif
48
49 TCutG* GetCut(const std::string& name);
50
51 TList& GetObjects();
52 TList& GetGates();
53
54 TList* GetObjectsPtr() { return fObjects; }
55 TList* GetGatesPtr() { return fGates; }
56
57 TH1* FillHistogram(const char* name, int bins, double low, double high, double value, double weight = 1);
58 TH2* FillHistogram(const char* name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow,
59 double Yhigh, double Yvalue, double weight = 1);
60 TProfile* FillProfileHist(const char* name, int Xbins, double Xlow, double Xhigh, double Xvalue, double Yvalue);
61 TH2* FillHistogramSym(const char* name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow,
62 double Yhigh, double Yvalue);
63
64 TH1* FillHistogram(const std::string& name, int bins, double low, double high, double value, double weight = 1)
65 {
66 return FillHistogram(name.c_str(), bins, low, high, value, weight);
67 }
68 TH2* FillHistogram(const std::string& name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins,
69 double Ylow, double Yhigh, double Yvalue, double weight = 1)
70 {
71 return FillHistogram(name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Ybins, Ylow, Yhigh, Yvalue, weight);
72 }
73 TProfile* FillProfileHist(const std::string& name, int Xbins, double Xlow, double Xhigh, double Xvalue,
74 double Yvalue)
75 {
76 return FillProfileHist(name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Yvalue);
77 }
78 TH2* FillHistogramSym(const std::string& name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins,
79 double Ylow, double Yhigh, double Yvalue)
80 {
81 return FillHistogramSym(name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Ybins, Ylow, Yhigh, Yvalue);
82 }
83 //---------------------------------------------------------------------
84 TDirectory* FillHistogram(const char* dirname, const char* name, int bins, double low, double high, double value,
85 double weight = 1);
86 TDirectory* FillHistogram(const char* dirname, const char* name, int Xbins, double Xlow, double Xhigh, double Xvalue,
87 int Ybins, double Ylow, double Yhigh, double Yvalue, double weight = 1);
88 TDirectory* FillProfileHist(const char* dirname, const char* name, int Xbins, double Xlow, double Xhigh,
89 double Xvalue, double Yvalue);
90 TDirectory* FillHistogramSym(const char* dirname, const char* name, int Xbins, double Xlow, double Xhigh,
91 double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue);
92
93 TDirectory* FillHistogram(const std::string& dirname, const std::string& name, int bins, double low, double high,
94 double value, double weight = 1)
95 {
96 return FillHistogram(dirname.c_str(), name.c_str(), bins, low, high, value, weight);
97 }
98 TDirectory* FillHistogram(const std::string& dirname, const std::string& name, int Xbins, double Xlow, double Xhigh,
99 double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue, double weight = 1)
100 {
101 return FillHistogram(dirname.c_str(), name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Ybins, Ylow, Yhigh, Yvalue,
102 weight);
103 }
104 TDirectory* FillProfileHist(const std::string& dirname, const std::string& name, int Xbins, double Xlow,
105 double Xhigh, double Xvalue, double Yvalue)
106 {
107 return FillProfileHist(dirname.c_str(), name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Yvalue);
108 }
109 TDirectory* FillHistogramSym(const std::string& dirname, const std::string& name, int Xbins, double Xlow,
110 double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue)
111 {
112 return FillHistogramSym(dirname.c_str(), name.c_str(), Xbins, Xlow, Xhigh, Xvalue, Ybins, Ylow, Yhigh, Yvalue);
113 }
114
115 double GetVariable(const char* name) const;
116
117 static TRuntimeObjects* Get(const std::string& name = "default")
118 {
119 if(fRuntimeMap.count(name) != 0) {
120 return fRuntimeMap.at(name);
121 }
122 return nullptr;
123 }
124
125#ifndef __CINT__
126 void SetFragment(std::shared_ptr<const TFragment> frag)
127 {
128 fFrag = std::move(frag);
129 }
130 void SetDetectors(std::shared_ptr<TUnpackedEvent> det) { fDetectors = std::move(det); }
131#endif
132
133 void SetDirectory(TDirectory* dir)
134 {
135 fDirectory = dir;
136 }
137 TDirectory* GetDirectory() const { return fDirectory; }
138
139private:
140 static std::map<std::string, TRuntimeObjects*> fRuntimeMap;
141 TDirectory* FindDirectory(const char*);
142#ifndef __CINT__
143 std::shared_ptr<TUnpackedEvent> fDetectors;
144 std::shared_ptr<const TFragment> fFrag;
145#endif
146 TList* fObjects{nullptr};
147 TList* fGates{nullptr};
148 std::vector<TFile*>& fCut_files;
149
150 TDirectory* fDirectory{nullptr};
151
152 /// \cond CLASSIMP
153 ClassDefOverride(TRuntimeObjects, 0) // NOLINT(readability-else-after-return)
154 /// \endcond
155};
156
157#endif /* _RUNTIMEOBJECTS_H_ */
Object passed to the online histograms.
void SetFragment(std::shared_ptr< const TFragment > frag)
std::vector< TFile * > & fCut_files
TDirectory * FillProfileHist(const std::string &dirname, const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, double Yvalue)
TDirectory * FillHistogram(const std::string &dirname, const std::string &name, int bins, double low, double high, double value, double weight=1)
TCutG * GetCut(const std::string &name)
static TRuntimeObjects * Get(const std::string &name="default")
TDirectory * FindDirectory(const char *)
TH2 * FillHistogram(const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue, double weight=1)
TRuntimeObjects(std::shared_ptr< const TFragment > frag, TList *objects, TList *gates, std::vector< TFile * > &cut_files, TDirectory *directory=nullptr, const char *name="default")
Constructor.
TH2 * FillHistogramSym(const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue)
double GetVariable(const char *name) const
TDirectory * FillHistogram(const std::string &dirname, const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue, double weight=1)
TList * GetObjectsPtr()
TDirectory * fDirectory
TDirectory * GetDirectory() const
std::shared_ptr< const TFragment > fFrag
static std::map< std::string, TRuntimeObjects * > fRuntimeMap
TDirectory * FillHistogramSym(const std::string &dirname, const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue)
std::shared_ptr< const TFragment > GetFragment()
TProfile * FillProfileHist(const std::string &name, int Xbins, double Xlow, double Xhigh, double Xvalue, double Yvalue)
void SetDetectors(std::shared_ptr< TUnpackedEvent > det)
void SetDirectory(TDirectory *dir)
std::shared_ptr< TUnpackedEvent > fDetectors
TH1 * FillHistogram(const char *name, int bins, double low, double high, double value, double weight=1)
std::shared_ptr< T > GetDetector()
Returns a pointer to the detector of type T.
TProfile * FillProfileHist(const char *name, int Xbins, double Xlow, double Xhigh, double Xvalue, double Yvalue)
TH1 * FillHistogram(const std::string &name, int bins, double low, double high, double value, double weight=1)
TList * GetGatesPtr()
TH2 * FillHistogramSym(const char *name, int Xbins, double Xlow, double Xhigh, double Xvalue, int Ybins, double Ylow, double Yhigh, double Yvalue)