Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:19:58

0001 #ifndef CALORECO_CLUSTERCDFCALCULATOR_H
0002 #define CALORECO_CLUSTERCDFCALCULATOR_H
0003 
0004 #include <TFile.h>
0005 #include <TMatrixD.h>
0006 
0007 class TH1;
0008 
0009 class ClusterCDFCalculator {
0010 public:
0011     ClusterCDFCalculator() = default;
0012     virtual ~ClusterCDFCalculator();
0013 
0014     void LoadProfile(const std::string &filename);
0015     std::pair<double, double> GetCDF(const std::vector<double>& energies, double clusterenergy, int NMATRIXDIM);
0016 
0017     int  Verbosity() { return m_verbosity; }
0018     void Verbosity(const int verbose) { m_verbosity = verbose; }
0019 
0020 private:
0021     TFile* file{nullptr};
0022     TH1* henbins_photon{nullptr};
0023     TH1* henbins_pi0{nullptr};
0024 
0025     std::vector<TH1*> hD2_3x3_photon;
0026     std::vector<TH1*> hD2_5x5_photon;
0027     std::vector<TH1*> hD2_7x7_photon;
0028     std::vector<TH1*> hD2_3x3_pi0;
0029     std::vector<TH1*> hD2_5x5_pi0;
0030     std::vector<TH1*> hD2_7x7_pi0;
0031 
0032     std::vector<TMatrixD> inverseCovarianceMatrix_3x3_photon;
0033     std::vector<TMatrixD> inverseCovarianceMatrix_5x5_photon;
0034     std::vector<TMatrixD> inverseCovarianceMatrix_7x7_photon;
0035     std::vector<TMatrixD> inverseCovarianceMatrix_3x3_pi0;
0036     std::vector<TMatrixD> inverseCovarianceMatrix_5x5_pi0;
0037     std::vector<TMatrixD> inverseCovarianceMatrix_7x7_pi0;
0038 
0039     std::vector<double> meanD2_3x3_photon;
0040     std::vector<double> meanD2_5x5_photon;
0041     std::vector<double> meanD2_7x7_photon;
0042     std::vector<double> meanD2_3x3_pi0;
0043     std::vector<double> meanD2_5x5_pi0;
0044     std::vector<double> meanD2_7x7_pi0;
0045 
0046     std::vector<std::vector<TH1*>> ratioHistograms_3x3_photon;
0047     std::vector<std::vector<TH1*>> ratioHistograms_5x5_photon;
0048     std::vector<std::vector<TH1*>> ratioHistograms_7x7_photon;
0049     std::vector<std::vector<TH1*>> ratioHistograms_3x3_pi0;
0050     std::vector<std::vector<TH1*>> ratioHistograms_5x5_pi0;
0051     std::vector<std::vector<TH1*>> ratioHistograms_7x7_pi0;
0052 
0053     void LoadHistogramsAndMatrices();
0054 
0055     double CalculateJointDeviation(const std::vector<double>& energies,
0056                                     const std::vector<TH1*>& ratioHistograms,
0057                                     const TMatrixD& inverseCovarianceMatrix,
0058                                     double meanD2);
0059 
0060     virtual std::unordered_set<int> getSubsetIndices(int gridSize, int subsetSize);
0061     static double GetCDFValue(double jointDeviation, TH1* hD2);
0062 
0063     static const int NMATRIX_3x3 {9};
0064     static const int NMATRIX_5x5 {25};
0065     static const int NMATRIX_7x7 {49};
0066     static const int FULLGRIDSIZE {7};
0067 
0068     static const int NMATRIXDIM3  {3};
0069     static const int NMATRIXDIM5  {5};
0070     static const int NMATRIXDIM7  {7};
0071 
0072     const int gridSize {49};
0073     const double epsilon {1e-9};
0074 
0075     int m_verbosity{0};
0076 };
0077 
0078 #endif