Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:33

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 private:
0018     TFile* file{nullptr};
0019     TH1* henbins_photon{nullptr};
0020     TH1* henbins_pi0{nullptr};
0021 
0022     std::vector<TH1*> hD2_3x3_photon;
0023     std::vector<TH1*> hD2_5x5_photon;
0024     std::vector<TH1*> hD2_7x7_photon;
0025     std::vector<TH1*> hD2_3x3_pi0;
0026     std::vector<TH1*> hD2_5x5_pi0;
0027     std::vector<TH1*> hD2_7x7_pi0;
0028 
0029     std::vector<TMatrixD> inverseCovarianceMatrix_3x3_photon;
0030     std::vector<TMatrixD> inverseCovarianceMatrix_5x5_photon;
0031     std::vector<TMatrixD> inverseCovarianceMatrix_7x7_photon;
0032     std::vector<TMatrixD> inverseCovarianceMatrix_3x3_pi0;
0033     std::vector<TMatrixD> inverseCovarianceMatrix_5x5_pi0;
0034     std::vector<TMatrixD> inverseCovarianceMatrix_7x7_pi0;
0035 
0036     std::vector<double> meanD2_3x3_photon;
0037     std::vector<double> meanD2_5x5_photon;
0038     std::vector<double> meanD2_7x7_photon;
0039     std::vector<double> meanD2_3x3_pi0;
0040     std::vector<double> meanD2_5x5_pi0;
0041     std::vector<double> meanD2_7x7_pi0;
0042 
0043     std::vector<std::vector<TH1*>> ratioHistograms_3x3_photon;
0044     std::vector<std::vector<TH1*>> ratioHistograms_5x5_photon;
0045     std::vector<std::vector<TH1*>> ratioHistograms_7x7_photon;
0046     std::vector<std::vector<TH1*>> ratioHistograms_3x3_pi0;
0047     std::vector<std::vector<TH1*>> ratioHistograms_5x5_pi0;
0048     std::vector<std::vector<TH1*>> ratioHistograms_7x7_pi0;
0049 
0050     void LoadHistogramsAndMatrices();
0051 
0052     double CalculateJointDeviation(const std::vector<double>& energies,
0053                                     const std::vector<TH1*>& ratioHistograms,
0054                                     const TMatrixD& inverseCovarianceMatrix,
0055                                     double meanD2);
0056 
0057     virtual std::unordered_set<int> getSubsetIndices(int gridSize, int subsetSize);
0058     static double GetCDFValue(double jointDeviation, TH1* hD2);
0059 
0060     static const int NMATRIX_3x3 {9};
0061     static const int NMATRIX_5x5 {25};
0062     static const int NMATRIX_7x7 {49};
0063     static const int FULLGRIDSIZE {7};
0064 
0065     static const int NMATRIXDIM3  {3};
0066     static const int NMATRIXDIM5  {5};
0067     static const int NMATRIXDIM7  {7};
0068 
0069     const int gridSize {49};
0070     const double epsilon {1e-9};
0071 };
0072 
0073 #endif