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

NuCrossSectionFitter Class Reference

#include <NuCrossSectionFitter.h>

List of all members.

Public Member Functions

 NuCrossSectionFitter ()
 NuCrossSectionFitter (const NuXMLConfig &xmlConfig)
virtual ~NuCrossSectionFitter ()
virtual void CalculateFDWeights ()
virtual void FakeParameters (const std::vector< Double_t > fakePars)
virtual const std::vector<
Double_t > 
GetFDWeights ()
virtual void NDData (const std::string ndDataFileName)
virtual void NDNuMuCCData (const TH1D &ndData)
virtual void NDNuMuBarCCData (const TH1D &ndData)
virtual void NDDataPoT (const Double_t pot)
virtual void NDMC (const std::string ndMCFileName)
virtual void NDRecoENuMuCCBins (const std::vector< Double_t > vNDRecoENuMuCCBins)
virtual void NDRecoENuMuBarCCBins (const std::vector< Double_t > vNDRecoENuMuBarCCBins)
virtual void NDTrueENuMuCCBins (const std::vector< Double_t > vNDTrueENuMuCCBins)
virtual void NDTrueENuMuBarCCBins (const std::vector< Double_t > vNDTrueENuMuBarCCBins)
virtual void NDFakeTrueENuMuCCBins (const std::vector< Double_t > vNDFakeTrueENuMuCCBins)
virtual void NDFakeTrueENuMuBarCCBins (const std::vector< Double_t > vNDFakeTrueENuMuBarCCBins)
virtual double operator() (const std::vector< double > &x) const
virtual void OutputFileName (const std::string outFile)
virtual const NuXSecFit::NuSelectionResult_t SelectedAs (NuEvent &nuEvent) const
virtual void SelectionScheme (const NuCuts::NuAnaVersion_t anaVersion=NuCuts::kCC0250Std)
virtual double Up () const

Private Member Functions

virtual const Bool_t CacheNDMCEvents ()
virtual const Double_t CalculateLikelihood () const
virtual const Bool_t Config ()
virtual const Bool_t ConfigND ()
virtual const Bool_t ConfigFD ()
virtual const Bool_t CreateNDHistograms ()
virtual const Bool_t CreateNDNuMuCCDataHisto ()
virtual const Bool_t CreateNDNuMuBarCCDataHisto ()
virtual const Bool_t CreateNDNuMuCCMCHisto ()
virtual const Bool_t CreateNDNuMuBarCCMCHisto ()
virtual const Bool_t CreateNDRawMCRecoECCNuMuHisto ()
virtual const Bool_t CreateNDRawMCRecoECCNuMuBarHisto ()
virtual const Bool_t CreateNDRawMCTrueECCNuMuHisto ()
virtual const Bool_t CreateNDRawMCTrueECCNuMuBarHisto ()
virtual const Bool_t DoNDFit ()
virtual const Int_t FakeTruthIndex (const NuEvent &info) const
virtual const Bool_t FillNDDataHistograms ()
virtual void FillSmooth (const TH1D *, Double_t, Double_t) const
virtual void FillTruthWeightedHistograms (const std::vector< double > &par) const
virtual void FillTruthWeightedHistogramsSmooth (const std::vector< double > &par) const
virtual void FixAllParsExcept (const Int_t freeparnum)
virtual const std::vector<
Double_t > 
GetBestFitPars () const
virtual void ReleaseNonOverflowNonNDFitPars ()
virtual void ReleaseNonOverflowPars ()
virtual const NuCuts::NuAnaVersion_t SelectionScheme () const
virtual void SetupPars ()
virtual const Int_t TruthIndex (const NuEvent &info) const

Private Attributes

Double_t fndDataPoT
Double_t fndMCPoT
NuCuts::NuAnaVersion_t fanaVersion
TFitterMinuit * fFitter
TFile * fOutputFile
TH1D * fhNDMCRecoENuMuCC
TH1D * fhNDMCRecoENuMuBarCC
TH1D * fhNDDataRecoENuMuCC
TH1D * fhNDDataRecoENuMuBarCC
TH1D * fhNDRawMCTrueECCNuMu
TH1D * fhNDRawMCTrueECCNuMuBar
TH1D * fhNDRawMCRecoECCNuMu
TH1D * fhNDRawMCRecoECCNuMuBar
TH1D * fhNDNuMuCCDataFromFile
TH1D * fhNDNuMuBarCCDataFromFile
std::vector< Double_t > fvNDRecoENuMuCCBins
std::vector< Double_t > fvNDRecoENuMuBarCCBins
std::vector< Double_t > fvNDTrueENuMuCCBins
std::vector< Double_t > fvNDTrueENuMuBarCCBins
std::vector< Double_t > fvNDFakeTrueENuMuCCBins
std::vector< Double_t > fvNDFakeTrueENuMuBarCCBins
std::vector< Double_t > fvfakepars
std::vector< NuEventfvNDMCCCNuMuEvents
std::vector< NuEventfvNDMCCCNuMuBarEvents
NuTreeWrapperftNDDataTree
NuTreeWrapperftNDMCTree
NuSystematicfnuSystematic


Constructor & Destructor Documentation

NuCrossSectionFitter::NuCrossSectionFitter  ) 
 

Definition at line 86 of file NuCrossSectionFitter.cxx.

00087   : fndDataPoT(0.0),
00088     fndMCPoT(0.0)
00089 {
00090 //   fanaVersion = NuCuts::kCC0250Std;
00091   fanaVersion = NuCuts::kJJE1;
00092 
00093   fnuSystematic = new NuSystematic();
00094 
00095   fhNDMCRecoENuMuCC = 0;
00096   fhNDMCRecoENuMuBarCC = 0;
00097   fhNDDataRecoENuMuCC = 0;
00098   fhNDDataRecoENuMuBarCC = 0;
00099   fhNDRawMCTrueECCNuMu = 0;
00100   fhNDRawMCTrueECCNuMuBar = 0;
00101   fhNDRawMCRecoECCNuMu = 0;
00102   fhNDRawMCRecoECCNuMuBar = 0;
00103 
00104   fhNDNuMuCCDataFromFile = 0;
00105   fhNDNuMuBarCCDataFromFile = 0;
00106 
00107   fOutputFile = 0;
00108 
00109   ftNDDataTree = 0;
00110   ftNDMCTree = 0;
00111 
00112   fFitter = new TFitterMinuit();
00113   fFitter->CreateMinimizer();
00114   fFitter->SetMinuitFCN(this);
00115   
00116   //ND fake parameters (set to 1.0)
00117   fvNDFakeTrueENuMuCCBins.push_back(30.0);
00118   fvNDFakeTrueENuMuBarCCBins.push_back(30.0);
00119   for (Int_t counter=0; counter<10; ++counter){
00120     fvfakepars.push_back(1.0);
00121   }
00122 }

NuCrossSectionFitter::NuCrossSectionFitter const NuXMLConfig xmlConfig  ) 
 

Definition at line 125 of file NuCrossSectionFitter.cxx.

References fanaVersion, fFitter, fhNDDataRecoENuMuBarCC, fhNDDataRecoENuMuCC, fhNDMCRecoENuMuBarCC, fhNDMCRecoENuMuCC, fhNDNuMuBarCCDataFromFile, fhNDNuMuCCDataFromFile, fhNDRawMCRecoECCNuMu, fhNDRawMCRecoECCNuMuBar, fhNDRawMCTrueECCNuMu, fhNDRawMCTrueECCNuMuBar, fnuSystematic, fOutputFile, ftNDDataTree, ftNDMCTree, fvfakepars, fvNDFakeTrueENuMuBarCCBins, and fvNDFakeTrueENuMuCCBins.

00126   : fndDataPoT(0.0),
00127     fndMCPoT(0.0)
00128 {
00129 //   fanaVersion = NuCuts::kCC0250Std;
00130   fanaVersion = NuCuts::kJJE1;
00131 
00132   fnuSystematic = new NuSystematic(xmlConfig);
00133 
00134   fhNDMCRecoENuMuCC = 0;
00135   fhNDMCRecoENuMuBarCC = 0;
00136   fhNDDataRecoENuMuCC = 0;
00137   fhNDDataRecoENuMuBarCC = 0;
00138   fhNDRawMCTrueECCNuMu = 0;
00139   fhNDRawMCTrueECCNuMuBar = 0;
00140   fhNDRawMCRecoECCNuMu = 0;
00141   fhNDRawMCRecoECCNuMuBar = 0;
00142 
00143   fhNDNuMuCCDataFromFile = 0;
00144   fhNDNuMuBarCCDataFromFile = 0;
00145 
00146   fOutputFile = 0;
00147 
00148   ftNDDataTree = 0;
00149   ftNDMCTree = 0;
00150 
00151   fFitter = new TFitterMinuit();
00152   fFitter->CreateMinimizer();
00153   fFitter->SetMinuitFCN(this);
00154   
00155   //ND fake parameters (set to 1.0)
00156   fvNDFakeTrueENuMuCCBins.push_back(30.0);
00157   fvNDFakeTrueENuMuBarCCBins.push_back(30.0);
00158   for (Int_t counter=0; counter<10; ++counter){
00159     fvfakepars.push_back(1.0);
00160   }
00161 }

NuCrossSectionFitter::~NuCrossSectionFitter  )  [virtual]
 

Definition at line 164 of file NuCrossSectionFitter.cxx.

References fhNDDataRecoENuMuBarCC, fhNDDataRecoENuMuCC, fhNDMCRecoENuMuBarCC, fhNDMCRecoENuMuCC, fhNDNuMuBarCCDataFromFile, fhNDNuMuCCDataFromFile, fhNDRawMCRecoECCNuMu, fhNDRawMCRecoECCNuMuBar, fhNDRawMCTrueECCNuMu, fhNDRawMCTrueECCNuMuBar, fOutputFile, and ftNDDataTree.

