00001 #include <string>
00002
00003 #include "TFile.h"
00004 #include "TGraph.h"
00005 #include "TH1D.h"
00006 #include "TH2D.h"
00007
00008 #include "MessageService/MsgService.h"
00009 #include "NtupleUtils/NuMMHelperPRL.h"
00010
00011 ClassImp(NuMMHelperPRL)
00012
00013 CVSID("$Id: NuMMHelperPRL.cxx,v 1.5 2009/10/14 17:27:32 bckhouse Exp $");
00014
00015
00016 NuMMHelperPRL::NuMMHelperPRL()
00017 {
00018 }
00019
00020
00021 NuMMHelperPRL::NuMMHelperPRL(const std::string& helperFilename,
00022 const std::string& xSecFilename)
00023 {
00024 TFile helperFile(helperFilename.c_str(),"READ");
00025
00026 fRecoVsTrueEnergy_ND = (TH2D*) helperFile.Get("RecoVsTrueEnergy_ND");
00027 fRecoVsTrueEnergy_ND->SetDirectory(0);
00028 fRecoVsTrueEnergy_FD = (TH2D*) helperFile.Get("RecoVsTrueEnergy_FD");
00029 fRecoVsTrueEnergy_FD->SetDirectory(0);
00030
00031 fRecoVsTrueEnergy_ND_NC = (TH2D*) helperFile.Get("RecoVsTrueEnergy_ND_NC");
00032 if(fRecoVsTrueEnergy_ND_NC){
00033 fRecoVsTrueEnergy_ND_NC->SetDirectory(0);
00034 fRecoVsTrueEnergy_FD_NC = (TH2D*) helperFile.Get("RecoVsTrueEnergy_FD_NC");
00035 fRecoVsTrueEnergy_FD_NC->SetDirectory(0);
00036
00037 for(int truth = 0; truth < ENCTruth::kNumTruths; ++truth){
00038 for(int det = 0; det <= 1; ++det){
00039 const TString detStr = det ? "FD" : "ND";
00040 fRecoVsTrueEnergy_NC_truly[truth][det] = (TH2D*)helperFile.Get("RecoVsTrueEnergy_truly"+ENCTruth::truthNames[truth]+"_"+detStr+"_NC");
00041 fRecoVsTrueEnergy_NC_truly[truth][det]->SetDirectory(0);
00042 }
00043 }
00044 }
00045 else{
00046 MSG("NuMMHelperPRL", Msg::kWarning) << "No NC plots found in helper file" << endl;
00047 fRecoVsTrueEnergy_FD_NC = 0;
00048 for(int truth = 0; truth < ENCTruth::kNumTruths; ++truth)
00049 for(int det = 0; det <= 1; ++det)
00050 fRecoVsTrueEnergy_NC_truly[truth][det] = 0;
00051 }
00052
00053 fFDVsNDMatrixRW = (TH2D*) helperFile.Get("FDVsNDMatrixRW");
00054 if(fFDVsNDMatrixRW) fFDVsNDMatrixRW->SetDirectory(0);
00055 fFDVsNDMatrixXSecRW = (TH2D*) helperFile.Get("FDVsNDMatrixXSecRW");
00056 if(fFDVsNDMatrixXSecRW) fFDVsNDMatrixXSecRW->SetDirectory(0);
00057
00058 fEfficiency_ND = (TH1D*) helperFile.Get("Efficiency_ND");
00059 fEfficiency_ND->SetDirectory(0);
00060 fEfficiency_FD = (TH1D*) helperFile.Get("Efficiency_FD");
00061 fEfficiency_FD->SetDirectory(0);
00062
00063
00064
00065
00066 fPurity_FD = (TH1D*) helperFile.Get("NCContamination_FD");
00067 fPurity_FD->SetDirectory(0);
00068 fPurity_ND = (TH1D*) helperFile.Get("NCContamination_ND");
00069 fPurity_ND->SetDirectory(0);
00070 for (int i=1; i<=fPurity_ND->GetNbinsX(); ++i){
00071 fPurity_ND->SetBinContent(i, 1.0 -
00072 fPurity_ND->GetBinContent(i));
00073 fPurity_FD->SetBinContent(i, 1.0 -
00074 fPurity_FD->GetBinContent(i));
00075 }
00076
00077
00078 fEfficiencyTau_FD = (TH1D*) helperFile.Get("EfficiencyTau_FD");
00079 fEfficiencyTau_FD->SetDirectory(0);
00080 fRecoVsTrueEnergyTau_FD = (TH2D*)
00081 helperFile.Get("RecoVsTrueEnergyTau_FD");
00082 fRecoVsTrueEnergyTau_FD->SetDirectory(0);
00083
00084 helperFile.Close();
00085
00086
00087 TFile *xsecfile = new TFile(xSecFilename.c_str(),"READ");
00088 TH1F* XSec_CC = (TH1F*) xsecfile->Get("h_numu_cc_tot");
00089 XSec_CC->SetDirectory(0);
00090 xsecfile->Close();
00091 if (xsecfile){delete xsecfile; xsecfile = 0;}
00092 Float_t *x = new Float_t[XSec_CC->GetNbinsX()];
00093 Float_t *y = new Float_t[XSec_CC->GetNbinsX()];
00094 for(int i=0;i<XSec_CC->GetNbinsX();i++) {
00095 x[i] = XSec_CC->GetBinCenter(i+1);
00096 y[i] = XSec_CC->GetBinContent(i+1);
00097 }
00098 fXSec_CC_Graph = new TGraph(XSec_CC->GetNbinsX(),x,y);
00099 if (x) {delete[] x; x = 0;}
00100 if (y) {delete[] y; y = 0;}
00101
00102
00103 xsecfile = new TFile(xSecFilename.c_str(),"READ");
00104 TH1F* tau_XSec_CC = (TH1F*) xsecfile->Get("h_nutau_cc_tot");
00105 tau_XSec_CC->SetDirectory(0);
00106 xsecfile->Close();
00107 if (xsecfile){delete xsecfile; xsecfile = 0;}
00108 x = new Float_t[tau_XSec_CC->GetNbinsX()];
00109 y = new Float_t[tau_XSec_CC->GetNbinsX()];
00110 for(int i=0;i<tau_XSec_CC->GetNbinsX();i++) {
00111 x[i] = tau_XSec_CC->GetBinCenter(i+1);
00112 y[i] = tau_XSec_CC->GetBinContent(i+1);
00113 }
00114 fTau_XSec_CC_Graph = new TGraph(tau_XSec_CC->GetNbinsX(),x,y);
00115 if (x) {delete[] x; x = 0;}
00116 if (y) {delete[] y; y = 0;}
00117 }
00118
00119
00120 void NuMMHelperPRL::OverrideBeamMatrix(const TH2D* beamMatrix)
00121 {
00122 if (fFDVsNDMatrixRW){delete fFDVsNDMatrixRW; fFDVsNDMatrixRW=0;}
00123 fFDVsNDMatrixRW = new TH2D(*beamMatrix);
00124 }
00125