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

NuHistos Class Reference

#include <NuHistos.h>

List of all members.

Public Member Functions

 NuHistos ()
 ~NuHistos ()
void FillMatrixMethodHistos (const NuEvent &nu, const NuBinningScheme::NuBinningScheme_t binningScheme=NuBinningScheme::kUnknown) const
void FillMatrixMethodNCHistos (const NuEvent &nu, const NuBinningScheme::NuBinningScheme_t binningScheme=NuBinningScheme::kUnknown) const
Float_t CalcPOTsFromHistos (std::string sNamePostfix="") const


Constructor & Destructor Documentation

NuHistos::NuHistos  ) 
 

Definition at line 32 of file NuHistos.cxx.

References MSG.

00033 {
00034   MSG("NuHistos",Msg::kDebug)
00035     <<"Running NuHistos Constructor..."<<endl;
00036 
00037 
00038   MSG("NuHistos",Msg::kDebug)
00039     <<"Finished NuHistos Constructor"<<endl;
00040 }

NuHistos::~NuHistos  ) 
 

Definition at line 44 of file NuHistos.cxx.

References MSG.

00045 {
00046   MSG("NuHistos",Msg::kDebug)
00047     <<"Running NuHistos Destructor..."<<endl;
00048 
00049 
00050   MSG("NuHistos",Msg::kDebug)
00051     <<"Finished NuHistos Destructor"<<endl;
00052 }


Member Function Documentation

Float_t NuHistos::CalcPOTsFromHistos std::string  sNamePostfix = ""  )  const
 

Definition at line 1265 of file NuHistos.cxx.

References det, and s().

Referenced by NuDSTAna::DoIO(), and NuAnalysis::StoreOrFinishTree().

01266 {
01267   //Method to Calc POTs from histograms
01268 
01269   //string to use for histo names
01270   string s="";
01271 
01272 
01273   //get the detector
01274   s="hDetector";
01275   s+=sNamePostfix;
01276   TH1F* hDetector=(TH1F*)gROOT->FindObjectAny(s.c_str());
01277   Int_t det=-1;
01278   if (hDetector) det=static_cast<Int_t>(hDetector->GetMean());
01279   else cout<<"Ahhh, no hDetector"<<endl;
01280 
01281   //get the simflag
01282   s="hSimFlag";
01283   s+=sNamePostfix;
01284   TH1F* hSimFlag=(TH1F*)gROOT->FindObjectAny(s.c_str());
01285   Int_t simFlag=-1;
01286   if (hSimFlag) simFlag=static_cast<Int_t>(hSimFlag->GetMean());
01287   else cout<<"Ahhh, no hSimFlag"<<endl;
01288 
01289   cout<<"POT Counting: found Detector="<<det
01290       <<", SimFlag="<<simFlag<<endl;
01291 
01292   //get the pots
01293   s="hPottrtgtd";
01294   s+=sNamePostfix;
01295   TH1F* hPot=(TH1F*)gROOT->FindObjectAny(s.c_str());
01296   Float_t avPot=-1;
01297   if (hPot) avPot=hPot->GetMean();
01298   else cout<<"Ahhh, no hPottrtgtd histogram"<<endl;
01299 
01300   //get the pots that failed the cuts
01301   s="hPotBadtrtgtd";
01302   s+=sNamePostfix;
01303   TH1F* hPotBad=(TH1F*)gROOT->FindObjectAny(s.c_str());
01304   Float_t avPotBad=-1;
01305   if (hPotBad) avPotBad=hPotBad->GetMean();
01306   else cout<<"Ahhh, no hPotBadtrtgtd histogram"<<endl;
01307     
01308   //get the number of runs/subruns
01309   s="hRun";
01310   s+=sNamePostfix;
01311   TH1F* hRun=(TH1F*)gROOT->FindObjectAny(s.c_str());
01312   Float_t runs=-1;
01313   if (hRun) runs=hRun->GetEntries();
01314   else cout<<"Ahhh, no hRun histo"<<endl;
01315 
01316   //get the spills per file
01317   Float_t spillsPerFile=-1;
01318   s="hSpillsPerFile";
01319   s+=sNamePostfix;
01320   TH1F* hSpillsPerFile=(TH1F*)gROOT->FindObjectAny(s.c_str());
01321   if (hSpillsPerFile){
01322     spillsPerFile=hSpillsPerFile->GetMean();
01323   }
01324   else {
01325     spillsPerFile=400;
01326     cout<<"Can't find hSpillsPerFile, so using spillsPerFile="
01327         <<spillsPerFile<<endl;
01328 
01329     //deal with a bug
01330     if (spillsPerFile==0 && det==Detector::kFar) {
01331       spillsPerFile=1;
01332       cout<<endl<<"*** WARNING spillsPerFile=0 so setting to "
01333           <<spillsPerFile<<" ***"<<endl;
01334     }
01335   }
01336 
01337   //apply the necessary 1e12 factor
01338   avPot*=1e12;
01339 
01340   //for the FD there is an additional factor of 1e8
01341   if (det==Detector::kFar) avPot*=1e8;
01342 
01343   Float_t totalPotFiles=0;//calc from number of files
01344   if (simFlag==SimFlag::kMC) {
01345     cout<<"For spills per files method: using avPot="<<avPot
01346         <<", avPotBad="<<avPotBad
01347         <<", runs="<<runs<<", spillsPerFile="<<spillsPerFile<<endl;
01348 
01349     //calc the totalPotFiles
01350     totalPotFiles=avPot*spillsPerFile*runs;
01351     cout<<"Total POT calc from spills per file="
01352         <<totalPotFiles<<endl;
01353   }
01354 
01355   //now calc the pots using the information from individual spills
01356   //this is for data
01357   Float_t totalPotHist=0;
01358   Float_t totalPotBadHist=0;
01359   if (det==Detector::kNear && simFlag==SimFlag::kData) {
01360     if (hPot) totalPotHist=
01361                 hPot->GetMean()*hPot->GetEntries();
01362     else cout<<"Ahhh, no hPottortgt histogram"<<endl;
01363 
01364     if (hPotBad) totalPotBadHist=
01365                    hPotBad->GetMean()*hPotBad->GetEntries();
01366     else cout<<"Ahhh, no hPotBadtortgt histogram"<<endl;
01367 
01368     //multiply by the necessary 1e12 factor
01369     totalPotHist*=1e12;
01370     totalPotBadHist*=1e12;
01371 
01372     cout<<"Total POT calc from spill beam data="<<totalPotHist
01373         <<" (potsRejected="<<totalPotBadHist<<")"<<endl;
01374   }
01375 
01376   //decide which version to use
01377   Float_t totalPot=1;
01378   if (simFlag==SimFlag::kData) {
01379     totalPot=totalPotHist;
01380   }
01381   else if (simFlag==SimFlag::kMC) {
01382     totalPot=totalPotFiles;
01383   }
01384   else cout<<"ahhh, pot error"<<endl;
01385 
01387   //section to create the hTotalPot histo (or not)
01389   if (simFlag==-1) {
01390     //do nothing
01391     cout<<"Not creating hTotalPot histo"<<endl;
01392   }
01393   else if (det==Detector::kFar && simFlag==SimFlag::kData) {
01394     //don't create the histogram here
01395     //FD data pot counting has to be done by hand
01396     cout<<"Not creating hTotalPot histo for det="<<det
01397         <<", simFlag="<<simFlag<<endl;
01398   }
01399   else {
01400     //make a histogram to store the result
01401     TH1F* hTotalPot=new TH1F("hTotalPot","hTotalPot",2,-0.5,1.5);
01402     hTotalPot->Fill(1,totalPot);
01403     cout<<"hTotalPot->GetMax()="<<hTotalPot->GetMaximum()
01404         <<", hTotalPot->Integral()="<<hTotalPot->Integral()<<endl;
01405   }
01406 
01407   return totalPot;
01408 }

void NuHistos::FillMatrixMethodHistos const NuEvent nu,
const NuBinningScheme::NuBinningScheme_t  binningScheme = NuBinningScheme::kUnknown
const
 