00165 {
00166   if (fOutputFile){
00167     fOutputFile->Close();
00168     delete fOutputFile;
00169     fOutputFile = 0;
00170   }
00171   if (fhNDMCRecoENuMuCC){delete fhNDMCRecoENuMuCC; fhNDMCRecoENuMuCC=0;}
00172   if (fhNDMCRecoENuMuBarCC){
00173     delete fhNDMCRecoENuMuBarCC; fhNDMCRecoENuMuBarCC = 0;
00174   }
00175   if (fhNDDataRecoENuMuCC){
00176     delete fhNDDataRecoENuMuCC; fhNDDataRecoENuMuCC = 0;
00177   }
00178   if (fhNDDataRecoENuMuBarCC){
00179     delete fhNDDataRecoENuMuBarCC; fhNDDataRecoENuMuBarCC = 0;
00180   }
00181   if (fhNDRawMCTrueECCNuMu){
00182     delete fhNDRawMCTrueECCNuMu; fhNDRawMCTrueECCNuMu = 0;
00183   }
00184   if (fhNDRawMCTrueECCNuMuBar){
00185     delete fhNDRawMCTrueECCNuMuBar; fhNDRawMCTrueECCNuMuBar = 0;
00186   }
00187   if (fhNDRawMCRecoECCNuMu){
00188     delete fhNDRawMCRecoECCNuMu; fhNDRawMCRecoECCNuMu = 0;
00189   }
00190   if (fhNDRawMCRecoECCNuMuBar){
00191     delete fhNDRawMCRecoECCNuMuBar; fhNDRawMCRecoECCNuMuBar = 0;
00192   }
00193 
00194   if (fhNDNuMuCCDataFromFile){
00195     delete fhNDNuMuCCDataFromFile; fhNDNuMuCCDataFromFile = 0;
00196   }
00197   if (fhNDNuMuBarCCDataFromFile){
00198     delete fhNDNuMuBarCCDataFromFile; fhNDNuMuBarCCDataFromFile = 0;
00199   }
00200 
00201   if (ftNDDataTree){
00202     delete ftNDDataTree; ftNDDataTree = 0;
00203   }
00204 
00205   //Note that the object fFitter newed in the constructor is never
00206   //deleted. This is an intentional memory leak to hack my way around
00207   //typical ROOT stupidity. I have to pass fFitter a this pointer to
00208   //tell it to use this object for its minimisation. If I delete
00209   //fFitter, it promptly runs the destructor of this. This causes an
00210   //infinite chain of destructors which, unsurprisingy, causes a seg
00211   //fault.
00212 }


Member Function Documentation

const Bool_t NuCrossSectionFitter::CacheNDMCEvents  )  [private, virtual]
 

Definition at line 1126 of file NuCrossSectionFitter.cxx.

References NuEvent::energy, fhNDRawMCRecoECCNuMu, fhNDRawMCRecoECCNuMuBar, fhNDRawMCTrueECCNuMu, fhNDRawMCTrueECCNuMuBar, fndDataPoT, fndMCPoT, fnuSystematic, fOutputFile, ftNDMCTree, fvNDMCCCNuMuBarEvents, fvNDMCCCNuMuEvents, NuTreeWrapper::GetEntries(), NuTreeWrapper::GetInfoObject(), MSG, NuEvent::neuEnMC, NuXSecFit::NuSelectionResult_t, NuEvent::rw, SelectedAs(), and NuSystematic::Shift().

Referenced by ConfigND().

01127 {
01128   if (!ftNDMCTree){
01129     MSG("NuCrossSectionFitter",Msg::kWarning)
01130       << "ND MC not supplied"
01131       << endl;
01132     return false;
01133   }
01134 
01135   fvNDMCCCNuMuEvents.clear();
01136   fvNDMCCCNuMuBarEvents.clear();
01137 
01138   MSG("NuCrossSectionFitter",Msg::kInfo)
01139     << "Looping over ND MC:"
01140     << endl;
01141   Int_t mcEntries = ftNDMCTree->GetEntries();
01142   for (Int_t counter = 0;
01143        counter < mcEntries;
01144        ++counter){
01145     if (!(counter%10000)){
01146       MSG("NuCrossSectionFitter",Msg::kInfo)
01147         << counter << " of " << mcEntries
01148         << endl;
01149     }
01150     NuEvent currentEvent = ftNDMCTree->GetInfoObject(counter);
01151     fnuSystematic->Shift(currentEvent);
01152     NuSelectionResult_t recoType = this->SelectedAs(currentEvent);
01153     Double_t eventWeight = currentEvent.rw;
01154     if (NuXSecFit::kCCNuMu==recoType){
01155       fvNDMCCCNuMuEvents.push_back(currentEvent);
01156       fhNDRawMCRecoECCNuMu->Fill(currentEvent.energy,eventWeight);
01157       fhNDRawMCTrueECCNuMu->Fill(currentEvent.neuEnMC,eventWeight);
01158     }
01159     if (NuXSecFit::kCCNuMuBar==recoType){
01160       fvNDMCCCNuMuBarEvents.push_back(currentEvent);
01161       fhNDRawMCRecoECCNuMuBar->Fill(currentEvent.energy,eventWeight);
01162       fhNDRawMCTrueECCNuMuBar->Fill(currentEvent.neuEnMC,eventWeight);
01163     }
01164   }
01165 
01166   if (fndMCPoT){
01167     fhNDRawMCRecoECCNuMu->Scale(fndDataPoT/fndMCPoT);
01168     fhNDRawMCRecoECCNuMuBar->Scale(fndDataPoT/fndMCPoT);
01169     fhNDRawMCTrueECCNuMu->Scale(fndDataPoT/fndMCPoT);
01170     fhNDRawMCTrueECCNuMuBar->Scale(fndDataPoT/fndMCPoT);
01171   }
01172 
01173   fOutputFile->cd();
01174   fhNDRawMCRecoECCNuMu->Write("NDRawMCRecoECCNuMu");
01175   fhNDRawMCTrueECCNuMu->Write("NDRawMCTrueECCNuMu");
01176   fhNDRawMCRecoECCNuMuBar->Write("NDRawMCRecoECCNuMuBar");
01177   fhNDRawMCTrueECCNuMuBar->Write("NDRawMCTrueECCNuMuBar");
01178 
01179   return true;
01180 }

void NuCrossSectionFitter::CalculateFDWeights  )  [virtual]
 

Definition at line 486 of file NuCrossSectionFitter.cxx.

References Config(), DoNDFit(), and MSG.

00487 {
00488   const Bool_t goodConfig = this->Config();
00489   if (!goodConfig){
00490     MSG("NuCrossSectionFitter",Msg::kFatal)
00491       << "About to die due to bad config."
00492       << endl;
00493     return;
00494   }
00495   MSG("NuCrossSectionFitter",Msg::kInfo)
00496     << "Configured successfully. Starting XFit."
00497     << endl;
00498 
00499   this->DoNDFit();
00500 
00501   //  this->FillFDPrediction();
00502 }

const Double_t NuCrossSectionFitter::CalculateLikelihood  )  const [private, virtual]
 

Definition at line 238 of file NuCrossSectionFitter.cxx.

References fhNDDataRecoENuMuBarCC, fhNDDataRecoENuMuCC, fhNDMCRecoENuMuBarCC, and fhNDMCRecoENuMuCC.

Referenced by operator()().

00239 {
00240   //Aim to minimise -2lnL. That's what I'm returning.
00241 
00242   Double_t like = 0;
00243 
00244   for (Int_t i=1; i<=fhNDMCRecoENuMuCC->GetNbinsX(); ++i){
00245     //Bizarre limits because root histograms are silly
00246     Double_t mnu = fhNDMCRecoENuMuCC->GetBinContent(i);
00247     Double_t dnu = fhNDDataRecoENuMuCC->GetBinContent(i);
00248     if (mnu<0.0001){mnu = 0.0001;}
00249     if (dnu){
00250       like += 2*(mnu - dnu + dnu*log(dnu/mnu));
00251     }
00252     else{like += 2*(mnu - dnu);}
00253   }
00254 
00255   for (Int_t i=1; i<=fhNDMCRecoENuMuBarCC->GetNbinsX(); ++i){
00256     Double_t mbar = fhNDMCRecoENuMuBarCC->GetBinContent(i);
00257     Double_t dbar = fhNDDataRecoENuMuBarCC->GetBinContent(i);
00258     if (mbar<0.0001){mbar = 0.0001;}
00259     if (dbar){
00260       like += 2*(mbar - dbar + dbar*log(dbar/mbar));
00261     }
00262     else{like += 2*(mbar - dbar);}
00263   }
00264 //   cout << "Like = " << like << endl;
00265   return like;
00266 }

const Bool_t NuCrossSectionFitter::Config  )  [private, virtual]
 

Definition at line 726 of file NuCrossSectionFitter.cxx.

References ConfigFD(), and ConfigND().

Referenced by CalculateFDWeights().

00727 {
00728   Bool_t goodConfig = true;
00729   if (!this->ConfigND()) goodConfig = false;
00730   if (!this->ConfigFD()) goodConfig = false;
00731   return goodConfig;
00732 }

const Bool_t NuCrossSectionFitter::ConfigFD  )  [private, virtual]
 

Definition at line 760 of file NuCrossSectionFitter.cxx.

Referenced by Config().

00761 {
00762   return true;
00763 }

const Bool_t NuCrossSectionFitter::ConfigND  )  [private, virtual]
 

Definition at line 735 of file NuCrossSectionFitter.cxx.

References CacheNDMCEvents(), CreateNDHistograms(), FillNDDataHistograms(), and MSG.

Referenced by Config().

