ROOTTools
 
Loading...
Searching...
No Matches
ThrObj.hpp
Go to the documentation of this file.
1
11#ifndef ROOT_TOOLS_THR_OBJ_HPP
12#define ROOT_TOOLS_THR_OBJ_HPP
13
14#include <vector>
15#include <array>
16#include <string>
17
18#include "TFile.h"
19#include "TH1.h"
20#include "TH2.h"
21#include "TH3.h"
22
23#include "ROOT/TThreadedObject.hxx"
24
26namespace ROOTTools
27{
29 namespace ThrObjHolder
30 {
33 void Write();
37 void Write(const std::string& outputFileName);
38
39 // other functions and variables below are not intended for the user
40 // and are called/accessed automaticaly
41
43 std::shared_ptr<TH1F> AddHistogram(ROOT::TThreadedObject<TH1F> *hist,
44 const std::string& directory);
46 std::shared_ptr<TH2F> AddHistogram(ROOT::TThreadedObject<TH2F> *hist,
47 const std::string& directory);
49 std::shared_ptr<TH3F> AddHistogram(ROOT::TThreadedObject<TH3F> *hist,
50 const std::string& directory);
52 std::shared_ptr<TH1D> AddHistogram(ROOT::TThreadedObject<TH1D> *hist,
53 const std::string& directory);
55 std::shared_ptr<TH2D> AddHistogram(ROOT::TThreadedObject<TH2D> *hist,
56 const std::string& directory);
58 std::shared_ptr<TH3D> AddHistogram(ROOT::TThreadedObject<TH3D> *hist,
59 const std::string& directory);
61 std::shared_ptr<TH1L> AddHistogram(ROOT::TThreadedObject<TH1L> *hist,
62 const std::string& directory);
64 std::shared_ptr<TH2L> AddHistogram(ROOT::TThreadedObject<TH2L> *hist,
65 const std::string& directory);
67 std::shared_ptr<TH3L> AddHistogram(ROOT::TThreadedObject<TH3L> *hist,
68 const std::string& directory);
70 void Clear();
72 void AddTFileDirectory(const std::string& directory, const int thrObjIndex);
73
75 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH1F>>> containerTH1F;
77 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH2F>>> containerTH2F;
79 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH3F>>> containerTH3F;
81 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH1D>>> containerTH1D;
83 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH2D>>> containerTH2D;
85 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH3D>>> containerTH3D;
87 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH1L>>> containerTH1L;
89 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH2L>>> containerTH2L;
91 std::vector<std::unique_ptr<ROOT::TThreadedObject<TH3L>>> containerTH3L;
92
94 std::vector<std::string> containerTFileDir;
95 // indices of the TFile directories to the histograms
96 std::array<std::vector<int>, 9> containerTFileDirIndex;
97 };
98
106 template<typename T>
107 class ThrObj
108 {
109 public:
119 ThrObj(const std::string& name, const std::string& title,
120 const int xNBins, const double xLow, const double xMax,
121 const std::string& fileDirectory = "");
134 ThrObj(const std::string& name, const std::string& title,
135 const int xNBins, const double xLow, const double xMax,
136 const int yNBins, const double yMin, const double yMax,
137 const std::string& fileDirectory = "");
153 ThrObj(const std::string& name, const std::string& title,
154 const int xNBins, const double xLow, const double xMax,
155 const int yNBins, const double yMin, const double yMax,
156 const int zNBins, const double zMin, const double zMax,
157 const std::string& fileDirectory = "");
162 std::shared_ptr<T> Get();
163 protected:
165 std::shared_ptr<T> objPtr;
166 };
167};
168
169#endif /* ROOT_TOOLS_THR_OBJ_HPP */
std::shared_ptr< T > Get()
Returns shared pointer to the object.
Definition ThrObj.cpp:262
ThrObj(const std::string &name, const std::string &title, const int xNBins, const double xLow, const double xMax, const std::string &fileDirectory="")
Constructor for TH1F, TH1D, and TH1L types.
Definition ThrObj.cpp:226
std::shared_ptr< T > objPtr
Pointer to the TThreadedObject.
Definition ThrObj.hpp:165
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH1L > > > containerTH1L
container for TH1L histograms
Definition ThrObj.hpp:87
void Write()
Call this function to merge and write histograms in the current open TDirectory (i....
Definition ThrObj.cpp:141
void Clear()
Not intended for user. Not intended for user. Clears containers with histogram after histograms were ...
Definition ThrObj.cpp:99
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH2L > > > containerTH2L
container for TH2L histograms
Definition ThrObj.hpp:89
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH2D > > > containerTH2D
container for TH2D histograms
Definition ThrObj.hpp:83
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH1F > > > containerTH1F
container for TH1F histograms
Definition ThrObj.hpp:75
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH2F > > > containerTH2F
container for TH2F histograms
Definition ThrObj.hpp:77
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH3F > > > containerTH3F
container for TH3F histograms
Definition ThrObj.hpp:79
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH3D > > > containerTH3D
container for TH3D histograms
Definition ThrObj.hpp:85
std::vector< std::string > containerTFileDir
containers of TFile directory names
Definition ThrObj.hpp:94
void AddTFileDirectory(const std::string &directory, const int thrObjIndex)
Not intended for user. Adds index of ThrObj to the directory index. This function is called in AddHis...
Definition ThrObj.cpp:120
std::array< std::vector< int >, 9 > containerTFileDirIndex
Definition ThrObj.hpp:96
std::shared_ptr< TH1F > AddHistogram(ROOT::TThreadedObject< TH1F > *hist, const std::string &directory)
Not intended for user. Adds TH1F histogram to the corresponding container; this function is called in...
Definition ThrObj.cpp:27
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH1D > > > containerTH1D
container for TH1D histograms
Definition ThrObj.hpp:81
std::vector< std::unique_ptr< ROOT::TThreadedObject< TH3L > > > containerTH3L
container for TH3L histograms
Definition ThrObj.hpp:91
container that stores histograms of ThrObj class