00001 #include <iostream>
00002 #include "TSystem.h"
00003 #include "TH1F.h"
00004 #include "TH2F.h"
00005 #include "TFile.h"
00006 #include "LoadPDF.h"
00007 #include <fstream>
00008 #include <cassert>
00009
00010 using std::cout;
00011 using std::endl;
00012
00013
00014
00015 LoadPDF::LoadPDF() : fHist(6),fHist2(2){
00016
00017 for (unsigned int i=0;i<6;i++) fHist[i]=0;
00018 for (unsigned int i=0;i<2;i++) fHist2[i]=0;
00019
00020 }
00021
00022 LoadPDF::LoadPDF(const char* name) : fHist(6),fHist2(2){
00023
00024 for (unsigned int i=0;i<6;i++) fHist[i]=0;
00025 for (unsigned int i=0;i<2;i++) fHist2[i]=0;
00026
00027
00028 TFile file_pdf(name,"READ");
00029
00030
00031 fHist2[0] = dynamic_cast<TH2*>(file_pdf.Get("hist_qpeqp_planes_nu"));
00032 fHist2[1] = dynamic_cast<TH2*>(file_pdf.Get("hist_qpeqp_planes_anu"));
00033 fHist[0] = dynamic_cast<TH1*>(file_pdf.Get("hist_planes_nu"));
00034 fHist[1] = dynamic_cast<TH1*>(file_pdf.Get("hist_planes_anu"));
00035 fHist[2] = dynamic_cast<TH1*>(file_pdf.Get("hist_y_nu"));
00036 fHist[3] = dynamic_cast<TH1*>(file_pdf.Get("hist_y_anu"));
00037 fHist[4] = dynamic_cast<TH1*>(file_pdf.Get("hist_cosz_nu"));
00038 fHist[5] = dynamic_cast<TH1*>(file_pdf.Get("hist_cosz_anu"));
00039
00040 for (unsigned int i=0;i<6;i++){
00041 assert(fHist[i]);
00042 fHist[i]->SetDirectory(0);
00043 minPDFx_1D[i]=fHist[i]->GetXaxis()->GetXmin();
00044 maxPDFx_1D[i]=fHist[i]->GetXaxis()->GetXmax();
00045 }
00046 for (unsigned int i=0;i<2;i++){
00047 assert(fHist2[i]);
00048 fHist2[i]->SetDirectory(0);
00049 minPDFx_2D[i]=fHist2[i]->GetXaxis()->GetXmin();
00050 maxPDFx_2D[i]=fHist2[i]->GetXaxis()->GetXmax();
00051 minPDFy_2D[i]=fHist2[i]->GetYaxis()->GetXmin();
00052 maxPDFy_2D[i]=fHist2[i]->GetYaxis()->GetXmax();
00053
00054 }
00055
00056
00057 }
00058
00059 LoadPDF::~LoadPDF(){
00060
00061 }
00062
00063
00064
00065 Double_t LoadPDF::GetProb1_nu(Double_t qpeqp_in, Int_t planes_in){
00066
00067 Double_t proba = fHist2[0]->GetBinContent(fHist2[0]->FindBin(qpeqp_in,planes_in));
00068
00069 if(proba==0 || qpeqp_in < minPDFx_2D[0] || qpeqp_in > maxPDFx_2D[0] || planes_in < minPDFy_2D[0] || planes_in > maxPDFy_2D[0]){
00070 proba=0.000001;
00071 }
00072 return proba;
00073 }
00074
00075
00076 Double_t LoadPDF::GetProb1_anu(Double_t qpeqp_in, Int_t planes_in){
00077 Double_t proba = fHist2[1]->GetBinContent(fHist2[1]->FindBin(qpeqp_in,planes_in));
00078
00079 if(proba==0 || qpeqp_in < minPDFx_2D[1] || qpeqp_in > maxPDFx_2D[1] || planes_in < minPDFy_2D[1] || planes_in > maxPDFy_2D[1]){
00080 proba=0.000001;
00081 }
00082 return proba;
00083 }
00084
00085
00086 Double_t LoadPDF::GetProb2_nu(Int_t planes_in){
00087 Double_t proba = fHist[0]->GetBinContent(fHist[0]->FindBin(planes_in));
00088
00089 if(proba==0 || planes_in < minPDFx_1D[0] || planes_in > maxPDFx_1D[0]){
00090 proba=0.000001;
00091 }
00092 return proba;
00093 }
00094
00095
00096 Double_t LoadPDF::GetProb2_anu(Int_t planes_in){
00097 Double_t proba = fHist[1]->GetBinContent(fHist[1]->FindBin(planes_in));
00098
00099 if(proba==0 || planes_in < minPDFx_1D[1] || planes_in > maxPDFx_1D[1]){
00100 proba=0.000001;
00101 }
00102 return proba;
00103 }
00104
00105
00106 Double_t LoadPDF::GetProb3_nu(Double_t y_in){
00107 Double_t proba = fHist[2]->GetBinContent(fHist[2]->FindBin(y_in));
00108
00109 if(proba==0 || y_in < minPDFx_1D[2] || y_in > maxPDFx_1D[2]){
00110 proba=0.000001;
00111 }
00112 return proba;
00113 }
00114
00115
00116 Double_t LoadPDF::GetProb3_anu(Double_t y_in){
00117 Double_t proba = fHist[3]->GetBinContent(fHist[3]->FindBin(y_in));
00118
00119 if(proba==0 || y_in < minPDFx_1D[3] || y_in > maxPDFx_1D[3]){
00120 proba=0.000001;
00121 }
00122 return proba;
00123 }
00124
00125
00126 Double_t LoadPDF::GetProb4_nu(Double_t cosz_in){
00127 Double_t proba = fHist[4]->GetBinContent(fHist[4]->FindBin(cosz_in));
00128
00129 if(proba==0 || cosz_in < minPDFx_1D[4] || cosz_in > maxPDFx_1D[4]){
00130 proba=0.000001;
00131 }
00132 return proba;
00133 }
00134
00135
00136 Double_t LoadPDF::GetProb4_anu(Double_t cosz_in){
00137 Double_t proba = fHist[5]->GetBinContent(fHist[5]->FindBin(cosz_in));
00138
00139 if(proba==0 || cosz_in < minPDFx_1D[5] || cosz_in > maxPDFx_1D[5]){
00140 proba=0.000001;
00141 }
00142 return proba;
00143 }