00736 {
00737   Bool_t goodConfig = true;
00738   if (!this->CreateNDHistograms()) goodConfig = false;
00739 
00740   MSG("NuCrossSectionFitter",Msg::kInfo)
00741     << "NDHistograms created"
00742     << endl;
00743 
00744   if (!this->FillNDDataHistograms()) goodConfig = false;
00745 
00746   MSG("NuCrossSectionFitter",Msg::kInfo)
00747     << "NDHistograms filled"
00748     << endl;
00749 
00750   if (!this->CacheNDMCEvents()) goodConfig = false;
00751 
00752   MSG("NuCrossSectionFitter",Msg::kInfo)
00753     << "ND MC events cached"
00754     << endl;
00755 
00756   return goodConfig;
00757 }

const Bool_t NuCrossSectionFitter::CreateNDHistograms  )  [private, virtual]
 

Definition at line 766 of file NuCrossSectionFitter.cxx.

References CreateNDNuMuBarCCDataHisto(), CreateNDNuMuBarCCMCHisto(), CreateNDNuMuCCDataHisto(), CreateNDNuMuCCMCHisto(), CreateNDRawMCRecoECCNuMuBarHisto(), CreateNDRawMCRecoECCNuMuHisto(), CreateNDRawMCTrueECCNuMuBarHisto(), and CreateNDRawMCTrueECCNuMuHisto().

Referenced by ConfigND().

00767 {
00768   Bool_t goodConfig = true;
00769   if (!this->CreateNDNuMuCCDataHisto()) goodConfig = false;
00770   if (!this->CreateNDNuMuBarCCDataHisto()) goodConfig = false;
00771   if (!this->CreateNDNuMuCCMCHisto()) goodConfig = false;
00772   if (!this->CreateNDNuMuBarCCMCHisto()) goodConfig = false;
00773   if (!this->CreateNDRawMCRecoECCNuMuHisto()) goodConfig = false;
00774   if (!this->CreateNDRawMCRecoECCNuMuBarHisto()) goodConfig = false;
00775   if (!this->CreateNDRawMCTrueECCNuMuHisto()) goodConfig = false;
00776   if (!this->CreateNDRawMCTrueECCNuMuBarHisto()) goodConfig = false;
00777   return goodConfig;
00778 }

const Bool_t NuCrossSectionFitter::CreateNDNuMuBarCCDataHisto  )  [private, virtual]
 

Definition at line 1043 of file NuCrossSectionFitter.cxx.

References fhNDDataRecoENuMuBarCC, fvNDRecoENuMuBarCCBins, and MSG.

Referenced by CreateNDHistograms().

01044 {
01045   if (fhNDDataRecoENuMuBarCC){
01046     delete fhNDDataRecoENuMuBarCC; fhNDDataRecoENuMuBarCC = 0;
01047   }
01048 
01049   Int_t size = fvNDRecoENuMuBarCCBins.size();
01050   if (!size){
01051     MSG("NuCrossSectionFitter",Msg::kWarning)
01052       << "ND reconstructed energy binning not supplied."
01053       << endl;
01054     return false;
01055   }
01056 
01057   Double_t* recoEBinEdges = new Double_t[size];
01058 
01059   Int_t i = 0;
01060   for (vector<Double_t>::const_iterator it =
01061          fvNDRecoENuMuBarCCBins.begin();
01062        it != fvNDRecoENuMuBarCCBins.end();
01063        ++it, ++i){
01064     recoEBinEdges[i] = *it;
01065   }
01066   
01067   fhNDDataRecoENuMuBarCC = new TH1D("fhNDDataRecoENuMuBarCC",
01068                                   "",
01069                                   size-1,
01070                                   recoEBinEdges);
01071 
01072   if (!fhNDDataRecoENuMuBarCC){return false;}
01073   return true;
01074 }

const Bool_t NuCrossSectionFitter::CreateNDNuMuBarCCMCHisto  )  [private, virtual]
 

Definition at line 969 of file NuCrossSectionFitter.cxx.

References fhNDMCRecoENuMuBarCC, fhNDNuMuBarCCDataFromFile, fhNDNuMuCCDataFromFile, fvNDRecoENuMuBarCCBins, MSG, and NuEvent::Reset().

Referenced by CreateNDHistograms().

00970 {
00971   if (fhNDMCRecoENuMuBarCC){
00972     delete fhNDMCRecoENuMuBarCC; fhNDMCRecoENuMuBarCC = 0;
00973   }
00974 
00975   if (fhNDNuMuCCDataFromFile && fhNDNuMuBarCCDataFromFile){
00976     fhNDMCRecoENuMuBarCC = new TH1D(*fhNDNuMuBarCCDataFromFile);
00977     fhNDMCRecoENuMuBarCC->Reset();
00978     return true;
00979   }
00980 
00981   Int_t size = fvNDRecoENuMuBarCCBins.size();
00982   if (!size){
00983     MSG("NuCrossSectionFitter",Msg::kWarning)
00984       << "ND reconstructed energy binning not supplied."
00985       << endl;
00986     return false;
00987   }
00988 
00989   Double_t* recoEBinEdges = new Double_t[size];
00990 
00991   Int_t i=0;
00992   for (vector<Double_t>::const_iterator it =
00993          fvNDRecoENuMuBarCCBins.begin();
00994        it != fvNDRecoENuMuBarCCBins.end();
00995        ++it, ++i){
00996     recoEBinEdges[i] = *it;
00997   }
00998   
00999   fhNDMCRecoENuMuBarCC = new TH1D("fhNDMCRecoENuMuBarCC",
01000                                   "",
01001                                   size-1,
01002                                   recoEBinEdges);
01003 
01004   if (!fhNDMCRecoENuMuBarCC){return false;}
01005   return true;
01006 }

const Bool_t NuCrossSectionFitter::CreateNDNuMuCCDataHisto  )  [private, virtual]
 

Definition at line 1009 of file NuCrossSectionFitter.cxx.

References fhNDDataRecoENuMuCC, fvNDRecoENuMuCCBins, and MSG.

Referenced by CreateNDHistograms().

01010 {
01011   if (fhNDDataRecoENuMuCC) {
01012     delete fhNDDataRecoENuMuCC; fhNDDataRecoENuMuCC = 0;
01013   }
01014 
01015   Int_t size = fvNDRecoENuMuCCBins.size();
01016   if (!size){
01017     MSG("NuCrossSectionFitter",Msg::kWarning)
01018       << "ND reconstructed energy binning not supplied."
01019       << endl;
01020     return false;
01021   }
01022 
01023   Double_t* recoEBinEdges = new Double_t[size];
01024 
01025   Int_t i=0;
01026   for (vector<Double_t>::const_iterator it =
01027          fvNDRecoENuMuCCBins.begin();
01028        it != fvNDRecoENuMuCCBins.end();
01029        ++it, ++i){
01030     recoEBinEdges[i] = *it;
01031   }
01032 
01033   fhNDDataRecoENuMuCC = new TH1D("fhNDDataRecoENuMuCC",
01034                                "",
01035                                  size-1,
01036                                recoEBinEdges);
01037 
01038   if (!fhNDDataRecoENuMuCC) return false;
01039   return true;
01040 }

const Bool_t NuCrossSectionFitter::CreateNDNuMuCCMCHisto  )  [private, virtual]
 

Definition at line 781 of file NuCrossSectionFitter.cxx.

References fhNDMCRecoENuMuCC, fhNDNuMuCCDataFromFile, fvNDRecoENuMuCCBins, MSG, and NuEvent::Reset().

Referenced by CreateNDHistograms().

00782 {
00783   if (fhNDMCRecoENuMuCC) {
00784     delete fhNDMCRecoENuMuCC; fhNDMCRecoENuMuCC = 0;
00785   }
00786 
00787   if (fhNDNuMuCCDataFromFile && fhNDNuMuBarCCDataFromFile){
00788     fhNDMCRecoENuMuCC = new TH1D(*fhNDNuMuCCDataFromFile);
00789     fhNDMCRecoENuMuCC->Reset();
00790     return true;
00791   }
00792 
00793   Int_t size = fvNDRecoENuMuCCBins.size();
00794   if (!size){
00795     MSG("NuCrossSectionFitter",Msg::kWarning)
00796       << "ND reconstructed energy binning not supplied."
00797       << endl;
00798     return false;
00799   }
00800 
00801   Double_t* recoEBinEdges = new Double_t[size];
00802 
00803   Int_t i=0;
00804   for (vector<Double_t>::const_iterator it =
00805          fvNDRecoENuMuCCBins.begin();
00806        it != fvNDRecoENuMuCCBins.end();
00807        ++it, ++i){
00808     recoEBinEdges[i] = *it;
00809   }
00810 
00811   fhNDMCRecoENuMuCC = new TH1D("fhNDMCRecoENuMuCC",
00812                                "",
00813                                size-1,
00814                                recoEBinEdges);
00815 
00816   if (!fhNDMCRecoENuMuCC) return false;
00817   return true;
00818 }

const Bool_t NuCrossSectionFitter::CreateNDRawMCRecoECCNuMuBarHisto  )  [private, virtual]
 

Definition at line 861 of file NuCrossSectionFitter.cxx.

References fhNDNuMuBarCCDataFromFile, fhNDNuMuCCDataFromFile, fhNDRawMCRecoECCNuMuBar, fvNDRecoENuMuBarCCBins, MSG, and NuEvent::Reset().

Referenced by CreateNDHistograms().

