1 #ifndef BOOK_FOR_ROOT_HISTOGRAMS
2 #define BOOK_FOR_ROOT_HISTOGRAMS
7 #include "TDirectory.h"
13 #include <boost/regex.hpp>
14 #include <boost/iterator/filter_iterator.hpp>
21 typedef std::map<std::string, TH1*>
book_t;
46 typedef boost::filter_iterator<match_name,book_t::iterator>
iterator;
47 typedef boost::filter_iterator<match_name,book_t::const_iterator>
const_iterator;
67 if( current ==
book_.end() )
68 book(name,
new TH1D(name.c_str(),
"", NbinsX, Xlow, Xup))->Fill(X,W);
69 else current->second->Fill(X,W);
79 if( current ==
book_.end() )
80 static_cast<TProfile*>(
book(name,
new TProfile(name.c_str(),
"", NbinsX, Xlow, Xup)))->
Fill(X,Y,W);
81 else static_cast<TProfile*
>(current->second)->
Fill(X,Y,W);
86 uint_t NbinsY,
double_t Ylow,
double_t Yup,
double_t W=1 ) {
fill(X,Y,
std::string(name),NbinsX,Xlow,Xup,NbinsY,Ylow,Yup,W);}
93 if( current ==
book_.end() )
94 static_cast<TH2*>(
book(name,
new TH2D(name.c_str(),
"", NbinsX, Xlow, Xup, NbinsY, Ylow, Yup)))->
Fill(X,Y,W);
95 else static_cast<TH2*
>(current->second)->
Fill(X,Y,W);
101 uint_t NbinsZ,
double_t Zlow,
double_t Zup,
double_t W=1 ) {
fill(X,Y,Z,
std::string(name),NbinsX,Xlow,Xup,NbinsY,Ylow,Yup,NbinsZ,Zlow,Zup);}
109 if( current ==
book_.end() )
110 static_cast<TH3*>(
book(name,
new TH3D(name.c_str(),
"", NbinsX, Xlow, Xup, NbinsY, Ylow, Yup, NbinsZ, Zlow, Zup)))->
Fill(X,Y,Z,W);
111 else static_cast<TH3*
>(current->second)->
Fill(X,Y,Z,W);
const double Z[kNumberCalorimeter]
const_iterator end() const
static const HistoName names[]
const_iterator end(string_t re=".*") const
void fill(double_t X, const poly< std::string > &names, uint_t NbinsX, double_t Xlow, double_t Xup, double_t W=1)
std::pair< const_iterator, const_iterator > filter_range(string_t re=".*") const
const TH1 * operator[](string_t name) const
void fill(double_t X, double_t Y, double_t Z, const char *name, uint_t NbinsX, double_t Xlow, double_t Xup, uint_t NbinsY, double_t Ylow, double_t Yup, uint_t NbinsZ, double_t Zlow, double_t Zup, double_t W=1)
std::pair< iterator, iterator > filter_range(string_t re=".*")
const std::string string_t
void fill(double_t X, double_t Y, const char *name, uint_t NbinsX, double_t Xlow, double_t Xup, uint_t NbinsY, double_t Ylow, double_t Yup, double_t W=1)
const_iterator begin() const
const_iterator begin(string_t re=".*") const
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
void fill(double_t X, double_t Y, const char *name, uint_t NbinsX, double_t Xlow, double_t Xup, double_t W=1)
std::map< std::string, TH1 * > book_t
void fill(double_t X, double_t Y, const poly< std::string > &names, uint_t NbinsX, double_t Xlow, double_t Xup, uint_t NbinsY, double_t Ylow, double_t Yup, double_t W=1)
iterator begin(string_t re=".*")
Container::value_type value_type
void fill(double_t X, double_t Y, double_t Z, const poly< std::string > &names, uint_t NbinsX, double_t Xlow, double_t Xup, uint_t NbinsY, double_t Ylow, double_t Yup, uint_t NbinsZ, double_t Zlow, double_t Zup, double_t W=1)
TH1 *& operator[](string_t name)
void fill(double_t X, const char *name, uint_t NbinsX, double_t Xlow, double_t Xup, double_t W=1)
void fill(double_t X, double_t Y, const poly< std::string > &names, uint_t NbinsX, double_t Xlow, double_t Xup, double_t W=1)
boost::filter_iterator< match_name, book_t::const_iterator > const_iterator
bool operator()(const book_t::const_iterator::value_type &p)
const unsigned long uint_t
iterator find(string_t name, string_t re=".*")
void erase(string_t name)
boost::filter_iterator< match_name, book_t::iterator > iterator
iterator end(string_t re=".*")
TH1 * book(string_t name, TH1 *const hist)
const_iterator find(string_t name, string_t re=".*") const