Warning, file /include/root/ROOT/RDF/HistoModels.hxx was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOT_RDFHISTOMODELS
0012 #define ROOT_RDFHISTOMODELS
0013
0014 #include <TString.h>
0015 #include <memory>
0016
0017 class TH1D;
0018 class TH2D;
0019 class TH3D;
0020 template <typename T>
0021 class THnT;
0022 using THnD = THnT<double>;
0023 template <typename T>
0024 class THnSparseT;
0025 class TArrayD;
0026 using THnSparseD = THnSparseT<TArrayD>;
0027 class TProfile;
0028 class TProfile2D;
0029
0030 namespace ROOT {
0031
0032 namespace RDF {
0033
0034 struct TH1DModel {
0035 TString fName;
0036 TString fTitle;
0037 int fNbinsX = 128;
0038 double fXLow = 0.;
0039 double fXUp = 64.;
0040 std::vector<double> fBinXEdges;
0041
0042 TH1DModel() = default;
0043 TH1DModel(const TH1DModel &) = default;
0044 ~TH1DModel();
0045 TH1DModel(const ::TH1D &h);
0046 TH1DModel(const char *name, const char *title, int nbinsx, double xlow, double xup);
0047 TH1DModel(const char *name, const char *title, int nbinsx, const float *xbins);
0048 TH1DModel(const char *name, const char *title, int nbinsx, const double *xbins);
0049 std::shared_ptr<::TH1D> GetHistogram() const;
0050 };
0051
0052 struct TH2DModel {
0053 TString fName;
0054 TString fTitle;
0055 int fNbinsX = 128;
0056 double fXLow = 0.;
0057 double fXUp = 64.;
0058 int fNbinsY = 128;
0059 double fYLow = 0.;
0060 double fYUp = 64.;
0061 std::vector<double> fBinXEdges;
0062 std::vector<double> fBinYEdges;
0063
0064 TH2DModel() = default;
0065 TH2DModel(const TH2DModel &) = default;
0066 ~TH2DModel();
0067 TH2DModel(const ::TH2D &h);
0068 TH2DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy, double ylow,
0069 double yup);
0070 TH2DModel(const char *name, const char *title, int nbinsx, const double *xbins, int nbinsy, double ylow, double yup);
0071 TH2DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy, const double *ybins);
0072 TH2DModel(const char *name, const char *title, int nbinsx, const double *xbins, int nbinsy, const double *ybins);
0073 TH2DModel(const char *name, const char *title, int nbinsx, const float *xbins, int nbinsy, const float *ybins);
0074 std::shared_ptr<::TH2D> GetHistogram() const;
0075 };
0076
0077 struct TH3DModel {
0078 TString fName;
0079 TString fTitle;
0080 int fNbinsX = 128;
0081 double fXLow = 0.;
0082 double fXUp = 64.;
0083 int fNbinsY = 128;
0084 double fYLow = 0.;
0085 double fYUp = 64.;
0086 int fNbinsZ = 128;
0087 double fZLow = 0.;
0088 double fZUp = 64.;
0089 std::vector<double> fBinXEdges;
0090 std::vector<double> fBinYEdges;
0091 std::vector<double> fBinZEdges;
0092
0093 TH3DModel() = default;
0094 TH3DModel(const TH3DModel &) = default;
0095 ~TH3DModel();
0096 TH3DModel(const ::TH3D &h);
0097 TH3DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy, double ylow,
0098 double yup, int nbinsz, double zlow, double zup);
0099 TH3DModel(const char *name, const char *title, int nbinsx, const float *xbins, int nbinsy, const float *ybins,
0100 int nbinsz, const float *zbins);
0101 TH3DModel(const char *name, const char *title, int nbinsx, const double *xbins, int nbinsy, const double *ybins,
0102 int nbinsz, const double *zbins);
0103 std::shared_ptr<::TH3D> GetHistogram() const;
0104 };
0105
0106 struct THnDModel {
0107 TString fName;
0108 TString fTitle;
0109 int fDim;
0110 std::vector<int> fNbins;
0111 std::vector<double> fXmin;
0112 std::vector<double> fXmax;
0113 std::vector<std::vector<double>> fBinEdges;
0114
0115 THnDModel() = default;
0116 THnDModel(const THnDModel &) = default;
0117 ~THnDModel();
0118 THnDModel(const ::THnD &h);
0119 THnDModel(const char *name, const char *title, int dim, const int *nbins, const double *xmin, const double *xmax);
0120
0121 THnDModel(const char *name, const char *title, int dim, const std::vector<int> &nbins,
0122 const std::vector<double> &xmin, const std::vector<double> &xmax);
0123 THnDModel(const char *name, const char *title, int dim, const int *nbins,
0124 const std::vector<std::vector<double>> &xbins);
0125 THnDModel(const char *name, const char *title, int dim, const std::vector<int> &nbins,
0126 const std::vector<std::vector<double>> &xbins);
0127 std::shared_ptr<::THnD> GetHistogram() const;
0128 };
0129
0130 struct THnSparseDModel {
0131 TString fName;
0132 TString fTitle;
0133 int fDim;
0134 std::vector<int> fNbins;
0135 std::vector<double> fXmin;
0136 std::vector<double> fXmax;
0137 std::vector<std::vector<double>> fBinEdges;
0138 Int_t fChunkSize;
0139
0140 THnSparseDModel() = default;
0141 THnSparseDModel(const THnSparseDModel &) = default;
0142 ~THnSparseDModel();
0143 THnSparseDModel(const ::THnSparseD &h);
0144 THnSparseDModel(const char *name, const char *title, int dim, const int *nbins, const double *xmin,
0145 const double *xmax, Int_t chunksize = 1024 * 16);
0146
0147 THnSparseDModel(const char *name, const char *title, int dim, const std::vector<int> &nbins,
0148 const std::vector<double> &xmin, const std::vector<double> &xmax, Int_t chunksize = 1024 * 16);
0149 THnSparseDModel(const char *name, const char *title, int dim, const int *nbins,
0150 const std::vector<std::vector<double>> &xbins, Int_t chunksize = 1024 * 16);
0151 THnSparseDModel(const char *name, const char *title, int dim, const std::vector<int> &nbins,
0152 const std::vector<std::vector<double>> &xbins, Int_t chunksize = 1024 * 16);
0153 std::shared_ptr<::THnSparseD> GetHistogram() const;
0154 };
0155
0156 struct TProfile1DModel {
0157 TString fName;
0158 TString fTitle;
0159 int fNbinsX = 128;
0160 double fXLow = 0.;
0161 double fXUp = 64.;
0162 double fYLow = 0.;
0163 double fYUp = 0.;
0164 TString fOption;
0165 std::vector<double> fBinXEdges;
0166
0167 TProfile1DModel() = default;
0168 TProfile1DModel(const TProfile1DModel &) = default;
0169 ~TProfile1DModel();
0170 TProfile1DModel(const ::TProfile &h);
0171 TProfile1DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, const char *option = "");
0172 TProfile1DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, double ylow, double yup,
0173 const char *option = "");
0174 TProfile1DModel(const char *name, const char *title, int nbinsx, const float *xbins, const char *option = "");
0175 TProfile1DModel(const char *name, const char *title, int nbinsx, const double *xbins, const char *option = "");
0176 TProfile1DModel(const char *name, const char *title, int nbinsx, const double *xbins, double ylow, double yup,
0177 const char *option = "");
0178 std::shared_ptr<::TProfile> GetProfile() const;
0179 };
0180
0181 struct TProfile2DModel {
0182 TString fName;
0183 TString fTitle;
0184 int fNbinsX = 128;
0185 double fXLow = 0.;
0186 double fXUp = 64.;
0187 int fNbinsY = 128;
0188 double fYLow = 0.;
0189 double fYUp = 64.;
0190 double fZLow = 0.;
0191 double fZUp = 0.;
0192 TString fOption;
0193 std::vector<double> fBinXEdges;
0194 std::vector<double> fBinYEdges;
0195
0196 TProfile2DModel() = default;
0197 TProfile2DModel(const TProfile2DModel &) = default;
0198 ~TProfile2DModel();
0199 TProfile2DModel(const ::TProfile2D &h);
0200 TProfile2DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy, double ylow,
0201 double yup, const char *option = "");
0202 TProfile2DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy, double ylow,
0203 double yup, double zlow, double zup, const char *option = "");
0204 TProfile2DModel(const char *name, const char *title, int nbinsx, const double *xbins, int nbinsy, double ylow,
0205 double yup, const char *option = "");
0206 TProfile2DModel(const char *name, const char *title, int nbinsx, double xlow, double xup, int nbinsy,
0207 const double *ybins, const char *option = "");
0208 TProfile2DModel(const char *name, const char *title, int nbinsx, const double *xbins, int nbinsy,
0209 const double *ybins, const char *option = "");
0210 std::shared_ptr<::TProfile2D> GetProfile() const;
0211 };
0212
0213 }
0214
0215 }
0216
0217 #endif