00862 {
00863   if (fhNDRawMCRecoECCNuMuBar) {
00864     delete fhNDRawMCRecoECCNuMuBar; fhNDRawMCRecoECCNuMuBar = 0;
00865   }
00866 
00867   if (fhNDNuMuCCDataFromFile && fhNDNuMuBarCCDataFromFile){
00868     fhNDRawMCRecoECCNuMuBar = new TH1D(*fhNDNuMuBarCCDataFromFile);
00869     fhNDRawMCRecoECCNuMuBar->Reset();
00870     return true;
00871   }
00872 
00873   Int_t size = fvNDRecoENuMuBarCCBins.size();
00874   if (!size){
00875     MSG("NuCrossSectionFitter",Msg::kWarning)
00876       << "ND reconstructed energy binning not supplied."
00877       << endl;
00878     return false;
00879   }
00880 
00881   Double_t* recoEBinEdges = new Double_t[size];
00882 
00883   Int_t i=0;
00884   for (vector<Double_t>::const_iterator it =
00885          fvNDRecoENuMuBarCCBins.begin();
00886        it != fvNDRecoENuMuBarCCBins.end();
00887        ++it, ++i){
00888     recoEBinEdges[i] = *it;
00889   }
00890   
00891   fhNDRawMCRecoECCNuMuBar = new TH1D("fhNDRawMCRecoECCNuMuBar",
00892                                   "",
00893                                   size-1,
00894                                   recoEBinEdges);
00895   
00896   if (!fhNDRawMCRecoECCNuMuBar) return false;
00897   return true;
00898 }

const Bool_t NuCrossSectionFitter::CreateNDRawMCRecoECCNuMuHisto  )  [private, virtual]
 

Definition at line 821 of file NuCrossSectionFitter.cxx.

References fhNDNuMuCCDataFromFile, fhNDRawMCRecoECCNuMu, fvNDRecoENuMuCCBins, MSG, and NuEvent::Reset().

Referenced by CreateNDHistograms().

00822 {
00823   if (fhNDRawMCRecoECCNuMu) {
00824     delete fhNDRawMCRecoECCNuMu; fhNDRawMCRecoECCNuMu = 0;
00825   }
00826 
00827   if (fhNDNuMuCCDataFromFile && fhNDNuMuBarCCDataFromFile){
00828     fhNDRawMCRecoECCNuMu = new TH1D(*fhNDNuMuCCDataFromFile);
00829     fhNDRawMCRecoECCNuMu->Reset();
00830     return true;
00831   }
00832 
00833   Int_t size = fvNDRecoENuMuCCBins.size();
00834   if (!size){
00835     MSG("NuCrossSectionFitter",Msg::kWarning)
00836       << "ND reconstructed energy binning not supplied."
00837       << endl;
00838     return false;
00839   }
00840 
00841   Double_t* recoEBinEdges = new Double_t[size];
00842 
00843   Int_t i=0;
00844   for (vector<Double_t>::const_iterator it =
00845          fvNDRecoENuMuCCBins.begin();
00846        it != fvNDRecoENuMuCCBins.end();
00847        ++it, ++i){
00848     recoEBinEdges[i] = *it;
00849   }
00850   
00851   fhNDRawMCRecoECCNuMu = new TH1D("fhNDRawMCRecoECCNuMu",
00852                                   "",
00853                                   size-1,
00854                                   recoEBinEdges);
00855   
00856   if (!fhNDRawMCRecoECCNuMu) return false;
00857   return true;
00858 }

const Bool_t NuCrossSectionFitter::CreateNDRawMCTrueECCNuMuBarHisto  )  [private, virtual]
 

Definition at line 935 of file NuCrossSectionFitter.cxx.

References fhNDRawMCTrueECCNuMuBar, fvNDTrueENuMuBarCCBins, and MSG.

Referenced by CreateNDHistograms().

00936 {
00937   if (fhNDRawMCTrueECCNuMuBar) {
00938     delete fhNDRawMCTrueECCNuMuBar; fhNDRawMCTrueECCNuMuBar = 0;
00939   }
00940 
00941   Int_t size = fvNDTrueENuMuBarCCBins.size();
00942   if (!size){
00943     MSG("NuCrossSectionFitter",Msg::kWarning)
00944       << "ND true energy binning not supplied."
00945       << endl;
00946     return false;
00947   }
00948 
00949   Double_t* recoEBinEdges = new Double_t[size];
00950 
00951   Int_t i=0;
00952   for (vector<Double_t>::const_iterator it =
00953          fvNDTrueENuMuBarCCBins.begin();
00954        it != fvNDTrueENuMuBarCCBins.end();
00955        ++it, ++i){
00956     recoEBinEdges[i] = *it;
00957   }
00958   
00959   fhNDRawMCTrueECCNuMuBar = new TH1D("fhNDRawMCTrueECCNuMuBar",
00960                                   "",
00961                                   size-1,
00962                                   recoEBinEdges);
00963   
00964   if (!fhNDRawMCTrueECCNuMuBar) return false;
00965   return true;
00966 }

const Bool_t NuCrossSectionFitter::CreateNDRawMCTrueECCNuMuHisto  )  [private, virtual]
 

Definition at line 901 of file NuCrossSectionFitter.cxx.

References fhNDRawMCTrueECCNuMu, fvNDTrueENuMuCCBins, and MSG.

Referenced by CreateNDHistograms().

00902 {
00903   if (fhNDRawMCTrueECCNuMu) {
00904     delete fhNDRawMCTrueECCNuMu; fhNDRawMCTrueECCNuMu = 0;
00905   }
00906 
00907   Int_t size = fvNDTrueENuMuCCBins.size();
00908   if (!size){
00909     MSG("NuCrossSectionFitter",Msg::kWarning)
00910       << "ND true energy binning not supplied."
00911       << endl;
00912     return false;
00913   }
00914 
00915   Double_t* recoEBinEdges = new Double_t[size];
00916 
00917   Int_t i=0;
00918   for (vector<Double_t>::const_iterator it =
00919          fvNDTrueENuMuCCBins.begin();
00920        it != fvNDTrueENuMuCCBins.end();
00921        ++it, ++i){
00922     recoEBinEdges[i] = *it;
00923   }
00924   
00925   fhNDRawMCTrueECCNuMu = new TH1D("fhNDRawMCTrueECCNuMu",
00926                                   "",
00927                                   size-1,
00928                                   recoEBinEdges);
00929   
00930   if (!fhNDRawMCTrueECCNuMu) return false;
00931   return true;
00932 }

const Bool_t NuCrossSectionFitter::DoNDFit  )  [private, virtual]
 

Definition at line 675 of file NuCrossSectionFitter.cxx.

References fFitter, fhNDMCRecoENuMuBarCC, fhNDMCRecoENuMuCC, FillTruthWeightedHistograms(), FixAllParsExcept(), fOutputFile, GetBestFitPars(), ReleaseNonOverflowNonNDFitPars(), and SetupPars().

Referenced by CalculateFDWeights().

00676 {  
00677   this->SetupPars();
00678 
00679   this->FixAllParsExcept(0);
00680   //Do the fit
00681   fFitter->Minimize();
00682   fFitter->PrintResults(0,0);
00683   
00684   this->FixAllParsExcept(1);
00685   //Do the fit
00686   fFitter->Minimize();
00687   fFitter->PrintResults(0,0);
00688   
00689   this->ReleaseNonOverflowNonNDFitPars();
00690   fFitter->Minimize();
00691   fFitter->PrintResults(0,0);
00692   /*
00693   this->ReleaseNonOverflowPars();
00694   fFitter->Minimize();
00695   fFitter->PrintResults(0,0);
00696   */
00697   const vector<Double_t> vBestFit = this->GetBestFitPars();
00698   this->FillTruthWeightedHistograms(vBestFit);
00699   fOutputFile->cd();
00700   fhNDMCRecoENuMuCC->Write("BestFitNDMCRecoENuMuCC");
00701   fhNDMCRecoENuMuBarCC->Write("BestFitNDMCRecoENuMuBarCC");
00702   return true;
00703 }

virtual void NuCrossSectionFitter::FakeParameters const std::vector< Double_t >  fakePars  )  [inline, virtual]
 

Definition at line 36 of file NuCrossSectionFitter.h.

References fvfakepars.

00037     {fvfakepars = fakePars;}

const Int_t NuCrossSectionFitter::FakeTruthIndex const NuEvent info  )  const [private, virtual]
 

Definition at line 452 of file NuCrossSectionFitter.cxx.

References fvNDFakeTrueENuMuBarCCBins, fvNDFakeTrueENuMuCCBins, NuEvent::inu, and NuEvent::neuEnMC.

Referenced by FillNDDataHistograms().

00453 {
00454   Int_t numnubins = fvNDFakeTrueENuMuCCBins.size();
00455   Int_t numbarbins = fvNDFakeTrueENuMuBarCCBins.size();
00456 
00457   Int_t type = info.inu;
00458   const vector<Double_t>* truthbins;
00459   Int_t offset = 0;
00460   Int_t numbins = 0;
00461   if (14 == type){
00462     truthbins = &fvNDFakeTrueENuMuCCBins;
00463     numbins = numnubins;
00464     offset = 0;
00465   }
00466   else if (-14 == type){
00467     truthbins = &fvNDFakeTrueENuMuBarCCBins;
00468     numbins = numbarbins;
00469     offset = numnubins;
00470   }
00471   else{
00472     return numnubins + numbarbins;
00473   }
00474   for (Int_t i=1; i<numbins; ++i){
00475     if ((*truthbins)[i]>info.neuEnMC){
00476       return i - 1 + offset;
00477     }
00478   }
00479   if ((14 == type) || (-14 == type)){
00480     return (numbins + offset);
00481   }
00482   return numnubins + numbarbins;
00483 }

const Bool_t NuCrossSectionFitter::FillNDDataHistograms  )  [private, virtual]
 

Definition at line 1183 of file NuCrossSectionFitter.cxx.

