Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

NuMMHelperPRL.cxx

Go to the documentation of this file.
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 //____________________________________________________________________72
00016 NuMMHelperPRL::NuMMHelperPRL()
00017 {
00018 }
00019 
00020 //____________________________________________________________________72
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     } // end for truth
00044   }
00045   else{ // We didn't get any NC plots, warn and null them out
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   //The purity histograms in the helper file remove both the ND
00064   //background and the wrong sign CCs: the PRL analysis doesn't
00065   //remove the latter.
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   //Tau helpers
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   //Get cross-sections (numu)
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   //Get cross-sections (tau)
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 //____________________________________________________________________72
00120 void NuMMHelperPRL::OverrideBeamMatrix(const TH2D* beamMatrix)
00121 {
00122   if (fFDVsNDMatrixRW){delete fFDVsNDMatrixRW; fFDVsNDMatrixRW=0;}
00123   fFDVsNDMatrixRW = new TH2D(*beamMatrix);
00124 }
00125 

Generated on Mon Feb 15 11:07:15 2010 for loon by  doxygen 1.3.9.1