RAPIDO
Repeatable Analysis Programming for Interpretability, Durability, and Organization
Loading...
Searching...
No Matches
histflow.h
1#ifndef HISTOS_H
2#define HISTOS_H
3
4#include <functional>
5#include <map>
6
7#include "cutflow.h"
8#include "utilities.h"
9
14class Histflow : public Cutflow
15{
16protected:
18 std::map<std::string, std::vector<std::function<void(double)>>> fill_schedule;
20 std::map<TString, std::function<void()>> hist_writers;
21
28 bool recursiveEvaluate(Cut* cut) override;
29
36 template<typename THist>
37 THist* bookHist(std::string target_cut_name, THist* hist);
38
39public:
45 Histflow(std::string new_name);
46
53 Histflow(std::string new_name, Cut* new_root);
54
60
69 template<typename THist1D>
70 void bookHist1D(std::string target_cut_name, THist1D* hist, std::function<bool()> eval_lambda,
71 std::function<double()> fill_lambda);
72
81 template<typename THist1D>
82 void bookHist1D(Cut* target_cut, THist1D* hist, std::function<bool()> eval_lambda,
83 std::function<double()> fill_lambda);
84
92 template<typename THist1D>
93 void bookHist1D(std::string target_cut_name, THist1D* hist, std::function<double()> fill_lambda);
94
102 template<typename THist1D>
103 void bookHist1D(Cut* target_cut, THist1D* hist, std::function<double()> fill_lambda);
104
113 template<typename THist2D>
114 void bookHist2D(std::string target_cut_name, THist2D* hist,
115 std::function<bool()> eval_lambda,
116 std::function<std::pair<double, double>()> fill_lambda);
117
126 template<typename THist2D>
127 void bookHist2D(Cut* target_cut, THist2D* hist,
128 std::function<bool()> eval_lambda,
129 std::function<std::pair<double, double>()> fill_lambda);
130
138 template<typename THist2D>
139 void bookHist2D(std::string target_cut_name, THist2D* hist,
140 std::function<std::pair<double, double>()> fill_lambda);
141
149 template<typename THist2D>
150 void bookHist2D(Cut* target_cut, THist2D* hist, std::function<std::pair<double, double>()> fill_lambda);
151
160 template<typename THist3D>
161 void bookHist3D(std::string target_cut_name, THist3D* hist,
162 std::function<bool()> eval_lambda,
163 std::function<std::tuple<double, double, double>()> fill_lambda);
164
173 template<typename THist3D>
174 void bookHist3D(Cut* target_cut, THist3D* hist,
175 std::function<bool()> eval_lambda,
176 std::function<std::tuple<double, double, double>()> fill_lambda);
177
185 template<typename THist3D>
186 void bookHist3D(std::string target_cut_name, THist3D* hist,
187 std::function<std::tuple<double, double, double>()> fill_lambda);
188
196 template<typename THist3D>
197 void bookHist3D(Cut* target_cut, THist3D* hist,
198 std::function<std::tuple<double, double, double>()> fill_lambda);
199
205 void writeHists(TFile* tfile);
206};
207
208#include "histflow.icc"
209
210#endif
Definition cutflow.h:25
Definition cutflow.h:151
Definition histflow.h:15
void bookHist3D(std::string target_cut_name, THist3D *hist, std::function< bool()> eval_lambda, std::function< std::tuple< double, double, double >()> fill_lambda)
void writeHists(TFile *tfile)
THist * bookHist(std::string target_cut_name, THist *hist)
bool recursiveEvaluate(Cut *cut) override
Histflow(std::string new_name)
void bookHist3D(Cut *target_cut, THist3D *hist, std::function< std::tuple< double, double, double >()> fill_lambda)
void bookHist3D(Cut *target_cut, THist3D *hist, std::function< bool()> eval_lambda, std::function< std::tuple< double, double, double >()> fill_lambda)
void bookHist2D(std::string target_cut_name, THist2D *hist, std::function< bool()> eval_lambda, std::function< std::pair< double, double >()> fill_lambda)
void bookHist1D(std::string target_cut_name, THist1D *hist, std::function< double()> fill_lambda)
void bookHist2D(Cut *target_cut, THist2D *hist, std::function< bool()> eval_lambda, std::function< std::pair< double, double >()> fill_lambda)
void bookHist2D(Cut *target_cut, THist2D *hist, std::function< std::pair< double, double >()> fill_lambda)
void bookHist1D(Cut *target_cut, THist1D *hist, std::function< bool()> eval_lambda, std::function< double()> fill_lambda)
Histflow(std::string new_name, Cut *new_root)
std::map< TString, std::function< void()> > hist_writers
Definition histflow.h:20
void bookHist1D(Cut *target_cut, THist1D *hist, std::function< double()> fill_lambda)
void bookHist2D(std::string target_cut_name, THist2D *hist, std::function< std::pair< double, double >()> fill_lambda)
std::map< std::string, std::vector< std::function< void(double)> > > fill_schedule
Definition histflow.h:18
void bookHist1D(std::string target_cut_name, THist1D *hist, std::function< bool()> eval_lambda, std::function< double()> fill_lambda)
void bookHist3D(std::string target_cut_name, THist3D *hist, std::function< std::tuple< double, double, double >()> fill_lambda)