References NuEvent::energy, FakeTruthIndex(), fhNDDataRecoENuMuBarCC, fhNDDataRecoENuMuCC, fhNDNuMuBarCCDataFromFile, fhNDNuMuCCDataFromFile, fOutputFile, ftNDDataTree, fvfakepars, NuTreeWrapper::GetEntries(), NuTreeWrapper::GetInfoObject(), MSG, NuXSecFit::NuSelectionResult_t, NuEvent::Reset(), NuEvent::rw, and SelectedAs().

Referenced by ConfigND().

01184 {
01185   //Preferentially take data from histograms if they've been supplied
01186   if (fhNDNuMuCCDataFromFile && fhNDNuMuBarCCDataFromFile){
01187     if (fhNDDataRecoENuMuCC){
01188       delete fhNDDataRecoENuMuCC; fhNDDataRecoENuMuCC = 0;
01189     }
01190     if (fhNDDataRecoENuMuBarCC){
01191       delete fhNDDataRecoENuMuBarCC; fhNDDataRecoENuMuBarCC = 0;;
01192     }
01193     fhNDDataRecoENuMuCC = new TH1D(*fhNDNuMuCCDataFromFile);
01194     fhNDDataRecoENuMuBarCC = new TH1D(*fhNDNuMuBarCCDataFromFile);
01195 
01196     fOutputFile->cd();
01197     fhNDDataRecoENuMuCC->Write("InputNDNuMuCCData");
01198     fhNDDataRecoENuMuBarCC->Write("InputNDNuMuBarCCData");
01199     return true;
01200   }
01201 
01202   if (!fhNDDataRecoENuMuCC){
01203     MSG("NuCrossSectionFitter",Msg::kWarning)
01204       << "ND numu data histogram not created"
01205       << endl;
01206     return false;
01207   }
01208   if (!fhNDDataRecoENuMuBarCC){
01209     MSG("NuCrossSectionFitter",Msg::kWarning)
01210       << "ND numubar data histogram not created"
01211       << endl;
01212     return false;
01213   }
01214   if (!ftNDDataTree){
01215     MSG("NuCrossSectionFitter",Msg::kWarning)
01216       << "ND data not supplied"
01217       << endl;
01218     return false;
01219   }
01220 
01221   fhNDDataRecoENuMuCC->Reset();
01222   fhNDDataRecoENuMuBarCC->Reset();
01223 
01224   MSG("NuCrossSectionFitter",Msg::kInfo)
01225     << "Looping over ND data:"
01226     << endl;
01227   Int_t dataEntries = ftNDDataTree->GetEntries();
01228   for (Int_t counter = 0;
01229        counter < dataEntries;
01230        ++counter){
01231     if (!(counter%10000)){
01232       MSG("NuCrossSectionFitter",Msg::kInfo)
01233         << counter << " of " << dataEntries
01234         << endl;
01235     }
01236     NuEvent currentEvent = ftNDDataTree->GetInfoObject(counter);
01237     NuSelectionResult_t recoType = this->SelectedAs(currentEvent);
01238     Double_t recoEnergy = currentEvent.energy;
01239     
01240     Int_t truthpar = this->FakeTruthIndex(currentEvent);
01241     Double_t nuweight = 1.0;
01242     nuweight *= currentEvent.rw;
01243     if (truthpar>=0){
01244       nuweight *= fvfakepars[truthpar];
01245     }
01246 
01247     if (recoType==NuXSecFit::kCCNuMu){
01248       fhNDDataRecoENuMuCC->Fill(recoEnergy,nuweight);
01249     }
01250     if (recoType==NuXSecFit::kCCNuMuBar){
01251       fhNDDataRecoENuMuBarCC->Fill(recoEnergy,nuweight);
01252     }
01253   }
01254 
01255   fOutputFile->cd();
01256   fhNDDataRecoENuMuCC->Write("InputNDNuMuCCData");
01257   fhNDDataRecoENuMuBarCC->Write("InputNDNuMuBarCCData");
01258 
01259   return true;
01260 }

void NuCrossSectionFitter::FillSmooth const TH1D *  ,
Double_t  ,
Double_t 
const [private, virtual]
 

Definition at line 411 of file NuCrossSectionFitter.cxx.

00414 {
00415 }

void NuCrossSectionFitter::FillTruthWeightedHistograms const std::vector< double > &  par  )  const [private, virtual]
 

Definition at line 270 of file NuCrossSectionFitter.cxx.

References NuEvent::rw, NuEvent::shwEn, and NuEvent::trkEn.

Referenced by DoNDFit(), and operator()().

00271 {
00272   //Reset recoE histograms (removes bin contents and errors)
00273   fhNDMCRecoENuMuCC->Reset();
00274   fhNDMCRecoENuMuBarCC->Reset();
00275 
00276   Int_t numnubins = fvNDTrueENuMuCCBins.size();
00277   Int_t numbarbins = fvNDTrueENuMuBarCCBins.size();
00278   //NDFit parameters:
00279   Int_t shwEpar = numnubins + numbarbins + 1;
00280   Double_t shwEShift = par[shwEpar];
00281   Int_t trkEpar = numnubins + numbarbins + 2;
00282   Double_t trkEShift = par[trkEpar];
00283 
00284   //Fill the nubar histogram, weighted with truth parameters
00285   for (vector<NuEvent>::const_iterator itBar
00286          = fvNDMCCCNuMuBarEvents.begin();
00287        itBar!=fvNDMCCCNuMuBarEvents.end();
00288        ++itBar){
00289     NuEvent barEvent = *itBar;
00290     Int_t truthpar = this->TruthIndex(barEvent);
00291     Double_t barweight = 1.0;
00292     barweight *= barEvent.rw;
00293     if (truthpar>=0){
00294       barweight *= par[truthpar];
00295     }
00296 
00297     Double_t recoNuE = shwEShift*(barEvent.shwEn)
00298       + trkEShift*(barEvent.trkEn);
00299     fhNDMCRecoENuMuBarCC->Fill(recoNuE,barweight);
00300   }
00301   if (fndMCPoT){fhNDMCRecoENuMuBarCC->Scale(fndDataPoT/fndMCPoT);}
00302 
00303   //Fill the numu histogram, weighted with truth parameters
00304   for (vector<NuEvent>::const_iterator itNu
00305          = fvNDMCCCNuMuEvents.begin();
00306        itNu!=fvNDMCCCNuMuEvents.end();
00307        ++itNu){
00308     NuEvent nuEvent = *itNu;
00309     Int_t truthpar = this->TruthIndex(nuEvent);
00310     Double_t nuweight = 1.0;
00311     nuweight *= nuEvent.rw;
00312     if (truthpar>=0){
00313       nuweight *= par[truthpar];
00314     }
00315 
00316     Double_t recoNuE = shwEShift*(nuEvent.shwEn)
00317       + trkEShift*(nuEvent.trkEn);
00318     fhNDMCRecoENuMuCC->Fill(recoNuE,nuweight);
00319   }
00320   if (fndMCPoT){fhNDMCRecoENuMuCC->Scale(fndDataPoT/fndMCPoT);}
00321 }

void NuCrossSectionFitter::FillTruthWeightedHistogramsSmooth const std::vector< double > &  par  )  const [private, virtual]
 

Definition at line 325 of file NuCrossSectionFitter.cxx.

References NuEvent::Reset(), NuEvent::rw, NuEvent::shwEn, and NuEvent::trkEn.

00326 {
00327   //Reset recoE histograms
00328   fhNDMCRecoENuMuCC->Reset();
00329   fhNDMCRecoENuMuBarCC->Reset();
00330 
00331   Int_t numnubins = fvNDTrueENuMuCCBins.size();
00332   Int_t numbarbins = fvNDTrueENuMuBarCCBins.size();
00333   //NDFit parameters:
00334   Int_t shwEpar = numnubins + numbarbins + 1;
00335   Double_t shwEShift = par[shwEpar];
00336   Int_t trkEpar = numnubins + numbarbins + 2;
00337   Double_t trkEShift = par[trkEpar];
00338 
00339   //Fill the nubar histogram, weighted with truth parameters
00340   for (vector<NuEvent>::const_iterator itBar
00341          = fvNDMCCCNuMuBarEvents.begin();
00342        itBar!=fvNDMCCCNuMuBarEvents.end();
00343        ++itBar){
00344     NuEvent barEvent = *itBar;
00345     Int_t truthpar = this->TruthIndex(barEvent);
00346     Double_t barweight = 1.0;
00347     barweight *= barEvent.rw;
00348     if (truthpar>=0){
00349       barweight *= par[truthpar];
00350     }
00351 
00352     Double_t recoNuE = shwEShift*(barEvent.shwEn)
00353       + trkEShift*(barEvent.trkEn);
00354 
00355 
00356 
00357     //Which bin am I in?
00358     Int_t thisBin = fhNDMCRecoENuMuBarCC->GetXaxis()->FindFixBin(recoNuE);
00359     //What's the bin width?
00360     Double_t binWidth = fhNDMCRecoENuMuBarCC->GetXaxis()->GetBinWidth(thisBin);
00361     //Where's the bin center?
00362     Double_t binCenter = fhNDMCRecoENuMuBarCC->GetXaxis()->GetBinCenter(thisBin);
00363     //What fraction of me goes in this bin?
00364     Double_t fracThis = 
00365       1.0 - (fabs(recoNuE-binCenter))/binWidth;
00366     if ((fhNDMCRecoENuMuBarCC->GetXaxis()->GetNbins()+1)==thisBin){
00367       fracThis = 1.0;
00368     }
00369         if (fracThis<0.0){cout << "Too many bar events!!!!!!!!!!!!!!!" << fracThis << endl;}
00370     fhNDMCRecoENuMuBarCC->AddBinContent(thisBin,fracThis*barweight);
00371     //Am I above or below bin center?
00372     if (recoNuE>=binCenter){
00373       fhNDMCRecoENuMuBarCC->AddBinContent(thisBin+1,(1.0-fracThis)*barweight);
00374     }
00375     else{
00376       if (thisBin>1){
00377         fhNDMCRecoENuMuBarCC->AddBinContent(thisBin-1,(1.0-fracThis)*barweight);
00378       }
00379       else{
00380         fhNDMCRecoENuMuBarCC->AddBinContent(thisBin,(1.0-fracThis)*barweight);
00381       }
00382     }
00383 
00384 
00385 
00386     this->FillSmooth(fhNDMCRecoENuMuBarCC,recoNuE,barweight);
00387   }
00388   if (fndMCPoT){fhNDMCRecoENuMuBarCC->Scale(fndDataPoT/fndMCPoT);}
00389 
00390   //Fill the numu histogram, weighted with truth parameters
00391   for (vector<NuEvent>::const_iterator itNu
00392          = fvNDMCCCNuMuEvents.begin();
00393        itNu!=fvNDMCCCNuMuEvents.end();
00394        ++itNu){
00395     NuEvent nuEvent = *itNu;
00396     Int_t truthpar = this->TruthIndex(nuEvent);
00397     Double_t nuweight = 1.0;
00398     nuweight *= nuEvent.rw;
00399     if (truthpar>=0){
00400       nuweight *= par[truthpar];
00401     }
00402 
00403     Double_t recoNuE = shwEShift*(nuEvent.shwEn)
00404       + trkEShift*(nuEvent.trkEn);
00405     fhNDMCRecoENuMuCC->Fill(recoNuE,nuweight);
00406   }
00407   if (fndMCPoT){fhNDMCRecoENuMuCC->Scale(fndDataPoT/fndMCPoT);}
00408 }