Definition at line 57 of file NuHistos.cxx.

References abs(), MAXMSG, MSG, NuUtilities::OscillationWeight(), NuUtilities::RecoBins(), and NuUtilities::TrueBins().

Referenced by NuAnalysis::ChargeSeparationOneSnarl(), NuDSTAna::JeffsTestAna(), NuDSTAna::MMRereco(), NuDSTAna::MMTransition(), NuDSTAna::NewFieldAna(), NuDSTAna::StdCCAna(), and NuDSTAna::StdNMBAna().

00059 {
00060   //TH1D *fFracErrOnPred;//JE does this one
00061   //TH1D *fTrueEnergyTrueCCFidEvents_ND;//this is in NuPlots
00062   //TH1D *fTrueEnergyTrueCCFidEvents_FD;//this is in NuPlots
00063 
00064   MAXMSG("NuHistos",Msg::kInfo,1)
00065     <<"Running FillMatrixMethodHistos..."<<endl;
00066 
00067   //MC Helper histos (CC numus):
00068   static TH2D* fRecoVsTrueEnergy_ND=0;
00069   static TH1D* fEfficiency_ND=0;
00070   static TH1D* fPurity_ND=0;
00071   static TH2D* fRecoVsTrueEnergy_FD=0;
00072   static TH1D* fEfficiency_FD=0;
00073   static TH1D* fPurity_FD=0;
00074   static TH1D* fCCContamination_ND = 0;
00075   static TH1D* fCCContamination_FD = 0;
00076   static TH2D* fCCContaminationRecoVsTrue_FD = 0;
00077   static TH1D* fNCContamination_ND = 0;
00078   static TH1D* fNCContamination_FD = 0;
00079   //MC Helper histos (CC numubars):
00080   static TH2D* fRecoVsTrueEnergyPQ_ND=0;
00081   static TH1D* fEfficiencyPQ_ND=0;
00082   static TH1D* fPurityPQ_ND=0;
00083   static TH2D* fRecoVsTrueEnergyPQ_FD=0;
00084   static TH1D* fEfficiencyPQ_FD=0;
00085   static TH1D* fPurityPQ_FD=0;
00086   static TH1D* fCCContaminationPQ_ND = 0;
00087   static TH1D* fCCContaminationPQ_FD = 0;
00088   static TH2D* fCCContaminationRecoVsTruePQ_FD = 0;
00089   static TH1D* fNCContaminationPQ_ND = 0;
00090   static TH1D* fNCContaminationPQ_FD = 0;
00091   //MC Helper histos (CC numus + CC numubars):
00092   static TH2D* fRecoVsTrueEnergyAll_ND=0;
00093   static TH1D* fEfficiencyAll_ND=0;
00094   static TH1D* fPurityAll_ND=0;
00095   static TH2D* fRecoVsTrueEnergyAll_FD=0;
00096   static TH1D* fEfficiencyAll_FD=0;
00097   static TH1D* fPurityAll_FD=0;
00098   //MC Helper histos (CC nutaus):
00099   static TH2D* fRecoVsTrueEnergyTau_FD=0;
00100   static TH1D* fEfficiencyTau_FD=0;
00101   //MC Helper histos (CC nutaus):
00102   static TH2D* fRecoVsTrueEnergyTauPQ_FD=0;
00103   static TH1D* fEfficiencyTauPQ_FD=0;
00104   //MC Helper histos (CC nutaus):
00105   static TH2D* fRecoVsTrueEnergyTauAll_FD=0;
00106   static TH1D* fEfficiencyTauAll_FD=0;
00107 
00108   //MC Check list histos (CC numus):
00109   static TH1D* fTrueEnergyCCOnlyEvents_ND=0;
00110   static TH1D* fRecoEnergyCCOnlyEvents_ND=0;
00111   static TH1D* fRecoEnergyAllEvents_ND=0;
00112   static TH1D* fTrueEnergyCCOnlyEvents_FD=0;
00113   static TH1D* fRecoEnergyCCOnlyEvents_FD=0;
00114   static TH1D* fRecoEnergyAllEvents_FD=0;
00115   //MC Check list histos (CC numubars):
00116   static TH1D* fTrueEnergyCCOnlyEventsPQ_ND=0;
00117   static TH1D* fRecoEnergyCCOnlyEventsPQ_ND=0;
00118   static TH1D* fRecoEnergyAllEventsPQ_ND=0;
00119   static TH1D* fTrueEnergyCCOnlyEventsPQ_FD=0;
00120   static TH1D* fRecoEnergyCCOnlyEventsPQ_FD=0;
00121   static TH1D* fRecoEnergyAllEventsPQ_FD=0;
00122   //MC Check list histos (CC numus + CC numubars):
00123   static TH1D* fTrueEnergyCCOnlyEventsAll_ND=0;
00124   static TH1D* fRecoEnergyCCOnlyEventsAll_ND=0;
00125   static TH1D* fRecoEnergyAllEventsAll_ND=0;
00126   static TH1D* fTrueEnergyCCOnlyEventsAll_FD=0;
00127   static TH1D* fRecoEnergyCCOnlyEventsAll_FD=0;
00128   static TH1D* fRecoEnergyAllEventsAll_FD=0;
00129   //MC checklist histos (CC nutaus):
00130   static TH1D* fTrueEnergyCCOnlyEventsTau_FD=0;
00131   //MC checklist histos (CC nutaubars):
00132   static TH1D* fTrueEnergyCCOnlyEventsTauPQ_FD=0;
00133   //MC checklist histos (CC nutaus + nutaubars):
00134   static TH1D* fTrueEnergyCCOnlyEventsTauAll_FD=0;
00135 
00136   //DATA histos (CC numus)
00137   static TH1D* RecoEnergy_ND=0;
00138   static TH1D* RecoEnergy_FD=0;
00139   //DATA histos (CC numubars)
00140   static TH1D* RecoEnergyPQ_ND=0;
00141   static TH1D* RecoEnergyPQ_FD=0;
00142 
00143   //DATA histos (Pure Reco Energys)
00144   static TH1D* RecoEnergyTrueTauPQ_FD=0;
00145   static TH1D* RecoEnergyTrueMuonPQ_FD=0;
00146   static TH1D* RecoEnergyTrueTauNQ_FD=0;
00147   static TH1D* RecoEnergyTrueMuonNQ_FD=0;
00148 
00149   static TH1D* RecoEnergyTrueTauPQ_ND=0;
00150   static TH1D* RecoEnergyTrueMuonPQ_ND=0;
00151   static TH1D* RecoEnergyTrueTauNQ_ND=0;
00152   static TH1D* RecoEnergyTrueMuonNQ_ND=0;
00153 
00154   static TH1D* RecoEnergyWSTauPQ_FD=0;
00155   static TH1D* RecoEnergyWSMuonPQ_FD=0;
00156   static TH1D* RecoEnergyWSTauNQ_FD=0;
00157   static TH1D* RecoEnergyWSMuonNQ_FD=0;
00158 
00159   static TH1D* RecoEnergyWSTauPQ_ND=0;
00160   static TH1D* RecoEnergyWSMuonPQ_ND=0;
00161   static TH1D* RecoEnergyWSTauNQ_ND=0;
00162   static TH1D* RecoEnergyWSMuonNQ_ND=0;
00163 
00164 
00165   //DATA histos (CC numus + CC numubars)
00166   static TH1D* RecoEnergyAll_ND=0;
00167   static TH1D* RecoEnergyAll_FD=0;
00168 
00169   static TH1F*  poKinPQ = 0;
00170   static TH1F*  roIdPQ = 0;
00171   static TH1F*  dpIdPQ = 0;
00172   static TH1F*  trkLPQ = 0;
00173   static TH1F*  relAPQ = 0;
00174   static TH1F*  relANQ = 0;
00175   static TH1F*  relAPQ1 = 0;
00176   static TH1F*  qp_sigmaqpPQ = 0;
00177   static TH1F*  majCPQ = 0;
00178   static TH1F*  probPQ = 0;
00179   static TH2F*  relAngVsTrkEndX = 0;
00180   static TH2F*  relAngVsTrkEndY = 0;
00181   static TH2F*  relAngVsTrkEndZ = 0;
00182 
00183   if(!fRecoVsTrueEnergy_ND){
00184     MSG("NuHistos",Msg::kInfo)
00185       <<"Creating histograms on first run of FillMatrixMethodHistos..."
00186       <<" gDirectory gives:"<<endl;
00187           gDirectory->Print();
00188 
00189     const NuUtilities cuts;
00190     const vector<Double_t> recoBins = cuts.RecoBins(binningScheme);
00191     const Int_t numRecoBins = recoBins.size()-1;
00192     Float_t *recoBinsArray;
00193     recoBinsArray=new Float_t[numRecoBins+1];
00194     {
00195       Int_t i=0;
00196       for (vector<Double_t>::const_iterator itBin = recoBins.begin();
00197            itBin != recoBins.end();
00198            ++itBin, ++i){
00199         recoBinsArray[i] = *itBin;
00200       }
00201     }
00202 
00203     const vector<Double_t> trueBins = cuts.TrueBins(binningScheme);
00204     const Int_t numTrueBins = trueBins.size()-1;
00205     Float_t *trueBinsArray;
00206     trueBinsArray=new Float_t[numTrueBins+1];
00207     {
00208       Int_t i=0;
00209       for (vector<Double_t>::const_iterator itBin = trueBins.begin();
00210            itBin != trueBins.end();
00211            ++itBin, ++i){
00212         trueBinsArray[i] = *itBin;
00213       }
00214     }
00215 
00216     //helper histos (CC numus):
00217     fRecoVsTrueEnergy_ND=new TH2D
00218                 ("RecoVsTrueEnergy_ND",
00219                  "Reco Vs True Energy (NearDet)",
00220                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00221     fRecoVsTrueEnergy_ND->Sumw2();
00222 
00223     fEfficiency_ND=new TH1D
00224                 ("Efficiency_ND",
00225                  "NuMu CC Selection Efficiency with True Energy (NearDet)",
00226                  numTrueBins,trueBinsArray);
00227     fEfficiency_ND->Sumw2();
00228 
00229     fPurity_ND=new TH1D
00230                 ("Purity_ND",
00231                  "NuMu CC Selection Purity with Reco Energy (NearDet)",
00232                  numRecoBins,recoBinsArray);
00233     fPurity_ND->Sumw2();
00234 
00235     fRecoVsTrueEnergy_FD=new TH2D
00236                 ("RecoVsTrueEnergy_FD",
00237                  "Reco Vs True Energy (FarDet)",
00238                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00239     fRecoVsTrueEnergy_FD->Sumw2();
00240 
00241     fEfficiency_FD=new TH1D
00242                 ("Efficiency_FD",
00243                  "NuMu CC Selection Efficiency with True Energy (FarDet)",
00244                  numTrueBins,trueBinsArray);
00245     fEfficiency_FD->Sumw2();
00246 
00247     fPurity_FD=new TH1D
00248                 ("Purity_FD",
00249                  "NuMu CC Selection Purity with Reco Energy (FarDet)",
00250                  numRecoBins,recoBinsArray);
00251     fPurity_FD->Sumw2();
00252 
00253     fCCContamination_FD = new TH1D
00254                 ("CCContamination_FD",
00255                  "CC antineutrino contamination in a -ve curving CC selection (FarDet)",
00256                  numTrueBins,trueBinsArray);
00257     fCCContamination_FD->Sumw2();
00258 
00259     fCCContamination_ND = new TH1D
00260                 ("CCContamination_ND",
00261                  "CC antineutrino contamination in a -ve curving CC selection (NearDet)",
00262                  numRecoBins,recoBinsArray);
00263     fCCContamination_ND->Sumw2();
00264 
00265     fCCContaminationRecoVsTrue_FD = new TH2D
00266                 ("CCContaminationRecoVsTrue_FD",
00267                  "Reco vs true energy of CC antineutrino contamination in a -ve curving CC selection (FarDet)",
00268                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00269     fCCContaminationRecoVsTrue_FD->Sumw2();
00270 
00271     fNCContamination_ND = new TH1D
00272                 ("NCContamination_ND",
00273                  "NC contamination in a -ve curving CC selection (NearDet)",
00274                  numRecoBins,recoBinsArray);
00275     fNCContamination_ND->Sumw2();
00276 
00277     fNCContamination_FD = new TH1D
00278                 ("NCContamination_FD",
00279                  "NC contamination in a -ve curving CC selection (FarDet)",
00280                  numRecoBins,recoBinsArray);
00281     fNCContamination_FD->Sumw2();
00282 
00283     //helper histos (CC numubars):
00284     fRecoVsTrueEnergyPQ_ND=new TH2D
00285                 ("RecoVsTrueEnergyPQ_ND",
00286                  "Reco Vs True Energy (NearDet)",
00287                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00288     fRecoVsTrueEnergyPQ_ND->Sumw2();
00289 
00290     fEfficiencyPQ_ND=new TH1D
00291                 ("EfficiencyPQ_ND",
00292                  "NuMuBar CC Selection Efficiency with True Energy (NearDet)",
00293                  numTrueBins,trueBinsArray);
00294     fEfficiencyPQ_ND->Sumw2();
00295 
00296     fPurityPQ_ND=new TH1D
00297                 ("PurityPQ_ND",
00298                  "NuMuBar CC Selection Purity with Reco Energy (NearDet)",
00299                  numRecoBins,recoBinsArray);
00300     fPurityPQ_ND->Sumw2();
00301 
00302     fRecoVsTrueEnergyPQ_FD=new TH2D
00303                 ("RecoVsTrueEnergyPQ_FD",
00304                  "Reco Vs True Energy (FarDet)",
00305                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00306     fRecoVsTrueEnergyPQ_FD->Sumw2();
00307 
00308     fEfficiencyPQ_FD=new TH1D
00309                 ("EfficiencyPQ_FD",
00310                  "NuMuBar CC Selection Efficiency with True Energy (FarDet)",
00311                  numTrueBins,trueBinsArray);
00312     fEfficiencyPQ_FD->Sumw2();
00313 
00314     fPurityPQ_FD=new TH1D
00315                 ("PurityPQ_FD",
00316                  "NuMuBar CC Selection Purity with Reco Energy (FarDet)",
00317                  numRecoBins,recoBinsArray);
00318     fPurityPQ_FD->Sumw2();
00319 
00320     fCCContaminationPQ_ND = new TH1D
00321                 ("CCContaminationPQ_ND",
00322                  "CC neutrino contamination in a +ve curving CC selection (NearDet)",
00323                  numRecoBins,recoBinsArray);
00324     fCCContaminationPQ_ND->Sumw2();
00325 
00326     fCCContaminationPQ_FD = new TH1D
00327                 ("CCContaminationPQ_FD",
00328                  "CC neutrino contamination in a +ve curving CC selection (FarDet)",
00329                  numTrueBins,trueBinsArray);
00330     fCCContaminationPQ_FD->Sumw2();
00331 
00332     fCCContaminationRecoVsTruePQ_FD = new TH2D
00333                 ("CCContaminationRecoVsTruePQ_FD",
00334                  "RecoVsTrue Energy of CC neutrino contamination in a +ve curving CC selection (FarDet)",
00335                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00336     fCCContaminationRecoVsTruePQ_FD->Sumw2();
00337 
00338     fNCContaminationPQ_ND = new TH1D
00339                 ("NCContaminationPQ_ND",
00340                  "NC contamination in a +ve curving CC selection (NearDet)",
00341                  numRecoBins,recoBinsArray);
00342     fNCContaminationPQ_ND->Sumw2();
00343 
00344     fNCContaminationPQ_FD = new TH1D
00345                 ("NCContaminationPQ_FD",
00346                  "NC contamination in a +ve curving CC selection (FarDet)",
00347                  numRecoBins,recoBinsArray);
00348     fNCContaminationPQ_FD->Sumw2();
00349 
00350     //helper histos (CC numus + CC numubars):
00351     fRecoVsTrueEnergyAll_ND=new TH2D
00352                 ("RecoVsTrueEnergyAll_ND",
00353                  "Reco Vs True Energy (NearDet)",
00354                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00355     fRecoVsTrueEnergyAll_ND->Sumw2();
00356 
00357     fEfficiencyAll_ND=new TH1D
00358                 ("EfficiencyAll_ND",
00359                  "All CC Selection Efficiency with True Energy (NearDet)",
00360                  numTrueBins,trueBinsArray);
00361     fEfficiencyAll_ND->Sumw2();
00362 
00363     fPurityAll_ND=new TH1D
00364                 ("PurityAll_ND",
00365                  "All CC Selection Purity with Reco Energy (NearDet)",
00366                  numRecoBins,recoBinsArray);
00367     fPurityAll_ND->Sumw2();
00368 
00369     fRecoVsTrueEnergyAll_FD=new TH2D
00370                 ("RecoVsTrueEnergyAll_FD",
00371                  "Reco Vs True Energy (FarDet)",
00372                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00373     fRecoVsTrueEnergyAll_FD->Sumw2();
00374 
00375     fEfficiencyAll_FD=new TH1D
00376                 ("EfficiencyAll_FD",
00377                  "All CC Selection Efficiency with True Energy (FarDet)",
00378                  numTrueBins,trueBinsArray);
00379     fEfficiencyAll_FD->Sumw2();
00380 
00381     fPurityAll_FD=new TH1D
00382                 ("PurityAll_FD",
00383                  "All CC Selection Purity with Reco Energy (FarDet)",
00384                  numRecoBins,recoBinsArray);
00385     fPurityAll_FD->Sumw2();
00386 
00387     //Helper histos (CC nutau):
00388     fRecoVsTrueEnergyTau_FD=new TH2D
00389                 ("RecoVsTrueEnergyTau_FD",
00390                  "Tau Reco Vs True Energy (FarDet)",
00391                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00392     fRecoVsTrueEnergyTau_FD->Sumw2();
00393 
00394     fEfficiencyTau_FD=new TH1D
00395                 ("EfficiencyTau_FD",
00396                  "NuTau CC Selection Efficiency with True Energy (FarDet)",
00397                  numTrueBins,trueBinsArray);
00398     fEfficiencyTau_FD->Sumw2();
00399 
00400     //Helper histos (CC nutaubar):
00401     fRecoVsTrueEnergyTauPQ_FD=new TH2D
00402                 ("RecoVsTrueEnergyTauPQ_FD",
00403                  "TauBar Reco Vs True Energy (FarDet)",
00404                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00405     fRecoVsTrueEnergyTauPQ_FD->Sumw2();
00406 
00407     fEfficiencyTauPQ_FD=new TH1D
00408                 ("EfficiencyTauPQ_FD",
00409                  "NuTauBar CC Selection Efficiency with True Energy (FarDet)",
00410                  numTrueBins,trueBinsArray);
00411     fEfficiencyTauPQ_FD->Sumw2();
00412 
00413     //Helper histos (CC nutau + nutaubar):
00414     fRecoVsTrueEnergyTauAll_FD=new TH2D
00415                 ("RecoVsTrueEnergyTauAll_FD",
00416                  "Tau Reco Vs True Energy (FarDet)",
00417                  numTrueBins,trueBinsArray,numRecoBins,recoBinsArray);
00418     fRecoVsTrueEnergyTauAll_FD->Sumw2();
00419 
00420     fEfficiencyTauAll_FD=new TH1D
00421                 ("EfficiencyTauAll_FD",
00422                  "NuTau CC Selection Efficiency with True Energy (FarDet)",
00423                  numTrueBins,trueBinsArray);
00424     fEfficiencyTauAll_FD->Sumw2();
00425 
00426     //Checklist histos (CC numus):
00427     fTrueEnergyCCOnlyEvents_ND=new TH1D
00428                 ("TrueEnergyCCOnlyEvents_ND",
00429                  "NuMu CC Selected Events with True Energy (NearDet)",
00430                  numTrueBins,trueBinsArray);
00431     fTrueEnergyCCOnlyEvents_ND->Sumw2();
00432 
00433     fRecoEnergyCCOnlyEvents_ND=new TH1D
00434                 ("RecoEnergyCCOnlyEvents_ND",
00435                  "NuMu CC Selected Events with Reco Energy (NearDet)",
00436                  numRecoBins,recoBinsArray);
00437     fRecoEnergyCCOnlyEvents_ND->Sumw2();
00438 
00439     fRecoEnergyAllEvents_ND=new TH1D
00440                 ("RecoEnergyAllEvents_ND",
00441                  "Selected Events with Reco Energy (NearDet)",
00442                  numRecoBins,recoBinsArray);
00443     fRecoEnergyAllEvents_ND->Sumw2();
00444 
00445     fTrueEnergyCCOnlyEvents_FD=new TH1D
00446                 ("TrueEnergyCCOnlyEvents_FD",
00447                  "NuMu CC Selected Events with True Energy (FarDet)",
00448                  numTrueBins,trueBinsArray);
00449     fTrueEnergyCCOnlyEvents_FD->Sumw2();
00450 
00451     fRecoEnergyCCOnlyEvents_FD=new TH1D
00452                 ("RecoEnergyCCOnlyEvents_FD",
00453                  "NuMu CC Selected Events with Reco Energy (FarDet)",
00454                  numRecoBins,recoBinsArray);
00455     fRecoEnergyCCOnlyEvents_FD->Sumw2();
00456 
00457     fRecoEnergyAllEvents_FD=new TH1D
00458                 ("RecoEnergyAllEvents_FD",
00459                  "Selected Events with Reco Energy (FarDet)",
00460                  numRecoBins,recoBinsArray);
00461     fRecoEnergyAllEvents_FD->Sumw2();
00462 
00463     //Checklist histos (CC numubars):
00464     fTrueEnergyCCOnlyEventsPQ_ND=new TH1D
00465                 ("TrueEnergyCCOnlyEventsPQ_ND",
00466                  "NuMuBar CC Selected Events with True Energy (NearDet)",
00467                  numTrueBins,trueBinsArray);
00468     fTrueEnergyCCOnlyEventsPQ_ND->Sumw2();
00469 
00470     fRecoEnergyCCOnlyEventsPQ_ND=new TH1D
00471                 ("RecoEnergyCCOnlyEventsPQ_ND",
00472                  "NuMuBar CC Selected Events with Reco Energy (NearDet)",
00473                  numRecoBins,recoBinsArray);
00474     fRecoEnergyCCOnlyEventsPQ_ND->Sumw2();
00475 
00476     fRecoEnergyAllEventsPQ_ND=new TH1D
00477                 ("RecoEnergyAllEventsPQ_ND",
00478                  "Selected Events with Reco Energy (NearDet)",
00479                  numRecoBins,recoBinsArray);
00480     fRecoEnergyAllEventsPQ_ND->Sumw2();
00481 
00482     fTrueEnergyCCOnlyEventsPQ_FD=new TH1D
00483                 ("TrueEnergyCCOnlyEventsPQ_FD",
00484                  "NuMuBar CC Selected Events with True Energy (FarDet)",
00485                  numTrueBins,trueBinsArray);
00486     fTrueEnergyCCOnlyEventsPQ_FD->Sumw2();
00487 
00488     fRecoEnergyCCOnlyEventsPQ_FD=new TH1D
00489                 ("RecoEnergyCCOnlyEventsPQ_FD",
00490                  "NuMuBar CC Selected Events with Reco Energy (FarDet)",
00491                  numRecoBins,recoBinsArray);
00492     fRecoEnergyCCOnlyEventsPQ_FD->Sumw2();
00493 
00494     fRecoEnergyAllEventsPQ_FD=new TH1D
00495                 ("RecoEnergyAllEventsPQ_FD",
00496                  "Selected Events with Reco Energy (FarDet)",
00497                  numRecoBins,recoBinsArray);
00498     fRecoEnergyAllEventsPQ_FD->Sumw2();
00499 
00500     //Checklist histos (CC numus + CC numubars):
00501     fTrueEnergyCCOnlyEventsAll_ND=new TH1D
00502                 ("TrueEnergyCCOnlyEventsAll_ND",
00503                  "All CC Selected Events with True Energy (NearDet)",
00504                  numTrueBins,trueBinsArray);
00505     fTrueEnergyCCOnlyEventsAll_ND->Sumw2();
00506 
00507     fRecoEnergyCCOnlyEventsAll_ND=new TH1D
00508                 ("RecoEnergyCCOnlyEventsAll_ND",
00509                  "All CC Selected Events with Reco Energy (NearDet)",
00510                  numRecoBins,recoBinsArray);
00511     fRecoEnergyCCOnlyEventsAll_ND->Sumw2();
00512 
00513     fRecoEnergyAllEventsAll_ND=new TH1D
00514                 ("RecoEnergyAllEventsAll_ND",
00515                  "Selected Events with Reco Energy (NearDet)",
00516                  numRecoBins,recoBinsArray);
00517     fRecoEnergyAllEventsAll_ND->Sumw2();
00518 
00519     fTrueEnergyCCOnlyEventsAll_FD=new TH1D
00520                 ("TrueEnergyCCOnlyEventsAll_FD",
00521                  "All CC Selected Events with True Energy (FarDet)",
00522                  numTrueBins,trueBinsArray);
00523     fTrueEnergyCCOnlyEventsAll_FD->Sumw2();
00524 
00525     fRecoEnergyCCOnlyEventsAll_FD=new TH1D
00526                 ("RecoEnergyCCOnlyEventsAll_FD",
00527                  "All CC Selected Events with Reco Energy (FarDet)",
00528                  numRecoBins,recoBinsArray);
00529     fRecoEnergyCCOnlyEventsAll_FD->Sumw2();
00530 
00531     fRecoEnergyAllEventsAll_FD=new TH1D
00532                 ("RecoEnergyAllEventsAll_FD",
00533                  "Selected Events with Reco Energy (FarDet)",
00534                  numRecoBins,recoBinsArray);
00535     fRecoEnergyAllEventsAll_FD->Sumw2();
00536 
00537     //Checklist histos (CC nutaus)
00538     fTrueEnergyCCOnlyEventsTau_FD=new TH1D
00539                 ("TrueEnergyCCOnlyEventsTau_FD",
00540                  "NuTau CC Selected Events with True Energy (FarDet)",
00541                  numTrueBins,trueBinsArray);
00542     fTrueEnergyCCOnlyEventsTau_FD->Sumw2();
00543 
00544     //Checklist histos (CC nutaubars)
00545     fTrueEnergyCCOnlyEventsTauPQ_FD=new TH1D
00546                 ("TrueEnergyCCOnlyEventsTauPQ_FD",
00547                  "NuTauBar CC Selected Events with True Energy (FarDet)",
00548                  numTrueBins,trueBinsArray);
00549     fTrueEnergyCCOnlyEventsTauPQ_FD->Sumw2();
00550 
00551     //Checklist histos (CC nutaus + nutaubars)
00552     fTrueEnergyCCOnlyEventsTauAll_FD=new TH1D
00553                 ("TrueEnergyCCOnlyEventsTauAll_FD",
00554                  "NuTau CC Selected Events with True Energy (FarDet)",
00555                  numTrueBins,trueBinsArray);
00556     fTrueEnergyCCOnlyEventsTauAll_FD->Sumw2();
00557 
00558     //DATA histos (CC numus):
00559     RecoEnergy_ND=new TH1D
00560                 ("RecoEnergy_ND","Reconstructed Energy - Data (NearDet)",
00561                  numRecoBins,recoBinsArray);
00562     RecoEnergy_FD=new TH1D
00563                 ("RecoEnergy_FD","Reconstructed Energy - Data (FarDet)",
00564                  numRecoBins,recoBinsArray);
00565 
00566     //DATA histos (CC numubars):
00567     RecoEnergyPQ_ND=new TH1D
00568                 ("RecoEnergyPQ_ND","Reconstructed Energy - Data (NearDet)",
00569                  numRecoBins,recoBinsArray);
00570     RecoEnergyPQ_FD=new TH1D
00571       ("RecoEnergyPQ_FD","Reconstructed Energy - Data (FarDet)",
00572        numRecoBins,recoBinsArray);
00573 
00574     //DATA histos (Pure Reco Energys)
00575     RecoEnergyTrueTauPQ_FD=new TH1D
00576       ("RecoEnergyTrueTauPQ_FD","Reconstructed Energy - Data (True anti tau FarDet)",
00577        numRecoBins,recoBinsArray);
00578     RecoEnergyTrueMuonPQ_FD=new TH1D
00579       ("RecoEnergyTrueMuonPQ_FD","Reconstructed Energy - Data (True anti muon FarDet)",
00580        numRecoBins,recoBinsArray);
00581     RecoEnergyTrueTauNQ_FD=new TH1D
00582   ("RecoEnergyTrueTauNQ_FD","Reconstructed Energy - Data (True tau FarDet)",
00583    numRecoBins,recoBinsArray);
00584     RecoEnergyTrueMuonNQ_FD=new TH1D
00585       ("RecoEnergyTrueMuonNQ_FD","Reconstructed Energy - Data (True muon FarDet)",
00586        numRecoBins,recoBinsArray);
00587 
00588     RecoEnergyTrueTauPQ_ND=new TH1D
00589   ("RecoEnergyTrueTauPQ_ND","Reconstructed Energy - Data (True anti tau NearDet)",
00590    numRecoBins,recoBinsArray);
00591     RecoEnergyTrueMuonPQ_ND=new TH1D
00592       ("RecoEnergyTrueMuonPQ_ND","Reconstructed Energy - Data (True anti muon NearDet)",
00593        numRecoBins,recoBinsArray);
00594     RecoEnergyTrueTauNQ_ND=new TH1D
00595       ("RecoEnergyTrueTauNQ_ND","Reconstructed Energy - Data (True tau NearDet)",
00596        numRecoBins,recoBinsArray);
00597     RecoEnergyTrueMuonNQ_ND=new TH1D
00598       ("RecoEnergyTrueMuonNQ_ND","Reconstructed Energy - Data (True muon NearDet)",
00599        numRecoBins,recoBinsArray);
00600 
00601     RecoEnergyWSTauPQ_FD=new TH1D
00602       ("RecoEnergyWSTauPQ_FD","Reconstructed Energy - Data (WS tau FarDet)",
00603        numRecoBins,recoBinsArray);
00604     RecoEnergyWSMuonPQ_FD=new TH1D
00605       ("RecoEnergyWSMuonPQ_FD","Reconstructed Energy - Data (WS muon FarDet)",
00606        numRecoBins,recoBinsArray);
00607     RecoEnergyWSTauNQ_FD=new TH1D
00608       ("RecoEnergyWSTauNQ_FD","Reconstructed Energy - Data (WS anti tau FarDet)",
00609        numRecoBins,recoBinsArray);
00610     RecoEnergyWSMuonNQ_FD=new TH1D
00611       ("RecoEnergyWSMuonNQ_FD","Reconstructed Energy - Data (WS anti muon FarDet)",
00612        numRecoBins,recoBinsArray);
00613 
00614     RecoEnergyWSTauPQ_ND=new TH1D
00615       ("RecoEnergyWSTauPQ_ND","Reconstructed Energy - Data (WS tau NearDet)",
00616        numRecoBins,recoBinsArray);
00617     RecoEnergyWSMuonPQ_ND=new TH1D
00618       ("RecoEnergyWSMuonPQ_ND","Reconstructed Energy - Data (WS muon NearDet)",
00619        numRecoBins,recoBinsArray);
00620     RecoEnergyWSTauNQ_FD=new TH1D
00621       ("RecoEnergyWSTauNQ_ND","Reconstructed Energy - Data (WS anti tau NearDet)",
00622        numRecoBins,recoBinsArray);
00623     RecoEnergyWSMuonNQ_ND=new TH1D
00624       ("RecoEnergyWSMuonNQ_ND","Reconstructed Energy - Data (WS anti muon NearDet)",
00625        numRecoBins,recoBinsArray);
00626 
00627 
00628     //DATA histos (CC numus + CC numubars):
00629     RecoEnergyAll_ND=new TH1D
00630                 ("RecoEnergyAll_ND","Reconstructed Energy - Data (NearDet)",
00631                  numRecoBins,recoBinsArray);
00632     RecoEnergyAll_FD=new TH1D
00633                 ("RecoEnergyAll_FD","Reconstructed Energy - Data (FarDet)",
00634                  numRecoBins,recoBinsArray);
00635 
00636         poKinPQ = new TH1F("poKinPQ", "poKin Value for PQ Events;poKIN", 100, -1., 1.);
00637         roIdPQ = new TH1F("roIdPQ", "roID Value for PQ Events;roID", 100, 0., 1.);
00638         dpIdPQ = new TH1F("dpIdPQ", "dpID Value for PQ Events;dpID", 100, -1., 1.);
00639         trkLPQ = new TH1F("trkLPQ", "trkLength for PQ Events;Track Length", 500, -10., 490.);
00640         relAPQ = new TH1F("relAPQ", "|Relative Angle - #pi| for PQ Events", 100, 0., 3.14159);
00641         relAPQ1 = new TH1F("relAPQ1","Relative Angle for PQ Events", 60, 0, 6.28);
00642         relAngVsTrkEndX = new TH2F("relAngVsTrkEndX", "Rel. Angle vs xTrkEnd for PQ", 100, -5., 5., 100, 2.0, 3.14159);
00643         relAngVsTrkEndY = new TH2F("relAngVsTrkEndY", "Rel. Angle vs yTrkEnd for PQ", 100, -3.5, 3.5, 100, 2.0, 3.14159);
00644         relAngVsTrkEndZ = new TH2F("relAngVsTrkEndZ", "Rel. Angle vs zTrkEnd for PQ", 100, 0., 18., 100, 2.0, 3.14159);
00645         relANQ = new TH1F("relANQ", "|Relative Angle - #pi| for NQ Events", 100, 0., 3.14159);
00646         qp_sigmaqpPQ = new TH1F("qp_sigmaqpPQ", "qp/#sigma qp for PQ Events", 320, -16, 16.);
00647         majCPQ = new TH1F("majCPQ", "Majority Curvature for PQ Events;Majority Curvature", 100, -1., 1.);
00648         probPQ = new TH1F("probPQ", "prob for PQ Events;Prob", 100, 0., 1.);
00649   }
00650 
00651   Float_t weight=nu.rw;
00652 
00653   if (nu.simFlag==SimFlag::kMC) {
00654     if (nu.charge==-1) {
00655       //fill histos
00656       if (nu.detector==Detector::kNear) {
00657         fRecoEnergyAllEvents_ND->Fill(nu.energy,weight);
00658         if(nu.iaction==1 && nu.inu==14) {
00659           fRecoEnergyCCOnlyEvents_ND->Fill(nu.energy,weight);
00660           fTrueEnergyCCOnlyEvents_ND->Fill(fabs(nu.energyMC),weight);
00661           fPurity_ND->Fill(nu.energy,weight);
00662           fEfficiency_ND->Fill(fabs(nu.energyMC),weight);
00663           fRecoVsTrueEnergy_ND->Fill(fabs(nu.energyMC),
00664                                      nu.energy,weight);
00665         }
00666         else if (nu.iaction==1 && nu.inu==-14){
00667           fCCContamination_ND->Fill(nu.energy,weight);
00668         }
00669         else {
00670           fNCContamination_ND->Fill(nu.energy,weight);
00671         }
00672       }
00673       else if (nu.detector==Detector::kFar) {
00674         fRecoEnergyAllEvents_FD->Fill(nu.energy,weight);
00675         if(nu.iaction==1 && nu.inu==14) {
00676           fRecoEnergyCCOnlyEvents_FD->Fill(nu.energy,weight);
00677           fTrueEnergyCCOnlyEvents_FD->Fill(fabs(nu.energyMC),weight);
00678           fPurity_FD->Fill(nu.energy,weight);
00679           fEfficiency_FD->Fill(fabs(nu.energyMC),weight);
00680           fRecoVsTrueEnergy_FD->Fill(fabs(nu.energyMC),
00681                                      nu.energy,weight);
00682         }
00683         else if (nu.iaction==1 && nu.inu==-14){
00684           fCCContamination_FD->Fill(fabs(nu.energyMC),weight);
00685           fCCContaminationRecoVsTrue_FD->Fill(fabs(nu.energyMC),
00686                                               nu.energy,
00687                                               weight);
00688         }
00689         else if (nu.iaction==1 && nu.inu==16 && nu.inunoosc==14){
00690           fEfficiencyTau_FD->Fill(fabs(nu.energyMC),weight);
00691           fTrueEnergyCCOnlyEventsTau_FD->Fill(fabs(nu.energyMC),weight);
00692           fRecoVsTrueEnergyTau_FD->Fill(fabs(nu.energyMC),
00693                                         nu.energy,weight);
00694         }
00695         else {
00696           fNCContamination_FD->Fill(nu.energy,weight);
00697         }
00698       }
00699       else cout<<"ahhhh, det="<<nu.detector<<endl;
00700     }
00701     if (nu.charge==1) {
00702       //fill histos
00703       if (nu.detector==Detector::kNear) {
00704         fRecoEnergyAllEventsPQ_ND->Fill(nu.energy,weight);
00705         if(nu.iaction==1 && nu.inu==-14) {
00706           fRecoEnergyCCOnlyEventsPQ_ND->Fill(nu.energy,weight);
00707           fTrueEnergyCCOnlyEventsPQ_ND->Fill(fabs(nu.energyMC),weight);
00708           fPurityPQ_ND->Fill(nu.energy,weight);
00709           fEfficiencyPQ_ND->Fill(fabs(nu.energyMC),weight);
00710           fRecoVsTrueEnergyPQ_ND->Fill(fabs(nu.energyMC),
00711                                        nu.energy,weight);
00712         }
00713         else if (nu.iaction==1 && nu.inu==14){
00714           fCCContaminationPQ_ND->Fill(nu.energy,weight);
00715         }
00716         else {
00717           fNCContaminationPQ_ND->Fill(nu.energy,weight);
00718         }
00719       }
00720       else if (nu.detector==Detector::kFar) {
00721         fRecoEnergyAllEventsPQ_FD->Fill(nu.energy,weight);
00722         if(nu.iaction==1 && nu.inu==-14) {
00723           fRecoEnergyCCOnlyEventsPQ_FD->Fill(nu.energy,weight);
00724           fTrueEnergyCCOnlyEventsPQ_FD->Fill(fabs(nu.energyMC),weight);
00725           fPurityPQ_FD->Fill(nu.energy,weight);
00726           fEfficiencyPQ_FD->Fill(fabs(nu.energyMC),weight);
00727           fRecoVsTrueEnergyPQ_FD->Fill(fabs(nu.energyMC),
00728                                        nu.energy,weight);
00729         }
00730         else if (nu.iaction==1 && nu.inu==14){
00731           fCCContaminationPQ_FD->Fill(fabs(nu.energyMC),weight);
00732           fCCContaminationRecoVsTruePQ_FD->Fill(fabs(nu.energyMC),
00733                                                 nu.energy,
00734                                                 weight);
00735         }
00736         else if (nu.iaction==1 && nu.inu==-16 && nu.inunoosc==-14){
00737           fEfficiencyTauPQ_FD->Fill(fabs(nu.energyMC),weight);
00738           fTrueEnergyCCOnlyEventsTauPQ_FD->Fill(fabs(nu.energyMC),weight);
00739           fRecoVsTrueEnergyTauPQ_FD->Fill(fabs(nu.energyMC),
00740                                           nu.energy,weight);
00741         }
00742         else {
00743           fNCContaminationPQ_FD->Fill(nu.energy,weight);
00744         }
00745       }
00746       else cout<<"ahhhh, det="<<nu.detector<<endl;
00747     }
00748     if ((nu.charge==1) || (-1==nu.charge)) {
00749       //fill histos
00750       if (nu.detector==Detector::kNear) {
00751         fRecoEnergyAllEventsAll_ND->Fill(nu.energy,weight);
00752         if(nu.iaction==1 && (nu.inu==-14 || nu.inu == 14)) {
00753           fRecoEnergyCCOnlyEventsAll_ND->Fill(nu.energy,weight);
00754           fTrueEnergyCCOnlyEventsAll_ND->Fill(fabs(nu.energyMC),weight);
00755           fPurityAll_ND->Fill(nu.energy,weight);
00756           fEfficiencyAll_ND->Fill(fabs(nu.energyMC),weight);
00757           fRecoVsTrueEnergyAll_ND->Fill(fabs(nu.energyMC),
00758                                         nu.energy,weight);
00759         }
00760       }
00761       else if (nu.detector==Detector::kFar) {
00762         fRecoEnergyAllEventsAll_FD->Fill(nu.energy,weight);
00763         if(nu.iaction==1 && (nu.inu==-14 || nu.inu == 14)) {
00764           fRecoEnergyCCOnlyEventsAll_FD->Fill(nu.energy,weight);
00765           fTrueEnergyCCOnlyEventsAll_FD->Fill(fabs(nu.energyMC),weight);
00766           fPurityAll_FD->Fill(nu.energy,weight);
00767           fEfficiencyAll_FD->Fill(fabs(nu.energyMC),weight);
00768           fRecoVsTrueEnergyAll_FD->Fill(fabs(nu.energyMC),
00769                                         nu.energy,weight);
00770         }
00771         else if (nu.iaction==1 && (nu.inu==-16 || nu.inu == 16)
00772                  && (nu.inunoosc == -14 || nu.inunoosc == 14)){
00773           fEfficiencyTauAll_FD->Fill(fabs(nu.energyMC),weight);
00774           fTrueEnergyCCOnlyEventsTauAll_FD->Fill(fabs(nu.energyMC),weight);
00775           fRecoVsTrueEnergyTauAll_FD->Fill(fabs(nu.energyMC),
00776                                           nu.energy,weight);
00777         }
00778       }
00779       else cout<<"ahhhh, det="<<nu.detector<<endl;
00780     }
00781   }
00782 
00783   Bool_t oscillateData = false;
00784   Double_t oscWeight = 1.0;
00785   Double_t s2t = 1.0;
00786   Double_t dm2 = 2.3e-3;
00787   if (oscillateData && nu.energyMC && nu.iaction==1 && abs(nu.inu)==14){
00788     oscWeight = NuUtilities::OscillationWeight(nu.energyMC, dm2, s2t);
00789   }
00790 
00791   if (nu.charge==-1) {
00792     if (nu.detector==Detector::kNear) {
00793       RecoEnergy_ND->Fill(nu.energy,weight);
00794     }
00795     else if (nu.detector==Detector::kFar) {
00796       RecoEnergy_FD->Fill(nu.energy,weight*oscWeight);
00797     }
00798     else cout<<"ahhhh, det="<<nu.detector<<endl;
00799   }
00800   if (nu.charge==1) {
00801     if (nu.detector==Detector::kNear) {
00802       RecoEnergyPQ_ND->Fill(nu.energy,weight);
00803     }
00804     else if (nu.detector==Detector::kFar) {
00805       RecoEnergyPQ_FD->Fill(nu.energy,weight*oscWeight);
00806     }
00807     else cout<<"ahhhh, det="<<nu.detector<<endl;
00808   }
00809   if(nu.detector==Detector::kFar&&nu.iaction==1){
00810     if(nu.inu==-16&&nu.charge==1&& nu.inunoosc==-14){
00811       RecoEnergyTrueTauPQ_FD->Fill(nu.energy,weight*oscWeight);
00812     }
00813     if(nu.inu==16&&nu.charge==1&& nu.inunoosc==14){
00814       RecoEnergyWSTauPQ_FD->Fill(nu.energy,weight*oscWeight);
00815     }
00816     if(nu.inu==-14&&nu.charge==1){
00817       RecoEnergyTrueMuonPQ_FD->Fill(nu.energy,weight*oscWeight);
00818     }
00819     if(nu.inu==14&&nu.charge==1){
00820       RecoEnergyWSMuonPQ_FD->Fill(nu.energy,weight*oscWeight);
00821     }
00822     if(nu.inu==16&&nu.charge==-1&& nu.inunoosc==14){
00823       RecoEnergyTrueTauNQ_FD->Fill(nu.energy,weight*oscWeight);
00824     }
00825     if(nu.inu==-16&&nu.charge==-1&& nu.inunoosc==-14){
00826       RecoEnergyWSTauNQ_FD->Fill(nu.energy,weight*oscWeight);
00827     }
00828     if(nu.inu==14&&nu.charge==-1){
00829       RecoEnergyTrueMuonNQ_FD->Fill(nu.energy,weight*oscWeight);
00830     }
00831     if(nu.inu==-14&&nu.charge==-1){
00832       RecoEnergyWSMuonNQ_FD->Fill(nu.energy,weight*oscWeight);
00833     }
00834   }
00835   else if(nu.detector==Detector::kNear&&nu.iaction==1){
00836     if(nu.inu==-16&&nu.charge==1&& nu.inunoosc==-14){
00837       RecoEnergyTrueTauPQ_ND->Fill(nu.energy,weight*oscWeight);
00838     }
00839     if(nu.inu==16&&nu.charge==1&& nu.inunoosc==14){
00840       RecoEnergyWSTauPQ_ND->Fill(nu.energy,weight*oscWeight);
00841     }
00842     if(nu.inu==-14&&nu.charge==1){
00843       RecoEnergyTrueMuonPQ_ND->Fill(nu.energy,weight*oscWeight);
00844     }
00845     if(nu.inu==14&&nu.charge==1){
00846       RecoEnergyWSMuonPQ_ND->Fill(nu.energy,weight*oscWeight);
00847     }
00848     if(nu.inu==16&&nu.charge==-1&& nu.inunoosc==14){
00849       RecoEnergyTrueTauNQ_ND->Fill(nu.energy,weight*oscWeight);
00850     }
00851     if(nu.inu==-16&&nu.charge==-1&& nu.inunoosc==-14){
00852       RecoEnergyWSTauNQ_ND->Fill(nu.energy,weight*oscWeight);
00853     }
00854     if(nu.inu==14&&nu.charge==-1){
00855       RecoEnergyTrueMuonNQ_ND->Fill(nu.energy,weight*oscWeight);
00856     }
00857     if(nu.inu==-14&&nu.charge==-1){
00858       RecoEnergyWSMuonNQ_ND->Fill(nu.energy,weight*oscWeight);
00859     }
00860   }
00861 
00862   if (nu.charge==1 || -1==nu.charge) {
00863     if (nu.detector==Detector::kNear) {
00864       RecoEnergyAll_ND->Fill(nu.energy,weight);
00865     }
00866     else if (nu.detector==Detector::kFar) {
00867       RecoEnergyAll_FD->Fill(nu.energy,weight*oscWeight);
00868     }
00869     else cout<<"ahhhh, det="<<nu.detector<<endl;
00870   }
00871 
00872 
00873     // Do the cut variables...
00874     if (nu.charge == 1) {
00875       if (weight != 0.)
00876         {
00877           //      cout<<"check if weights are correct = "<<weight<<endl;
00878         }
00879     poKinPQ->Fill(nu.poIDKin,weight);
00880     roIdPQ->Fill(nu.roID,weight);
00881     dpIdPQ->Fill(nu.dpID,weight);
00882     trkLPQ->Fill(nu.trkLength,weight);
00883     relAPQ->Fill(abs(nu.relativeAngle-TMath::Pi()),weight);
00884     relAPQ1->Fill(nu.relativeAngle,weight);
00885     relAngVsTrkEndX->Fill(nu.xTrkEnd,abs(nu.relativeAngle-TMath::Pi()),weight);
00886     relAngVsTrkEndY->Fill(nu.yTrkEnd,abs(nu.relativeAngle-TMath::Pi()),weight);
00887     relAngVsTrkEndZ->Fill(nu.zTrkEnd,abs(nu.relativeAngle-TMath::Pi()),weight);
00888     qp_sigmaqpPQ->Fill(1./nu.sigqp_qp,weight);
00889     majCPQ->Fill(nu.smoothMajC,weight);
00890     probPQ->Fill(nu.prob,weight);
00891   }
00892 }

void NuHistos::FillMatrixMethodNCHistos const NuEvent nu,
const NuBinningScheme::NuBinningScheme_t  binningScheme = NuBinningScheme::kUnknown
const
 

Definition at line 897 of file NuHistos.cxx.

References abs(), det, NuEvent::detector, ENCTruth::ENCTruth_t, NuEvent::energy, NuEvent::iaction, NuEvent::inu, ENCTruth::kNumTruths, MAXMSG, MSG, NuEvent::neuEnMC, NuUtilities::RecoBins(), NuEvent::rw, NuUtilities::TrueBins(), and ENCTruth::truthNames.

Referenced by NuDSTAna::MMRereco().

00900 {
00901   MAXMSG("NuHistos",Msg::kInfo,1)
00902     <<"Running FillMatrixMethodNCHistos..."<<endl;
00903 
00904   //DATA histos (NCs)
00905   static TH1D* recoEnergy_ND_NC = 0;
00906   static TH1D* recoEnergy_FD_NC = 0;
00907   static TH2D* recoVsTrueEnergy_ND_NC = 0;
00908   static TH2D* recoVsTrueEnergy_FD_NC = 0;
00909 
00910   static TH2D* recoVsTrueEnergy_truly[kNumTruths][2] = {{0,},}; // ND, FD
00911 
00912   if(!recoEnergy_ND_NC){ // If not initialized
00913     MSG("NuHistos",Msg::kInfo)
00914       <<"Creating histograms on first run of FillMatrixMethodNCHistos..."
00915       <<" gDirectory gives:"<<endl;
00916           gDirectory->Print();
00917 
00918     const NuUtilities cuts;
00919     const vector<Double_t> recoBins = cuts.RecoBins(binningScheme);
00920     const Int_t numRecoBins = recoBins.size()-1;
00921     const Double_t* recoBinsArray = &recoBins[0];
00922 
00923     const vector<Double_t> trueBins = cuts.TrueBins(binningScheme);
00924     const Int_t numTrueBins = trueBins.size()-1;
00925     const Double_t* trueBinsArray = &trueBins[0];
00926 
00927     recoEnergy_ND_NC=new TH1D
00928       ("RecoEnergy_ND_NC","Reconstructed NC Energy - Data (NearDet)",
00929        numRecoBins, recoBinsArray);
00930     recoEnergy_FD_NC=new TH1D
00931       ("RecoEnergy_FD_NC","Reconstructed NC Energy - Data (FarDet)",
00932        numRecoBins, recoBinsArray);
00933 
00934     recoVsTrueEnergy_ND_NC=new TH2D
00935       ("RecoVsTrueEnergy_ND_NC",
00936        "Reco Vs True Energy (NearDet);True neutrino energy;Reconstructed energy",
00937        numTrueBins, trueBinsArray,
00938        numRecoBins, recoBinsArray);
00939     recoVsTrueEnergy_ND_NC->Sumw2();
00940 
00941     recoVsTrueEnergy_FD_NC=new TH2D
00942       ("RecoVsTrueEnergy_FD_NC",
00943        "Reco Vs True Energy (FarDet);True neutrino energy;Reconstructed energy",
00944        numTrueBins, trueBinsArray,
00945        numRecoBins, recoBinsArray);
00946     recoVsTrueEnergy_FD_NC->Sumw2();
00947 
00948     for(int truth = 0; truth < kNumTruths; ++truth){
00949       recoVsTrueEnergy_truly[truth][0] =
00950         new TH2D("RecoVsTrueEnergy_truly"+truthNames[truth]+"_ND_NC",
00951                  "Reco Vs True Energy (NearDet);"
00952                  "True neutrino energy;Reconstructed energy",
00953                  numTrueBins, trueBinsArray, numRecoBins, recoBinsArray);
00954 
00955       recoVsTrueEnergy_truly[truth][1] =
00956         new TH2D("RecoVsTrueEnergy_truly"+truthNames[truth]+"_FD_NC",
00957                  "Reco Vs True Energy (FarDet);"
00958                  "True neutrino energy; Reconstructed energy",
00959                  numTrueBins, trueBinsArray, numRecoBins, recoBinsArray);
00960     } // end for truth
00961   } // end if not initialized
00962 
00963   assert(nu.detector == Detector::kNear || nu.detector == Detector::kFar);
00964 
00965   // TODO CJB Use NC energy
00966   //  if(nu.detector == Detector::kNear) recoEnergy_ND_NC->Fill(nu.energy, nu.rw);
00967   //  if(nu.detector == Detector::kFar)  recoEnergy_FD_NC->Fill(nu.energy, nu.rw);
00968 
00969   ENCTruth_t truth = kNumTruths;
00970   if(abs(nu.inu) == 12 && nu.iaction == 1) truth = kCCe;
00971   if(nu.inu == +14 && nu.iaction == 1) truth = kCCmu;
00972   if(nu.inu == -14 && nu.iaction == 1) truth = kCCmubar;
00973   if(nu.inu == +16 && nu.iaction == 1) truth = kCCtau;
00974   if(nu.inu == -16 && nu.iaction == 1) truth = kCCtaubar;
00975   if(nu.inu > 0    && nu.iaction == 0) truth = kNC;
00976   if(nu.inu < 0    && nu.iaction == 0) truth = kNCbar;
00977   assert(truth != kNumTruths);
00978 
00979   const int det = int(nu.detector == Detector::kFar);
00980 
00981   // TODO CJB Use NC energy
00982   recoVsTrueEnergy_truly[truth][det]->Fill(fabs(nu.neuEnMC), nu.energy, nu.rw);
00983 
00984 
00985   switch(nu.detector){
00986   case Detector::kNear:
00987     // TODO CJB use NC energy
00988     //    recoEnergy_ND_NC->Fill(nu.energyNC, nu.rw);
00989     //    recoVsTrueEnergy_ND_NC->Fill(fabs(nu.neuEnMC), nu.energyNC, nu.rw);
00990     recoEnergy_ND_NC->Fill(nu.energy, nu.rw);
00991     recoVsTrueEnergy_ND_NC->Fill(fabs(nu.neuEnMC), nu.energy, nu.rw);
00992     break;
00993   case Detector::kFar:
00994     // TODO CJB use NC energy
00995     //    recoEnergy_FD_NC->Fill(nu.energyNC, nu.rw);
00996     //    recoVsTrueEnergy_FD_NC->Fill(fabs(nu.neuEnMC), nu.energyNC, nu.rw);
00997     recoEnergy_FD_NC->Fill(nu.energy, nu.rw);
00998     recoVsTrueEnergy_FD_NC->Fill(fabs(nu.neuEnMC), nu.energy, nu.rw);
00999     break;
01000   default:
01001     cout<<"ahhhh, det="<<nu.detector<<endl;
01002     assert(0 && "bad detector");
01003   }
01004 }


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:09:52 2010 for loon by  doxygen 1.3.9.1