Back to home page

EIC code displayed by LXR

 
 

    


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 // Author: Enrico Guiraud, Danilo Piparo CERN  09/2017
0002 
0003 /*************************************************************************
0004  * Copyright (C) 1995-2017, Rene Brun and Fons Rademakers.               *
0005  * All rights reserved.                                                  *
0006  *                                                                       *
0007  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0008  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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    // alternate version with std::vector to allow more convenient initialization from PyRoot
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    // alternate version with std::vector to allow more convenient initialization from PyRoot
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 } // ns RDF
0214 
0215 } // ns ROOT
0216 
0217 #endif // ROOT_RDFHISTOMODELS