void NuCrossSectionFitter::FixAllParsExcept const Int_t  freeparnum  )  [private, virtual]
 

Definition at line 640 of file NuCrossSectionFitter.cxx.

References fFitter, fvNDTrueENuMuBarCCBins, and fvNDTrueENuMuCCBins.

Referenced by DoNDFit().

00641 {
00642   const TFitterMinuit* stupidRoot = fFitter;
00643   const vector<MinuitParameter>& vMinuitPars =
00644     stupidRoot->State().MinuitParameters();
00645   
00646   Int_t parnum=0;
00647   for (UInt_t i=0; i<(fvNDTrueENuMuCCBins.size()); ++i,++parnum){
00648     if (!vMinuitPars[parnum].IsFixed()){
00649       fFitter->FixParameter(parnum);
00650     }
00651   }
00652   for (UInt_t i=0; i<(fvNDTrueENuMuBarCCBins.size()); ++i,++parnum){
00653     if (!vMinuitPars[parnum].IsFixed()){
00654       fFitter->FixParameter(parnum);
00655     }
00656   }
00657   if (!vMinuitPars[parnum].IsFixed()){
00658     fFitter->FixParameter(parnum);
00659   }
00660   parnum++;
00661   if (!vMinuitPars[parnum].IsFixed()){
00662     fFitter->FixParameter(parnum);
00663   }
00664   parnum++;
00665   if (!vMinuitPars[parnum].IsFixed()){
00666     fFitter->FixParameter(parnum);
00667   }
00668   
00669   fFitter->ReleaseParameter(freeparnum);
00670 
00671   return;
00672 }

const vector< Double_t > NuCrossSectionFitter::GetBestFitPars  )  const [private, virtual]
 

Definition at line 706 of file NuCrossSectionFitter.cxx.

References fFitter, fvNDTrueENuMuBarCCBins, and fvNDTrueENuMuCCBins.

Referenced by DoNDFit(), and GetFDWeights().

00707 {  
00708   vector<Double_t> vbestfit;
00709   Int_t parnum=0;
00710   for (UInt_t i=0; i<(fvNDTrueENuMuCCBins.size()); ++i,++parnum){
00711     vbestfit.push_back(fFitter->GetParameter(parnum));
00712   }
00713   for (UInt_t i=0; i<(fvNDTrueENuMuBarCCBins.size()); ++i,++parnum){
00714     vbestfit.push_back(fFitter->GetParameter(parnum));
00715   }
00716   vbestfit.push_back(fFitter->GetParameter(parnum));
00717   parnum++;
00718   vbestfit.push_back(fFitter->GetParameter(parnum));
00719   parnum++;
00720   vbestfit.push_back(fFitter->GetParameter(parnum));
00721 
00722   return vbestfit;
00723 }

virtual const std::vector<Double_t> NuCrossSectionFitter::GetFDWeights  )  [inline, virtual]
 

Definition at line 38 of file NuCrossSectionFitter.h.

References GetBestFitPars().

00039     {return this->GetBestFitPars();}

void NuCrossSectionFitter::NDData const std::string  ndDataFileName  )  [virtual]
 

Definition at line 1077 of file NuCrossSectionFitter.cxx.

References fndDataPoT, ftNDDataTree, NuTreeWrapper::GetPoT(), and MSG.

01078 {
01079   if (ftNDDataTree){delete ftNDDataTree; ftNDDataTree = 0;}
01080   ftNDDataTree = new NuTreeWrapper(ndDataFileName);
01081 
01082   //Get the total PoT
01083   fndDataPoT = ftNDDataTree->GetPoT();
01084   //fndDataPoT = 1.0;
01085   MSG("NuCrossSectionFitter",Msg::kInfo)
01086     << "ndDataPoT: " << fndDataPoT
01087     << endl;
01088 }

virtual void NuCrossSectionFitter::NDDataPoT const Double_t  pot  )  [inline, virtual]
 

Definition at line 43 of file NuCrossSectionFitter.h.

References fndDataPoT.

00044     {fndDataPoT = pot;}

virtual void NuCrossSectionFitter::NDFakeTrueENuMuBarCCBins const std::vector< Double_t >  vNDFakeTrueENuMuBarCCBins  )  [inline, virtual]
 

Definition at line 64 of file NuCrossSectionFitter.h.

References fvNDFakeTrueENuMuBarCCBins.

00065     {fvNDFakeTrueENuMuBarCCBins = vNDFakeTrueENuMuBarCCBins;}

virtual void NuCrossSectionFitter::NDFakeTrueENuMuCCBins const std::vector< Double_t >  vNDFakeTrueENuMuCCBins  )  [inline, virtual]
 

Definition at line 60 of file NuCrossSectionFitter.h.

References fvNDFakeTrueENuMuCCBins.

00061     {fvNDFakeTrueENuMuCCBins = vNDFakeTrueENuMuCCBins;}

void NuCrossSectionFitter::NDMC const std::string  ndMCFileName  )  [virtual]
 

Definition at line 1111 of file NuCrossSectionFitter.cxx.

References fndMCPoT, ftNDMCTree, NuTreeWrapper::GetPoT(), and MSG.

01112 {
01113   if (ftNDMCTree){delete ftNDMCTree; ftNDMCTree = 0;}
01114   ftNDMCTree = new NuTreeWrapper(ndMCFileName);
01115 
01116   //Get the total PoT
01117   fndMCPoT = ftNDMCTree->GetPoT();
01118   
01119   //fndMCPoT = 1.0;
01120   MSG("NuCrossSectionFitter",Msg::kInfo)
01121     << "ndMCPoT: " << fndMCPoT
01122     << endl;
01123 }

void NuCrossSectionFitter::NDNuMuBarCCData const TH1D &  ndData  )  [virtual]
 

Definition at line 1091 of file NuCrossSectionFitter.cxx.

References fhNDNuMuBarCCDataFromFile.

01092 {
01093   if (fhNDNuMuBarCCDataFromFile){
01094     delete fhNDNuMuBarCCDataFromFile; fhNDNuMuBarCCDataFromFile = 0;
01095   }
01096   fhNDNuMuBarCCDataFromFile = new TH1D(ndData);
01097   fhNDNuMuBarCCDataFromFile->SetDirectory(0);
01098 }

void NuCrossSectionFitter::NDNuMuCCData const TH1D &  ndData  )  [virtual]
 

Definition at line 1101 of file NuCrossSectionFitter.cxx.

References fhNDNuMuCCDataFromFile.

01102 {
01103   if (fhNDNuMuCCDataFromFile){
01104     delete fhNDNuMuCCDataFromFile; fhNDNuMuCCDataFromFile = 0;
01105   }
01106   fhNDNuMuCCDataFromFile = new TH1D(ndData);
01107   fhNDNuMuCCDataFromFile->SetDirectory(0);
01108 }

virtual void NuCrossSectionFitter::NDRecoENuMuBarCCBins const std::vector< Double_t >  vNDRecoENuMuBarCCBins  )  [inline, virtual]
 

Definition at line 50 of file NuCrossSectionFitter.h.

References fvNDRecoENuMuBarCCBins.

00051     {fvNDRecoENuMuBarCCBins = vNDRecoENuMuBarCCBins;}

virtual void NuCrossSectionFitter::NDRecoENuMuCCBins const std::vector< Double_t >  vNDRecoENuMuCCBins  )  [inline, virtual]
 

Definition at line 47 of file NuCrossSectionFitter.h.

References fvNDRecoENuMuCCBins.

00048     {fvNDRecoENuMuCCBins = vNDRecoENuMuCCBins;}

virtual void NuCrossSectionFitter::NDTrueENuMuBarCCBins const std::vector< Double_t >  vNDTrueENuMuBarCCBins  )  [inline, virtual]
 

Definition at line 56 of file NuCrossSectionFitter.h.

References fvNDTrueENuMuBarCCBins.

00057     {fvNDTrueENuMuBarCCBins = vNDTrueENuMuBarCCBins;}

virtual void NuCrossSectionFitter::NDTrueENuMuCCBins const std::vector< Double_t >  vNDTrueENuMuCCBins  )  [inline, virtual]
 

