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

NuEZRunsFitter.cxx

Go to the documentation of this file.
00001 
00002 #include <string>
00003 #include <vector>
00004 
00005 #include "NtupleUtils/NuMMRunFC.h"
00006 #include "NtupleUtils/NuMMParameters.h"
00007 #include "NtupleUtils/NuSystFitter.h"
00008 #include "NtupleUtils/NuEZRunsFitter.h"
00009 #include "MessageService/MsgService.h"
00010 
00011 CVSID("$Id: NuEZRunsFitter.cxx,v 1.3 2009/04/08 16:35:01 nickd Exp $");
00012 
00013 using namespace std;
00014 
00015 NuEZRunsFitter::NuEZRunsFitter() : fFitter(0)
00016 {
00017   
00018 }
00019 
00020 NuEZRunsFitter::~NuEZRunsFitter()
00021 {
00022   // Delete our owned fitters
00023   while (!fOwnedFitters.empty())
00024   {
00025     // delete and remove the last element
00026     if (fOwnedFitters.back()) delete fOwnedFitters.back(); 
00027     fOwnedFitters.pop_back();
00028   }
00029 }
00030 
00031 void NuEZRunsFitter::AddRun(std::string Helper,
00032     std::string NeardetData, std::string FardetData)
00033 {
00034   NuEZFitter *f = new NuEZFitter(Helper, NeardetData, FardetData);
00035   fFitters.push_back(f);
00036   fOwnedFitters.push_back(f);
00037   
00038   BuildFitter();
00039 }
00040 
00041 void NuEZRunsFitter::AddRun(NuEZFitter *EZFitter)
00042 {
00043   // Only accept if they passed a (valid) pointer
00044   if (EZFitter) fFitters.push_back(EZFitter); 
00045   
00046   BuildFitter();
00047 }
00048 
00049 
00050 NuMatrixSpectrum NuEZRunsFitter::PredictionNQ(Double_t dm2bar, Double_t sn2bar,
00051                                         Double_t dm2, Double_t sn2) const
00052 {
00053   NuMMParameters mmPars;
00054   mmPars.Dm2(dm2);
00055   mmPars.Sn2(sn2);
00056   mmPars.Dm2Bar(dm2bar);
00057   mmPars.Sn2Bar(sn2bar);
00058   
00059   return PredictionNQ(mmPars);
00060 }
00061 
00062 NuMatrixSpectrum NuEZRunsFitter::PredictionPQ(Double_t dm2bar, Double_t sn2bar,
00063                                         Double_t dm2, Double_t sn2) const
00064 {
00065   NuMMParameters mmPars;
00066   mmPars.Dm2(dm2);
00067   mmPars.Sn2(sn2);
00068   mmPars.Dm2Bar(dm2bar);
00069   mmPars.Sn2Bar(sn2bar);
00070   
00071   return PredictionPQ(mmPars);
00072 }
00073 
00074 NuMatrixSpectrum NuEZRunsFitter::PredictionNQ(const NuMMParameters &params) const
00075 {
00076   NuMatrixSpectrum total;
00077   // Loop over all runs, and combine the spectra
00078   for (UInt_t i = 0; i < fFitters.size(); i++) {
00079     total.Add(fFitters[i]->PredictionNQ(params), true);
00080   }
00081   
00082   return total;
00083 }
00084 NuMatrixSpectrum NuEZRunsFitter::PredictionPQ(const NuMMParameters &params) const
00085 {
00086   NuMatrixSpectrum total;
00087   // Loop over all runs, and combine the spectra
00088   for (UInt_t i = 0; i < fFitters.size(); i++) {
00089     total.Add(fFitters[i]->PredictionPQ(params), true);
00090   }
00091   
00092   return total;
00093 }
00094 
00095 NuMatrixSpectrum NuEZRunsFitter::FDDataNQ() const
00096 {
00097   NuMatrixSpectrum total;
00098   // Loop over all runs, and combine the spectra
00099   for (UInt_t i = 0; i < fFitters.size(); i++) {
00100     // Add the data spectrum, accumulating POTs
00101     total.Add(fFitters[i]->FDDataNQ(), true);
00102   }
00103   
00104   return total;
00105 }
00106 
00107 NuMatrixSpectrum NuEZRunsFitter::FDDataPQ() const
00108 {
00109   NuMatrixSpectrum total;
00110   // Loop over all runs, and combine the spectra
00111   for (UInt_t i = 0; i < fFitters.size(); i++) {
00112     total.Add(fFitters[i]->FDDataPQ(), true);
00113   }
00114   
00115   return total;
00116 }
00117 
00118 void NuEZRunsFitter::BuildFitter( void )
00119 {
00120   // First delete the old fitter, if it exists
00121   if (fFitter) delete fFitter;
00122   fFitter = 0;
00123 
00124   // Only build if we have runs
00125   if (fFitters.size() == 0) return;
00126   
00127   // Create!
00128   fFitter = new NuSystFitter();
00129   
00130   // Add all of our runs to the new fitter
00131   for(UInt_t i = 0; i < fFitters.size(); i++) {
00132     fFitter->push_back(fFitters[i]->Run());
00133   }
00134 }
00135 
00136 Double_t NuEZRunsFitter::Chi2(Double_t dm2bar, Double_t sn2bar, Double_t dm2, Double_t sn2) const
00137 {
00138   NuMMParameters mmPars;
00139   mmPars.Dm2(dm2);
00140   mmPars.Sn2(sn2);
00141   mmPars.Dm2Bar(dm2bar);
00142   mmPars.Sn2Bar(sn2bar);
00143   
00144   // return (*fFitter)(mmPars.VectorParameters());
00145   return Chi2(mmPars);
00146 }
00147 
00148 Double_t NuEZRunsFitter::Chi2(const NuMMParameters &params) const
00149 {
00150   if (fFitter) {
00151     return (*fFitter)(params.VectorParameters());
00152   } else {
00153     MSG("NuEZRunsFitter",Msg::kError) << "No Fitter exists. Have you added FD data?" << endl;
00154     return 0;
00155   }
00156 }
00157 

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