Definition at line 53 of file NuCrossSectionFitter.h.

References fvNDTrueENuMuCCBins.

00054     {fvNDTrueENuMuCCBins = vNDTrueENuMuCCBins;}

double NuCrossSectionFitter::operator() const std::vector< double > &  x  )  const [virtual]
 

Definition at line 226 of file NuCrossSectionFitter.cxx.

References CalculateLikelihood(), and FillTruthWeightedHistograms().

00227 {
00228   static Int_t fitcounter = 0;
00229   if (!(fitcounter%50)){
00230     cout << "Minuit TF call " << fitcounter << endl;
00231   }
00232   ++fitcounter;
00233   this->FillTruthWeightedHistograms(pars);
00234   return this->CalculateLikelihood();
00235 }

void NuCrossSectionFitter::OutputFileName const std::string  outFile  )  [virtual]
 

Definition at line 215 of file NuCrossSectionFitter.cxx.

References fOutputFile.

00216 {
00217   if (fOutputFile){
00218     fOutputFile->Close();
00219     delete fOutputFile;
00220     fOutputFile = 0;
00221   }
00222   fOutputFile = new TFile(outFile.c_str(),"RECREATE");
00223 }

void NuCrossSectionFitter::ReleaseNonOverflowNonNDFitPars  )  [private, virtual]
 

Definition at line 546 of file NuCrossSectionFitter.cxx.

References fFitter, fvNDTrueENuMuBarCCBins, and fvNDTrueENuMuCCBins.

Referenced by DoNDFit().

00547 {
00548   const TFitterMinuit* stupidRoot = fFitter;
00549   const vector<MinuitParameter>& vMinuitPars =
00550     stupidRoot->State().MinuitParameters();
00551   
00552   Int_t parnum=0;
00553   for (UInt_t i=0; i<(fvNDTrueENuMuCCBins.size()); ++i,++parnum){
00554     if (fvNDTrueENuMuCCBins.size()-1 == i){
00555       if (!vMinuitPars[parnum].IsFixed()){
00556         fFitter->FixParameter(parnum);
00557       }
00558     }
00559     else{
00560       if (vMinuitPars[parnum].IsFixed()){
00561         fFitter->ReleaseParameter(parnum);
00562       }
00563     }
00564   }
00565   for (UInt_t i=0; i<(fvNDTrueENuMuBarCCBins.size()); ++i,++parnum){
00566     if (fvNDTrueENuMuBarCCBins.size()-1 == i){
00567       if (!vMinuitPars[parnum].IsFixed()){
00568         fFitter->FixParameter(parnum);
00569       }
00570     }
00571     else{
00572       if (vMinuitPars[parnum].IsFixed()){
00573         fFitter->ReleaseParameter(parnum);
00574       }
00575     }
00576   }
00577   if (!vMinuitPars[parnum].IsFixed()){
00578     fFitter->FixParameter(parnum);
00579   }
00580   parnum++;
00581   if (!vMinuitPars[parnum].IsFixed()){
00582     fFitter->FixParameter(parnum);
00583   }
00584   parnum++;
00585   if (!vMinuitPars[parnum].IsFixed()){
00586     fFitter->FixParameter(parnum);
00587   }
00588 
00589   return;
00590 }

void NuCrossSectionFitter::ReleaseNonOverflowPars  )  [private, virtual]
 

Definition at line 593 of file NuCrossSectionFitter.cxx.

References fFitter, fvNDTrueENuMuBarCCBins, and fvNDTrueENuMuCCBins.

00594 {
00595   const TFitterMinuit* stupidRoot = fFitter;
00596   const vector<MinuitParameter>& vMinuitPars =
00597     stupidRoot->State().MinuitParameters();
00598   
00599   Int_t parnum=0;
00600   for (UInt_t i=0; i<(fvNDTrueENuMuCCBins.size()); ++i,++parnum){
00601     if (fvNDTrueENuMuCCBins.size()-1 == i){
00602       if (!vMinuitPars[parnum].IsFixed()){
00603         fFitter->FixParameter(parnum);
00604       }
00605     }
00606     else{
00607       if (vMinuitPars[parnum].IsFixed()){
00608         fFitter->ReleaseParameter(parnum);
00609       }
00610     }
00611   }
00612   for (UInt_t i=0; i<(fvNDTrueENuMuBarCCBins.size()); ++i,++parnum){
00613     if (fvNDTrueENuMuBarCCBins.size()-1 == i){
00614       if (!vMinuitPars[parnum].IsFixed()){
00615         fFitter->FixParameter(parnum);
00616       }
00617     }
00618     else{
00619       if (vMinuitPars[parnum].IsFixed()){
00620         fFitter->ReleaseParameter(parnum);
00621       }
00622     }
00623   }
00624   if (!vMinuitPars[parnum].IsFixed()){
00625     fFitter->FixParameter(parnum);
00626   }
00627   parnum++;
00628   if (vMinuitPars[parnum].IsFixed()){
00629     fFitter->ReleaseParameter(parnum);
00630   }
00631   parnum++;
00632   if (vMinuitPars[parnum].IsFixed()){
00633     fFitter->ReleaseParameter(parnum);
00634   }
00635 
00636   return;
00637 }

const NuSelectionResult_t NuCrossSectionFitter::SelectedAs NuEvent nuEvent  )  const [virtual]
 

Definition at line 1264 of file NuCrossSectionFitter.cxx.

References NuEvent::anaVersion, NuEvent::charge, NuCuts::IsGoodBeam(), NuCuts::IsGoodDataQuality(), NuCuts::IsGoodDirCos(), NuCuts::IsGoodFitProb(), NuCuts::IsGoodMajorityCurvature(), NuCuts::IsGoodNumberOfTracks(), NuCuts::IsGoodPID(), NuCuts::IsGoodSigmaQP_QP(), NuCuts::IsGoodTimeToNearestSpill(), NuCuts::IsGoodTrackFitPass(), NuCuts::IsInFidVolTrk(), NuCuts::IsLI(), and SelectionScheme().

Referenced by CacheNDMCEvents(), and FillNDDataHistograms().

01265 {
01266   NuCuts nuCuts;
01267   nuEvent.anaVersion = this->SelectionScheme();
01268   
01269   //cut on LI
01270   if (nuCuts.IsLI(nuEvent)) return NuXSecFit::kUnknown;
01271   //cut on the data quality
01272   if (!nuCuts.IsGoodDataQuality(nuEvent)) return NuXSecFit::kUnknown;
01273   //cut on the spill time
01274   if (!nuCuts.IsGoodTimeToNearestSpill(nuEvent)) return NuXSecFit::kUnknown;
01275   //cut on the beam
01276   if (!nuCuts.IsGoodBeam(nuEvent)) return NuXSecFit::kUnknown;
01277   
01278   //cut on whether event vtx is in fid vol (does nothing for CC ana)
01279   //    if (!nuCuts.IsInFidVol(evt,nu)) continue;
01280   //ensure good number of tracks in event (note preselection above)
01281   if (!nuCuts.IsGoodNumberOfTracks(nuEvent)) return NuXSecFit::kUnknown;
01282   //check trk is in fiducial volume (note preselection above)
01283   if (!nuCuts.IsInFidVolTrk(nuEvent)) return NuXSecFit::kUnknown;
01284   
01285   //require a good trk fit
01286   if (!nuCuts.IsGoodTrackFitPass(nuEvent)) return NuXSecFit::kUnknown;
01287   //require a forward going neutrino about beam direction
01288   if (!nuCuts.IsGoodDirCos(nuEvent)) return NuXSecFit::kUnknown;
01289   
01290   //cut on the PID
01291   if (!nuCuts.IsGoodPID(nuEvent)) {
01292     return NuXSecFit::kUnknown;
01293   }
01294   //cut on the fractional track momentum and sign error      
01295   if (!nuCuts.IsGoodSigmaQP_QP(nuEvent)) {
01296     return NuXSecFit::kUnknown;
01297   }
01298   //cut on the track fit probability      
01299   if (!nuCuts.IsGoodFitProb(nuEvent)) {
01300     return NuXSecFit::kUnknown;
01301   }
01302   if (!nuCuts.IsGoodMajorityCurvature(nuEvent)){
01303     return NuXSecFit::kUnknown;
01304   }
01305   
01306   if (-1==nuEvent.charge){return NuXSecFit::kCCNuMu;}
01307   if (1==nuEvent.charge){return NuXSecFit::kCCNuMuBar;}
01308   return NuXSecFit::kUnknown;
01309 }

virtual const NuCuts::NuAnaVersion_t NuCrossSectionFitter::SelectionScheme  )  const [inline, private, virtual]
 

Definition at line 106 of file NuCrossSectionFitter.h.

Referenced by SelectedAs().

00107     {return fanaVersion;}

virtual void NuCrossSectionFitter::SelectionScheme const NuCuts::NuAnaVersion_t  anaVersion = NuCuts::kCC0250Std  )  [inline, virtual]
 

Definition at line 71 of file NuCrossSectionFitter.h.

References fanaVersion.

00073     {fanaVersion = anaVersion;}

void NuCrossSectionFitter::SetupPars  )  [private, virtual]
 

Definition at line 505 of file NuCrossSectionFitter.cxx.

References fFitter, Form(), fvNDTrueENuMuBarCCBins, and fvNDTrueENuMuCCBins.

Referenced by DoNDFit().

00506 {
00507 
00508   //Set up parameters here
00509   Int_t parnum=0;
00510   for (UInt_t i=0; i<(fvNDTrueENuMuCCBins.size()); ++i,++parnum){
00511     if (fvNDTrueENuMuCCBins.size()-1 == i){
00512       fFitter->SetParameter(parnum,
00513                           Form("NuMuOverflow",i),
00514                           1.0,0.2,1.0,0.0);
00515       fFitter->FixParameter(parnum);
00516     }
00517     else{
00518       fFitter->SetParameter(parnum,Form("NuMu%d",i),1.0,0.2,1.0,0.0);
00519     }
00520   }
00521 
00522   for (UInt_t i=0; i<(fvNDTrueENuMuBarCCBins.size()); ++i,++parnum){
00523     if (fvNDTrueENuMuBarCCBins.size()-1 == i){
00524       fFitter->SetParameter(parnum,
00525                           Form("NuMuBarOverFlow",i),
00526                           1.0,0.2,1.0,0.0);
00527       fFitter->FixParameter(parnum);
00528     }
00529     else{
00530       fFitter->SetParameter(parnum,Form("NuMuBar%d",i),1.0,0.2,1.0,0.0);
00531     }
00532   }
00533   fFitter->SetParameter(parnum,"OtherPar",1.0,0.2,1.0,0.0);
00534   fFitter->FixParameter(parnum);
00535   parnum++;
00536   fFitter->SetParameter(parnum,"ShwEShift",1.0,0.0001,1.0,0.0);
00537   fFitter->FixParameter(parnum);
00538   parnum++;
00539   fFitter->SetParameter(parnum,"TrkEShift",1.0,0.2,1.0,0.0);
00540   fFitter->FixParameter(parnum);
00541 
00542   return;
00543 }

const Int_t NuCrossSectionFitter::TruthIndex const NuEvent info  )  const [private, virtual]
 

Definition at line 418 of file NuCrossSectionFitter.cxx.

References fvNDTrueENuMuBarCCBins, fvNDTrueENuMuCCBins, NuEvent::inu, and NuEvent::neuEnMC.

00419 {
00420   Int_t numnubins = fvNDTrueENuMuCCBins.size();
00421   Int_t numbarbins = fvNDTrueENuMuBarCCBins.size();
00422 
00423   Int_t type = info.inu;
00424   const vector<Double_t>* truthbins;
00425   Int_t offset = 0;
00426   Int_t numbins = 0;
00427   if (14 == type){
00428     truthbins = &fvNDTrueENuMuCCBins;
00429     numbins = numnubins;
00430     offset = 0;
00431   }
00432   else if (-14 == type){
00433     truthbins = &fvNDTrueENuMuBarCCBins;
00434     numbins = numbarbins;
00435     offset = numnubins;
00436   }
00437   else{
00438     return numnubins + numbarbins;
00439   }
00440   for (Int_t i=1; i<numbins; ++i){
00441     if ((*truthbins)[i]>info.neuEnMC){
00442       return i - 1 + offset;
00443     }
00444   }
00445   if ((14 == type) || (-14 == type)){
00446     return (numbins + offset);
00447   }
00448   return numnubins + numbarbins;
00449 }

virtual double NuCrossSectionFitter::Up  )  const [inline, virtual]
 

Definition at line 74 of file NuCrossSectionFitter.h.

00074 {return 1.0;}//Chi2 errors; 0.5 for likelihood


Member Data Documentation

NuCuts::NuAnaVersion_t NuCrossSectionFitter::fanaVersion [private]
 

Definition at line 114 of file NuCrossSectionFitter.h.

Referenced by NuCrossSectionFitter(), and SelectionScheme().

TFitterMinuit* NuCrossSectionFitter::fFitter [private]
 

Definition at line 117 of file NuCrossSectionFitter.h.

Referenced by DoNDFit(), FixAllParsExcept(), GetBestFitPars(), NuCrossSectionFitter(), ReleaseNonOverflowNonNDFitPars(), ReleaseNonOverflowPars(), and SetupPars().

TH1D* NuCrossSectionFitter::fhNDDataRecoENuMuBarCC [private]
 

Definition at line 126 of file NuCrossSectionFitter.h.

Referenced by CalculateLikelihood(), CreateNDNuMuBarCCDataHisto(), FillNDDataHistograms(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDDataRecoENuMuCC [private]
 

Definition at line 125 of file NuCrossSectionFitter.h.

Referenced by CalculateLikelihood(), CreateNDNuMuCCDataHisto(), FillNDDataHistograms(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDMCRecoENuMuBarCC [private]
 

Definition at line 124 of file NuCrossSectionFitter.h.

Referenced by CalculateLikelihood(), CreateNDNuMuBarCCMCHisto(), DoNDFit(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDMCRecoENuMuCC [private]
 

Definition at line 123 of file NuCrossSectionFitter.h.

Referenced by CalculateLikelihood(), CreateNDNuMuCCMCHisto(), DoNDFit(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDNuMuBarCCDataFromFile [private]
 

Definition at line 134 of file NuCrossSectionFitter.h.

Referenced by CreateNDNuMuBarCCMCHisto(), CreateNDRawMCRecoECCNuMuBarHisto(), FillNDDataHistograms(), NDNuMuBarCCData(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDNuMuCCDataFromFile [private]
 

Definition at line 133 of file NuCrossSectionFitter.h.

Referenced by CreateNDNuMuBarCCMCHisto(), CreateNDNuMuCCMCHisto(), CreateNDRawMCRecoECCNuMuBarHisto(), CreateNDRawMCRecoECCNuMuHisto(), FillNDDataHistograms(), NDNuMuCCData(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDRawMCRecoECCNuMu [private]
 

Definition at line 129 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), CreateNDRawMCRecoECCNuMuHisto(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDRawMCRecoECCNuMuBar [private]
 

Definition at line 130 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), CreateNDRawMCRecoECCNuMuBarHisto(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDRawMCTrueECCNuMu [private]
 

Definition at line 127 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), CreateNDRawMCTrueECCNuMuHisto(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

TH1D* NuCrossSectionFitter::fhNDRawMCTrueECCNuMuBar [private]
 

Definition at line 128 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), CreateNDRawMCTrueECCNuMuBarHisto(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

Double_t NuCrossSectionFitter::fndDataPoT [private]
 

Definition at line 111 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), NDData(), and NDDataPoT().

Double_t NuCrossSectionFitter::fndMCPoT [private]
 

Definition at line 112 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), and NDMC().

NuSystematic* NuCrossSectionFitter::fnuSystematic [private]
 

Definition at line 157 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), and NuCrossSectionFitter().

TFile* NuCrossSectionFitter::fOutputFile [private]
 

Definition at line 120 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), DoNDFit(), FillNDDataHistograms(), NuCrossSectionFitter(), OutputFileName(), and ~NuCrossSectionFitter().

NuTreeWrapper* NuCrossSectionFitter::ftNDDataTree [private]
 

Definition at line 153 of file NuCrossSectionFitter.h.

Referenced by FillNDDataHistograms(), NDData(), NuCrossSectionFitter(), and ~NuCrossSectionFitter().

NuTreeWrapper* NuCrossSectionFitter::ftNDMCTree [private]
 

Definition at line 155 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents(), NDMC(), and NuCrossSectionFitter().

std::vector<Double_t> NuCrossSectionFitter::fvfakepars [private]
 

Definition at line 146 of file NuCrossSectionFitter.h.

Referenced by FakeParameters(), FillNDDataHistograms(), and NuCrossSectionFitter().

std::vector<Double_t> NuCrossSectionFitter::fvNDFakeTrueENuMuBarCCBins [private]
 

Definition at line 144 of file NuCrossSectionFitter.h.

Referenced by FakeTruthIndex(), NDFakeTrueENuMuBarCCBins(), and NuCrossSectionFitter().

std::vector<Double_t> NuCrossSectionFitter::fvNDFakeTrueENuMuCCBins [private]
 

Definition at line 143 of file NuCrossSectionFitter.h.

Referenced by FakeTruthIndex(), NDFakeTrueENuMuCCBins(), and NuCrossSectionFitter().

std::vector<NuEvent> NuCrossSectionFitter::fvNDMCCCNuMuBarEvents [private]
 

Definition at line 150 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents().

std::vector<NuEvent> NuCrossSectionFitter::fvNDMCCCNuMuEvents [private]
 

Definition at line 149 of file NuCrossSectionFitter.h.

Referenced by CacheNDMCEvents().

std::vector<Double_t> NuCrossSectionFitter::fvNDRecoENuMuBarCCBins [private]
 

Definition at line 138 of file NuCrossSectionFitter.h.

Referenced by CreateNDNuMuBarCCDataHisto(), CreateNDNuMuBarCCMCHisto(), CreateNDRawMCRecoECCNuMuBarHisto(), and NDRecoENuMuBarCCBins().

std::vector<Double_t> NuCrossSectionFitter::fvNDRecoENuMuCCBins [private]
 

Definition at line 137 of file NuCrossSectionFitter.h.

Referenced by CreateNDNuMuCCDataHisto(), CreateNDNuMuCCMCHisto(), CreateNDRawMCRecoECCNuMuHisto(), and NDRecoENuMuCCBins().

std::vector<Double_t> NuCrossSectionFitter::fvNDTrueENuMuBarCCBins [private]
 

Definition at line 140 of file NuCrossSectionFitter.h.

Referenced by CreateNDRawMCTrueECCNuMuBarHisto(), FixAllParsExcept(), GetBestFitPars(), NDTrueENuMuBarCCBins(), ReleaseNonOverflowNonNDFitPars(), ReleaseNonOverflowPars(), SetupPars(), and TruthIndex().

std::vector<Double_t> NuCrossSectionFitter::fvNDTrueENuMuCCBins [private]
 

Definition at line 139 of file NuCrossSectionFitter.h.

Referenced by CreateNDRawMCTrueECCNuMuHisto(), FixAllParsExcept(), GetBestFitPars(), NDTrueENuMuCCBins(), ReleaseNonOverflowNonNDFitPars(), ReleaseNonOverflowPars(), SetupPars(), and TruthIndex().


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