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

NuMMRunTransition Class Reference

#include <NuMMRunTransition.h>

Inheritance diagram for NuMMRunTransition:

NuMMRunNuBar NuMMRun List of all members.

Public Member Functions

 NuMMRunTransition (NuMMHelperCPT *helper, NuMatrixSpectrum *ndNuData, NuMatrixSpectrum *ndBarData, double pot)
 NuMMRunTransition (NuMMHelperCPT *helper, NuMatrixSpectrum *ndNuData, NuMatrixSpectrum *ndBarData, NuMatrixSpectrum *fdNuData, NuMatrixSpectrum *fdBarData)
 ~NuMMRunTransition ()
const Double_t ComparePredWithData (const NuMMParameters &pars)
const pair< NuMatrixSpectrum,
NuMatrixSpectrum
MakeFDPred (const NuMMParameters &pars)
 Return a pair (NQ,PQ) of NuMatrixSpectra of the far detector prediction with oscillation parameters described in pars. Pure virtual.
const std::vector< TH1D > WriteFDPredHistos (const NuMMParameters &pars) const
const NuMatrixSpectrum TrueComponents (const NuMMParameters &pars, Sample_t s)
virtual NuMatrixSpectrumMakeFDPredNuMu (const NuMMParameters &pars)
 Get just the NuMu component of the prediction with oscillations parameters pars.
virtual NuMatrixSpectrumMakeFDPredNuBar (const NuMMParameters &pars)
 Get just the NuMuBar component of the prediction with oscillations parameters pars.
void PredictNus (Bool_t predict)
 Will the (anti)neutrino prediction be calculated?
void PredictNuBars (Bool_t predict)

Private Member Functions

void CacheExtrapolation (const NuMMParameters &pars)
void ResetCache ()

Private Attributes

NuMatrixSpectrumPreCalcnuPrediction
NuMatrixSpectrumPreCalcbarPrediction
NuMatrixSpectrumPreCalcnuPredictionReco
NuMatrixSpectrumPreCalcbarPredictionReco
NuMatrixSpectrumPreCalcnuAppeared
NuMatrixSpectrumPreCalcbarAppeared
NuMatrixSpectrumPreCalcnuAppearedReco
NuMatrixSpectrumPreCalcbarAppearedReco
NuMatrixSpectrumPreCalcpotentialNuTaus
NuMatrixSpectrumPreCalcpotentialTauBars
NuMatrixSpectrumPreCalcpotentialNuTausReco
NuMatrixSpectrumPreCalcpotentialTauBarsReco
NuMatrixSpectrumPreCalcnuNCBackground
NuMatrixSpectrumPreCalcbarNCBackground
NuMatrixSpectrumPreCalcwrongSignNuMus
NuMatrixSpectrumPreCalcwrongSignNuBars
NuMatrixSpectrumPreCalcwrongSignNuMusReco
NuMatrixSpectrumPreCalcwrongSignNuBarsReco
Bool_t fPredictNeutrinos
 Controls neutrino component of prediction.
Bool_t fPredictAntiNeutrinos
 Controls antineutrino component of prediction.

Constructor & Destructor Documentation

NuMMRunTransition::NuMMRunTransition NuMMHelperCPT helper,
NuMatrixSpectrum ndNuData,
NuMatrixSpectrum ndBarData,
double  pot
 

Definition at line 20 of file NuMMRunTransition.cxx.

00024   : NuMMRunNuBar(),
00025     fPredictNeutrinos(false),
00026     fPredictAntiNeutrinos(true)
00027 {
00028   TString name = "hError";
00029   name += (counter++);
00030   TH1D hBlank(name, "Something Went Wrong", 10, 0, 30);
00031   
00032   fndNuData = ndNuData;
00033   fndBarData = ndBarData;
00034   fHelper = helper;
00035   
00036   ffdNuData = new NuMatrixSpectrum(hBlank, pot);
00037   ffdBarData = new NuMatrixSpectrum(hBlank, pot);
00038   
00039   
00040   // Blank out all the Precache variables
00041   PreCalcnuPrediction   = PreCalcbarPrediction      = 0;
00042   PreCalcnuAppeared     = PreCalcbarAppeared        = 0;
00043   PreCalcpotentialNuTaus= PreCalcpotentialTauBars   = 0;
00044   PreCalcnuNCBackground = PreCalcbarNCBackground    = 0;
00045   PreCalcwrongSignNuMus = PreCalcwrongSignNuBars    = 0;  
00046   
00047   PreCalcnuPredictionReco   = PreCalcbarPredictionReco      = 0;
00048   PreCalcnuAppearedReco     = PreCalcbarAppearedReco        = 0;
00049   PreCalcpotentialNuTausReco= PreCalcpotentialTauBarsReco   = 0;
00050   PreCalcwrongSignNuMusReco = PreCalcwrongSignNuBarsReco    = 0;  
00051   
00052 }

NuMMRunTransition::NuMMRunTransition NuMMHelperCPT helper,
NuMatrixSpectrum ndNuData,
NuMatrixSpectrum ndBarData,
NuMatrixSpectrum fdNuData,
NuMatrixSpectrum fdBarData
 

Definition at line 55 of file NuMMRunTransition.cxx.

References PreCalcbarAppeared, PreCalcbarAppearedReco, PreCalcbarNCBackground, PreCalcbarPrediction, PreCalcbarPredictionReco, PreCalcnuAppeared, PreCalcnuAppearedReco, PreCalcnuNCBackground, PreCalcnuPrediction, PreCalcnuPredictionReco, PreCalcpotentialNuTaus, PreCalcpotentialNuTausReco, PreCalcpotentialTauBars, PreCalcpotentialTauBarsReco, PreCalcwrongSignNuBars, PreCalcwrongSignNuBarsReco, PreCalcwrongSignNuMus, and PreCalcwrongSignNuMusReco.

00060   : NuMMRunNuBar(),
00061     fPredictNeutrinos(false),
00062     fPredictAntiNeutrinos(true)
00063 { 
00064   fndNuData = ndNuData;
00065   fndBarData = ndBarData;
00066   ffdNuData = fdNuData;
00067   ffdBarData = fdBarData;
00068   fHelper = helper;
00069    
00070   
00071   // Blank out all the Precache variables
00072   PreCalcnuPrediction   = PreCalcbarPrediction      = 0;
00073   PreCalcnuAppeared     = PreCalcbarAppeared        = 0;
00074   PreCalcpotentialNuTaus= PreCalcpotentialTauBars   = 0;
00075   PreCalcnuNCBackground = PreCalcbarNCBackground    = 0;
00076   PreCalcwrongSignNuMus = PreCalcwrongSignNuBars    = 0;  
00077 
00078   PreCalcnuPredictionReco   = PreCalcbarPredictionReco      = 0;
00079   PreCalcnuAppearedReco     = PreCalcbarAppearedReco        = 0;
00080   PreCalcpotentialNuTausReco= PreCalcpotentialTauBarsReco   = 0;
00081   PreCalcwrongSignNuMusReco = PreCalcwrongSignNuBarsReco    = 0;  
00082   
00083 }

NuMMRunTransition::~NuMMRunTransition  ) 
 

Definition at line 87 of file NuMMRunTransition.cxx.

References ResetCache().

00088 {
00089   ResetCache();
00090 }


Member Function Documentation

void NuMMRunTransition::CacheExtrapolation const NuMMParameters pars  )  [private]
 

Pre-calculate much of the extrapolation. Most of the matrix method extrapolation does not depend on the oscillation parameters. This includes lots of complicated matrix multiplications and histogram divisions. This function seperates out this code, and is called from the constructor (as everything it needs should exist with a validly called constructor)

Definition at line 140 of file NuMMRunTransition.cxx.

References NuMMHelperCPT::BarBeamMatrix(), NuMMHelperCPT::BarXSecGraph(), NuMatrixSpectrum::Divide(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), NuMMHelperCPT::DoTaus(), NuMatrixSpectrum::ExtrapolateNDToFD(), NuMMHelperCPT::FDBarEfficiency(), NuMMHelperCPT::FDBarNCContamination(), NuMMHelperCPT::FDBarPurity(), NuMMHelperCPT::FDBarRecoVsTrue(), NuMMHelperCPT::FDNuEfficiency(), NuMMHelperCPT::FDNuNCContamination(), NuMMHelperCPT::FDNuPurity(), NuMMHelperCPT::FDNuRecoVsTrue(), NuMMHelperCPT::FDNuTauEfficiency(), NuMMHelperCPT::FDNuTauRecoVsTrue(), NuMMHelperCPT::FDTauBarEfficiency(), NuMMHelperCPT::FDTauBarRecoVsTrue(), NuMMHelperCPT::FDWrongSignBarEfficiency(), NuMMHelperCPT::FDWrongSignBarRecoVsTrue(), NuMMHelperCPT::FDWrongSignNuEfficiency(), NuMMHelperCPT::FDWrongSignNuRecoVsTrue(), NuMatrixSpectrum::InverseOscillate(), MSG, NuMatrixSpectrum::Multiply(), NuMMHelperCPT::NDBarEfficiency(), NuMMHelperCPT::NDBarPurity(), NuMMHelperCPT::NDBarRecoVsTrue(), NuMMHelperCPT::NDNuEfficiency(), NuMMHelperCPT::NDNuPurity(), NuMMHelperCPT::NDNuRecoVsTrue(), NuMMHelperCPT::NuBeamMatrix(), NuMMHelperCPT::NuXSecGraph(), NuMatrixSpectrum::Oscillate(), NuMatrixSpectrum::PoT(), PreCalcbarAppeared, PreCalcbarAppearedReco, PreCalcbarNCBackground, PreCalcbarPrediction, PreCalcbarPredictionReco, PreCalcnuAppeared, PreCalcnuAppearedReco, PreCalcnuNCBackground, PreCalcnuPrediction, PreCalcnuPredictionReco, PreCalcpotentialNuTaus, PreCalcpotentialNuTausReco, PreCalcpotentialTauBars, PreCalcpotentialTauBarsReco, PreCalcwrongSignNuBars, PreCalcwrongSignNuBarsReco, PreCalcwrongSignNuMus, PreCalcwrongSignNuMusReco, NuMatrixSpectrum::RecoToTrue(), ResetCache(), NuMatrixSpectrum::ResetPoT(), NuMatrixSpectrum::SetName(), NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::TrueToReco(), NuMMHelperCPT::XSecGraphNuTaus(), and NuMMHelperCPT::XSecGraphTauBars().

Referenced by MakeFDPred(), MakeFDPredNuBar(), MakeFDPredNuMu(), and TrueComponents().

00141 {
00142   // Only cache once.
00143   if (fCached) return;
00144   
00145   ResetCache();
00146   
00147   if (!fQuietMode)
00148     MSG("NuMMRunTransitions",Msg::kInfo) << "Pre-calculating static extrapolation variables..." << endl;
00149   
00150   // Caching variables, to reduce the workload of each step of the fitter
00151   // Initialise these the way they would be before
00152   PreCalcnuPrediction = new NuMatrixSpectrum(*fndNuData);
00153   PreCalcbarPrediction = new NuMatrixSpectrum(*fndBarData);
00154   
00155   // Be lazy and just alias the pointers to references so can keep
00156   // the code the same
00157   NuMatrixSpectrum &nuPrediction = *PreCalcnuPrediction;
00158   NuMatrixSpectrum &barPrediction = *PreCalcbarPrediction;
00159 
00160   
00161   // Now we have prepared the extrapolation variables, calculate them
00162   // Get the neutrinos to the FD
00163   nuPrediction.Multiply(fHelper->NDNuPurity());
00164   nuPrediction.RecoToTrue(fHelper->NDNuRecoVsTrue());
00165   nuPrediction.Divide(fHelper->NDNuEfficiency());
00166   nuPrediction.Divide(fHelper->NuXSecGraph());
00167   nuPrediction.Divide(fndNuData->PoT());
00168   nuPrediction.Divide(fNDFidMass);
00169   nuPrediction.ExtrapolateNDToFD(fHelper->NuBeamMatrix());
00170   nuPrediction.Multiply(fFDFidMass);
00171   nuPrediction.Multiply(ffdNuData->PoT());
00172   // Reset the spectrum to the new PoT
00173   nuPrediction.ResetPoT(ffdNuData->PoT());
00174   
00175   //Get the antineutrinos to the FD
00176   barPrediction.Multiply(fHelper->NDBarPurity());
00177   barPrediction.RecoToTrue(fHelper->NDBarRecoVsTrue());
00178   barPrediction.Divide(fHelper->NDBarEfficiency());
00179   barPrediction.Divide(fHelper->BarXSecGraph());
00180   barPrediction.Divide(fndBarData->PoT());
00181   barPrediction.Divide(fNDFidMass);
00182   barPrediction.ExtrapolateNDToFD(fHelper->BarBeamMatrix());
00183   barPrediction.Multiply(fFDFidMass);
00184   barPrediction.Multiply(ffdBarData->PoT());
00185   // Reset the spectrum to the new PoT
00186   barPrediction.ResetPoT(ffdBarData->PoT());
00187   
00188   PreCalcpotentialNuTaus = new NuMatrixSpectrum(nuPrediction);
00189   PreCalcpotentialTauBars = new NuMatrixSpectrum(barPrediction);  
00190   // Create and link to the Tau components, before we include the
00191   // cross section in the predictions (tau Xsec is different)
00192   NuMatrixSpectrum &potentialNuTaus = *PreCalcpotentialNuTaus;
00193   NuMatrixSpectrum &potentialTauBars = *PreCalcpotentialTauBars;
00194   
00195   if (fHelper->DoTaus()) {
00196     //Get the taus (ignoring any wrong-sign taubars)
00197     potentialNuTaus.Multiply(fHelper->XSecGraphNuTaus());
00198     potentialNuTaus.Multiply(fHelper->FDNuTauEfficiency());
00199     potentialNuTaus.InverseOscillate(pars.Dm2(),pars.Sn2());
00200   
00201     //Get the taubars (ignoring any wrong-sign taus)
00202     potentialTauBars.Multiply(fHelper->XSecGraphTauBars());
00203     potentialTauBars.Multiply(fHelper->FDTauBarEfficiency());
00204     potentialTauBars.InverseOscillate(pars.Dm2Bar(),pars.Sn2Bar());
00205   }
00206   else {
00207     PreCalcpotentialNuTaus->Multiply(0.0);
00208     PreCalcpotentialTauBars->Multiply(0.0);
00209   }
00210   
00211   // Create and link to the appeared components, before we include the
00212   // cross section in the predictions (Xsec is different)
00213   PreCalcnuAppeared = new NuMatrixSpectrum(barPrediction);
00214   PreCalcbarAppeared = new NuMatrixSpectrum(nuPrediction);
00215   NuMatrixSpectrum &appearedNuMus = *PreCalcnuAppeared;
00216   NuMatrixSpectrum &appearedNuBars = *PreCalcbarAppeared;
00217   appearedNuMus.SetName("Appeared_NuMus");
00218   appearedNuBars.SetName("Appeared_NuMuBars");
00219   
00220   // Apply the appeared cross-sectinos, efficiencies, true to reco
00221   appearedNuMus.Multiply(fHelper->NuXSecGraph());
00222   appearedNuMus.InverseOscillate(pars.Dm2Bar(),pars.Sn2Bar());
00223   appearedNuMus.Multiply(fHelper->FDNuEfficiency());
00224 
00225   appearedNuBars.Multiply(fHelper->BarXSecGraph());
00226   appearedNuBars.InverseOscillate(pars.Dm2(),pars.Sn2());
00227   appearedNuBars.Multiply(fHelper->FDBarEfficiency());
00228   
00229   
00230   // Now do the main spectrum, xsecs
00231   nuPrediction.Multiply(fHelper->NuXSecGraph());
00232   barPrediction.Multiply(fHelper->BarXSecGraph());
00233   
00234   
00235   // Now build the NC Spectrum, after the cross section calculation!
00236   PreCalcnuNCBackground = new NuMatrixSpectrum(*PreCalcnuPrediction);;
00237   PreCalcbarNCBackground = new NuMatrixSpectrum(*PreCalcbarPrediction);
00238   NuMatrixSpectrum &nuNCBackground = *PreCalcnuNCBackground;
00239   NuMatrixSpectrum &barNCBackground = *PreCalcbarNCBackground;  
00240 
00241   
00242   //Get the neutrino NC background
00243   nuNCBackground.Multiply(fHelper->FDNuEfficiency());
00244   nuNCBackground.TrueToReco(fHelper->FDNuRecoVsTrue());
00245   nuNCBackground.Divide(fHelper->FDNuPurity());
00246   nuNCBackground.Multiply(fHelper->FDNuNCContamination());
00247   
00248   //Get the antineutrino NC background
00249   barNCBackground.Multiply(fHelper->FDBarEfficiency());
00250   barNCBackground.TrueToReco(fHelper->FDBarRecoVsTrue());
00251   barNCBackground.Divide(fHelper->FDBarPurity());
00252   barNCBackground.Multiply(fHelper->FDBarNCContamination());
00253   
00254   
00255   
00256   // Now build the wrong sign spectrum
00257   PreCalcwrongSignNuMus = new NuMatrixSpectrum(*PreCalcnuPrediction);
00258   PreCalcwrongSignNuBars = new NuMatrixSpectrum(*PreCalcbarPrediction);
00259   NuMatrixSpectrum &wrongSignNuMus = *PreCalcwrongSignNuMus;
00260   NuMatrixSpectrum &wrongSignNuBars = *PreCalcwrongSignNuBars;
00261 
00262   // Do the Neutrino background for the antineutrino spectrum
00263   wrongSignNuMus.Multiply(fHelper->FDWrongSignNuEfficiency());
00264   wrongSignNuMus.Oscillate(pars.Dm2(),pars.Sn2());
00265   
00266   // Do the Antineutrino background for the neutrino spectrum
00267   wrongSignNuBars.Multiply(fHelper->FDWrongSignBarEfficiency());
00268   wrongSignNuBars.Oscillate(pars.Dm2Bar(),pars.Sn2Bar());
00269   
00270   
00271   // Now apply oscillations, efficeicnies to the main spectrum
00272   nuPrediction.Oscillate(pars.Dm2(),pars.Sn2());
00273   nuPrediction.Multiply(fHelper->FDNuEfficiency());
00274   
00275   barPrediction.Oscillate(pars.Dm2Bar(),pars.Sn2Bar());
00276   barPrediction.Multiply(fHelper->FDBarEfficiency());
00277   
00278 
00279   // If we have precalculated the wrong sign oscillations,
00280   // then we need to recalculate them next time we are given
00281   // the oscilaltion parameters. Reset the flags used to
00282   // control this
00283   //fDoneWsNeutrinos = fDoneWsAntineutrinos = false;
00284 
00285   nuPrediction.SetName("NuMus");
00286   barPrediction.SetName("NuMuBars");
00287 
00288   potentialNuTaus.SetName("NuTaus");
00289   potentialTauBars.SetName("NuTauBars");
00290   
00291   wrongSignNuMus.SetName("WrongSign_NuMus");
00292   wrongSignNuBars.SetName("WrongSign_NuMuBars");
00293   
00294   nuNCBackground.SetName("NC_NuMus");
00295   barNCBackground.SetName("NC_NuMuBars");
00296   
00297   // Now perform all the Reco To True's for the Reco prediction
00298   PreCalcnuPredictionReco = new NuMatrixSpectrum(*PreCalcnuPrediction);
00299   PreCalcbarPredictionReco = new NuMatrixSpectrum(*PreCalcbarPrediction);
00300   PreCalcnuPredictionReco->TrueToReco(fHelper->FDNuRecoVsTrue());
00301   PreCalcbarPredictionReco->TrueToReco(fHelper->FDBarRecoVsTrue());
00302   
00303   if (fHelper->DoTaus()) {
00304     PreCalcpotentialNuTausReco = new NuMatrixSpectrum(*PreCalcpotentialNuTaus);
00305     PreCalcpotentialTauBarsReco = new NuMatrixSpectrum(*PreCalcpotentialTauBars);
00306     PreCalcpotentialNuTausReco->TrueToReco(fHelper->FDNuTauRecoVsTrue());
00307     PreCalcpotentialTauBarsReco->TrueToReco(fHelper->FDTauBarRecoVsTrue());    
00308   }
00309   
00310   PreCalcnuAppearedReco = new NuMatrixSpectrum(*PreCalcnuAppeared);
00311   PreCalcbarAppearedReco = new NuMatrixSpectrum(*PreCalcbarAppeared);
00312   PreCalcnuAppearedReco->TrueToReco(fHelper->FDNuRecoVsTrue());
00313   PreCalcbarAppearedReco->TrueToReco(fHelper->FDBarRecoVsTrue());
00314   
00315   PreCalcwrongSignNuMusReco = new NuMatrixSpectrum(*PreCalcwrongSignNuMus);
00316   PreCalcwrongSignNuBarsReco = new NuMatrixSpectrum(*PreCalcwrongSignNuBars);
00317   PreCalcwrongSignNuMusReco->TrueToReco(fHelper->FDWrongSignNuRecoVsTrue());    
00318   PreCalcwrongSignNuBarsReco->TrueToReco(fHelper->FDWrongSignBarRecoVsTrue());
00319   
00320   fCached = true;
00321     
00322   // Disable this output for now - this process should be fast anyway!
00323   if (!fQuietMode)
00324     cout << "Extrapolation variables cached..." << endl;
00325 }

const Double_t NuMMRunTransition::ComparePredWithData const NuMMParameters pars  )  [virtual]
 

Implements NuMMRun.

Definition at line 847 of file NuMMRunTransition.cxx.

References MakeFDPred(), MakeFDPredNuBar(), MakeFDPredNuMu(), NuMatrixSpectrum::Spectrum(), and NuMMRun::StatsLikelihood().

00848 {
00849   // Generate a prediction
00850   const pair<NuMatrixSpectrum,NuMatrixSpectrum> predictions =
00851     this->MakeFDPred(pars);
00852   Double_t like = 0;
00853   // Now, only count a likelihood for components we want - this is just
00854   // a constant offset, but should help speed things up a little.
00855   if (fPredictNeutrinos) {
00856     NuMatrixSpectrum* nuPrediction = MakeFDPredNuMu(pars);
00857     like += this->StatsLikelihood(nuPrediction->Spectrum(),
00858                                   ffdNuData->Spectrum());
00859     delete nuPrediction;
00860   }
00861   if (fPredictAntiNeutrinos) {
00862     NuMatrixSpectrum* barPrediction = MakeFDPredNuBar(pars);
00863     like += this->StatsLikelihood(barPrediction->Spectrum(),
00864                                   ffdBarData->Spectrum());
00865     delete barPrediction;
00866   }
00867   return like;
00868 }

const pair< NuMatrixSpectrum, NuMatrixSpectrum > NuMMRunTransition::MakeFDPred const NuMMParameters pars  )  [virtual]
 

Return a pair (NQ,PQ) of NuMatrixSpectra of the far detector prediction with oscillation parameters described in pars. Pure virtual.

Implements NuMMRunNuBar.

Definition at line 583 of file NuMMRunTransition.cxx.

References NuMatrixSpectrum::Add(), CacheExtrapolation(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), NuMMHelperCPT::DoTaus(), NuMatrixSpectrum::Multiply(), PreCalcbarAppearedReco, PreCalcbarNCBackground, PreCalcbarPredictionReco, PreCalcnuAppearedReco, PreCalcnuNCBackground, PreCalcnuPredictionReco, PreCalcpotentialNuTausReco, PreCalcpotentialTauBarsReco, PreCalcwrongSignNuBarsReco, PreCalcwrongSignNuMusReco, NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::Spectrum(), and NuMMParameters::TransitionProb().

Referenced by ComparePredWithData().

00584 {
00585   if (!fQuietMode) {
00586     cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2() 
00587      << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00588      << "; alpha: " << pars.TransitionProb()
00589      << endl;
00590   }
00591   
00592   CacheExtrapolation(pars);
00593   
00595   // For all neutrinos
00596   
00597   // Make copies of the prepared extrapolation variables, so that
00598   // we can alter them locally with the oscillation parameters
00599   NuMatrixSpectrum nuPrediction(*PreCalcnuPredictionReco);
00600   NuMatrixSpectrum barPrediction(*PreCalcbarPredictionReco);
00601   
00602   NuMatrixSpectrum potentialNuTaus(*PreCalcpotentialNuTausReco);
00603   NuMatrixSpectrum potentialTauBars(*PreCalcpotentialTauBarsReco);
00604   
00605   NuMatrixSpectrum appearedNuMus(*PreCalcnuAppearedReco);
00606   NuMatrixSpectrum appearedNuBars(*PreCalcbarAppearedReco);
00607   
00608   NuMatrixSpectrum wrongSignNuMus(*PreCalcwrongSignNuMusReco);
00609   NuMatrixSpectrum wrongSignNuBars(*PreCalcwrongSignNuBarsReco);
00610   
00611   NuMatrixSpectrum nuNCBackground(*PreCalcnuNCBackground);
00612   NuMatrixSpectrum barNCBackground(*PreCalcbarNCBackground);  
00613   
00614   
00616   // Processes for neutrinos
00617   
00618   if (fPredictNeutrinos) {  
00619     // Apply alpha
00620     if (fHelper->DoTaus()) potentialNuTaus.Multiply(1.-pars.TransitionProb());
00621     appearedNuMus.Multiply(pars.TransitionProb());
00622     
00623     //Add everything together
00624     nuPrediction.Add(appearedNuMus);
00625     if (fHelper->DoTaus()) nuPrediction.Add(potentialNuTaus);    
00626     nuPrediction.Add(wrongSignNuBars);
00627     nuPrediction.Add(nuNCBackground);
00628   } else {
00629     // Scale the histogram to zero, so as not to confuse people
00630     // if they look at the spectrum with neutrinos turned off
00631     nuPrediction.Spectrum()->Scale(0);
00632   }
00633   
00635   // Processes for Antineutrinos
00636   
00637   if (fPredictAntiNeutrinos) {
00638     if (fHelper->DoTaus()) potentialTauBars.Multiply(1.-pars.TransitionProb());
00639     appearedNuBars.Multiply(pars.TransitionProb());
00640     
00641     //Add everything together
00642     barPrediction.Add(appearedNuBars);
00643     if (fHelper->DoTaus()) barPrediction.Add(potentialTauBars);
00644     barPrediction.Add(wrongSignNuMus);
00645     barPrediction.Add(barNCBackground);
00646   } else {
00647     // Scale the histogram to zero, so as not to confuse people
00648     barPrediction.Spectrum()->Scale(0);
00649   }
00650   
00651   pair<NuMatrixSpectrum,NuMatrixSpectrum> predictions(nuPrediction,barPrediction);
00652   return predictions;
00653 }

NuMatrixSpectrum * NuMMRunTransition::MakeFDPredNuBar const NuMMParameters pars  )  [virtual]
 

Get just the NuMuBar component of the prediction with oscillations parameters pars.

Reimplemented from NuMMRunNuBar.

Definition at line 704 of file NuMMRunTransition.cxx.

References NuMatrixSpectrum::Add(), CacheExtrapolation(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), NuMMHelperCPT::DoTaus(), NuMatrixSpectrum::Multiply(), PreCalcbarAppearedReco, PreCalcbarNCBackground, PreCalcbarPredictionReco, PreCalcpotentialTauBarsReco, PreCalcwrongSignNuMusReco, NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::Spectrum(), and NuMMParameters::TransitionProb().

Referenced by ComparePredWithData().

00705 {
00706   if (!fQuietMode) {
00707     cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2() 
00708     << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00709     << "; alpha: " << pars.TransitionProb()
00710     << endl;
00711   }
00712   
00713   CacheExtrapolation(pars);
00714   
00716   // For all neutrinos
00717   
00718   // Make copies of the prepared extrapolation variables, so that
00719   // we can alter them locally with the oscillation parameters
00720   NuMatrixSpectrum *barPrediction = new NuMatrixSpectrum(*PreCalcbarPredictionReco);
00721   
00722   NuMatrixSpectrum potentialTauBars(*PreCalcpotentialTauBarsReco);
00723   NuMatrixSpectrum appearedNuBars(*PreCalcbarAppearedReco);  
00724   NuMatrixSpectrum wrongSignNuMus(*PreCalcwrongSignNuMusReco);  
00725   NuMatrixSpectrum barNCBackground(*PreCalcbarNCBackground);  
00726   
00728   // Processes for Antineutrinos
00729   
00730   if (fPredictAntiNeutrinos) {
00731     if (fHelper->DoTaus()) potentialTauBars.Multiply(1.-pars.TransitionProb());
00732     appearedNuBars.Multiply(pars.TransitionProb());
00733     
00734     //Add everything together
00735     barPrediction->Add(appearedNuBars);
00736     if (fHelper->DoTaus()) barPrediction->Add(potentialTauBars);
00737     barPrediction->Add(wrongSignNuMus);
00738     barPrediction->Add(barNCBackground);
00739   } else {
00740     // Scale the histogram to zero, so as not to confuse people
00741     barPrediction->Spectrum()->Scale(0);
00742   }
00743 
00744   return barPrediction;
00745 }

NuMatrixSpectrum * NuMMRunTransition::MakeFDPredNuMu const NuMMParameters pars  )  [virtual]
 

Get just the NuMu component of the prediction with oscillations parameters pars.

Reimplemented from NuMMRunNuBar.

Definition at line 656 of file NuMMRunTransition.cxx.

References NuMatrixSpectrum::Add(), CacheExtrapolation(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), NuMMHelperCPT::DoTaus(), NuMatrixSpectrum::Multiply(), PreCalcnuAppearedReco, PreCalcnuNCBackground, PreCalcnuPredictionReco, PreCalcpotentialNuTausReco, PreCalcwrongSignNuBarsReco, NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::Spectrum(), and NuMMParameters::TransitionProb().

Referenced by ComparePredWithData().

00657 {
00658   if (!fQuietMode) {
00659     cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2() 
00660     << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00661     << "; alpha: " << pars.TransitionProb()
00662     << endl;
00663   }
00664   
00665   CacheExtrapolation(pars);
00666   
00668   // For all neutrinos
00669   
00670   // Make copies of the prepared extrapolation variables, so that
00671   // we can alter them locally with the oscillation parameters
00672   NuMatrixSpectrum *nuPrediction = new NuMatrixSpectrum(*PreCalcnuPredictionReco);
00673   
00674   NuMatrixSpectrum potentialNuTaus(*PreCalcpotentialNuTausReco);  
00675   NuMatrixSpectrum appearedNuMus(*PreCalcnuAppearedReco);  
00676   NuMatrixSpectrum wrongSignNuBars(*PreCalcwrongSignNuBarsReco);  
00677   NuMatrixSpectrum nuNCBackground(*PreCalcnuNCBackground);
00678   
00679   
00681   // Processes for neutrinos
00682   
00683   if (fPredictNeutrinos) {  
00684     // Apply alpha
00685     if (fHelper->DoTaus()) potentialNuTaus.Multiply(1.-pars.TransitionProb());
00686     appearedNuMus.Multiply(pars.TransitionProb());
00687     
00688     //Add everything together
00689     nuPrediction->Add(appearedNuMus);
00690     if (fHelper->DoTaus()) nuPrediction->Add(potentialNuTaus);    
00691     nuPrediction->Add(wrongSignNuBars);
00692     nuPrediction->Add(nuNCBackground);
00693   } else {
00694     // Scale the histogram to zero, so as not to confuse people
00695     // if they look at the spectrum with neutrinos turned off
00696     nuPrediction->Spectrum()->Scale(0);
00697   }
00698   
00699   return nuPrediction;
00700 }

void NuMMRunTransition::PredictNuBars Bool_t  predict  )  [inline]
 

Definition at line 41 of file NuMMRunTransition.h.

References fPredictAntiNeutrinos.

00041 {fPredictAntiNeutrinos = predict;}

void NuMMRunTransition::PredictNus Bool_t  predict  )  [inline]
 

Will the (anti)neutrino prediction be calculated?

Definition at line 40 of file NuMMRunTransition.h.

References fPredictNeutrinos.

00040 {fPredictNeutrinos = predict;}

void NuMMRunTransition::ResetCache  )  [private]
 

Definition at line 94 of file NuMMRunTransition.cxx.

References PreCalcbarAppeared, PreCalcbarAppearedReco, PreCalcbarNCBackground, PreCalcbarPrediction, PreCalcbarPredictionReco, PreCalcnuAppeared, PreCalcnuAppearedReco, PreCalcnuNCBackground, PreCalcnuPrediction, PreCalcnuPredictionReco, PreCalcpotentialNuTaus, PreCalcpotentialNuTausReco, PreCalcpotentialTauBars, PreCalcpotentialTauBarsReco, PreCalcwrongSignNuBars, PreCalcwrongSignNuBarsReco, PreCalcwrongSignNuMus, and PreCalcwrongSignNuMusReco.

Referenced by CacheExtrapolation(), and ~NuMMRunTransition().

00095 {
00096   // delete the precalculated MM spectra we previously created
00097   if (PreCalcnuPrediction)    delete PreCalcnuPrediction;
00098   if (PreCalcbarPrediction)   delete PreCalcbarPrediction;
00099   
00100   if (PreCalcnuAppeared)      delete PreCalcnuAppeared;
00101   if (PreCalcbarAppeared)     delete PreCalcbarAppeared; 
00102   
00103   if (PreCalcpotentialNuTaus) delete PreCalcpotentialNuTaus; 
00104   if (PreCalcpotentialTauBars)delete PreCalcpotentialTauBars; 
00105   
00106   if (PreCalcnuNCBackground)  delete PreCalcnuNCBackground; 
00107   if (PreCalcbarNCBackground) delete PreCalcbarNCBackground; 
00108   
00109   if (PreCalcwrongSignNuMus)  delete PreCalcwrongSignNuMus; 
00110   if (PreCalcwrongSignNuBars) delete PreCalcwrongSignNuBars; 
00111   
00112   if (PreCalcnuPredictionReco)    delete PreCalcnuPredictionReco;
00113   if (PreCalcbarPredictionReco)   delete PreCalcbarPredictionReco;
00114   
00115   if (PreCalcnuAppearedReco)      delete PreCalcnuAppearedReco;
00116   if (PreCalcbarAppearedReco)     delete PreCalcbarAppearedReco;
00117   
00118   if (PreCalcpotentialNuTausReco) delete PreCalcpotentialNuTausReco; 
00119   if (PreCalcpotentialTauBarsReco)delete PreCalcpotentialTauBarsReco; 
00120   
00121   if (PreCalcwrongSignNuMusReco)  delete PreCalcwrongSignNuMusReco; 
00122   if (PreCalcwrongSignNuBarsReco) delete PreCalcwrongSignNuBarsReco; 
00123   
00124   PreCalcnuPrediction   = PreCalcbarPrediction      = 0;
00125   PreCalcnuAppeared     = PreCalcbarAppeared        = 0;
00126   PreCalcpotentialNuTaus= PreCalcpotentialTauBars   = 0;
00127   PreCalcnuNCBackground = PreCalcbarNCBackground    = 0;
00128   PreCalcwrongSignNuMus = PreCalcwrongSignNuBars    = 0;  
00129   
00130   PreCalcnuPredictionReco   = PreCalcbarPredictionReco      = 0;
00131   PreCalcnuAppearedReco     = PreCalcbarAppearedReco        = 0;
00132   PreCalcpotentialNuTausReco= PreCalcpotentialTauBarsReco   = 0;
00133   PreCalcwrongSignNuMusReco = PreCalcwrongSignNuBarsReco    = 0; 
00134   
00135   fCached = false;
00136 }

const NuMatrixSpectrum NuMMRunTransition::TrueComponents const NuMMParameters pars,
Sample_t  s
 

Definition at line 750 of file NuMMRunTransition.cxx.

References CacheExtrapolation(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), MSG, NuMatrixSpectrum::Multiply(), PreCalcbarAppeared, PreCalcbarNCBackground, PreCalcbarPrediction, PreCalcnuAppeared, PreCalcnuNCBackground, PreCalcnuPrediction, PreCalcpotentialNuTaus, PreCalcpotentialTauBars, PreCalcwrongSignNuBars, PreCalcwrongSignNuMus, s(), NuMatrixSpectrum::SetName(), NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::Spectrum(), and NuMMParameters::TransitionProb().

00751 {
00752   if (!fQuietMode) {
00753     cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2() 
00754     << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00755     << "; alpha: " << pars.TransitionProb()
00756     << endl;
00757   }
00758   
00759   // Request NQ spectrum, but no NuBar Predictions OR
00760   // Request PQ spectrum, but no NuMu Predictions
00761   if ( (s < 0 && !fPredictNeutrinos) || 
00762        (s > 0 && !fPredictAntiNeutrinos) ) {
00763     NuMatrixSpectrum blank(*PreCalcnuPrediction);
00764     blank.SetName("Blank");
00765     blank.Spectrum()->Scale(0);
00766     return blank;
00767   }
00768   
00769   CacheExtrapolation(pars);
00770   
00771 
00772   if (s == kSignalPQ) {
00773     if (!fQuietMode) cout << "Getting kSignalPQ" << endl;
00774     NuMatrixSpectrum barPrediction(*PreCalcbarPrediction);
00775     if (!fQuietMode) cout << "Returning kSignalPQ" << endl;
00776     return barPrediction;
00777   }
00778   else if (s == kSignalNQ) {
00779     if (!fQuietMode) cout << "Getting kSignalNQ" << endl;
00780     NuMatrixSpectrum nuPrediction(*PreCalcnuPrediction);  
00781     if (!fQuietMode) cout << "Returning kSignalNQ" << endl;
00782     return nuPrediction;
00783   }
00784   else if (s == kWrongSignPQ) {
00785     if (!fQuietMode) cout << "Getting kWrongSignPQ" << endl;
00786     NuMatrixSpectrum wrongSignNuMus(*PreCalcwrongSignNuMus);
00787     if (!fQuietMode) cout << "Returning kWrongSignPQ" << endl;
00788     return wrongSignNuMus;
00789   }
00790   else if (s == kWrongSignNQ) {
00791     if (!fQuietMode) cout << "Getting kWrongSignNQ" << endl;
00792     NuMatrixSpectrum wrongSignNuBars(*PreCalcwrongSignNuBars);
00793     if (!fQuietMode) cout << "Returning kWrongSignNQ" << endl;
00794     return wrongSignNuBars;
00795   }  
00796   else if (s == kNCPQ) {
00797     if (!fQuietMode) cout << "Getting kNCPQ" << endl;
00798     NuMatrixSpectrum barNCBackground(*PreCalcbarNCBackground);
00799     if (!fQuietMode) cout << "Returning kNCPQ" << endl;
00800     return barNCBackground;
00801   }
00802   else if (s == kNCNQ) {
00803     if (!fQuietMode) cout << "Getting kNCNQ" << endl;
00804     NuMatrixSpectrum nuNCBackground(*PreCalcnuNCBackground);
00805     if (!fQuietMode) cout << "Returning kNCNQ" << endl;
00806     return nuNCBackground;
00807   }
00808   else if (s == kTauPQ) {
00809     if (!fQuietMode) cout << "Getting kTauPQ" << endl;
00810     NuMatrixSpectrum potentialTauBars(*PreCalcpotentialTauBars);
00811     potentialTauBars.Multiply(1.-pars.TransitionProb());
00812     if (!fQuietMode) cout << "Returning kTauPQ" << endl;
00813     return potentialTauBars;
00814   }
00815   else if (s == kTauNQ) {
00816     if (!fQuietMode) cout << "Getting kTauNQ" << endl;
00817     NuMatrixSpectrum potentialNuTaus(*PreCalcpotentialNuTaus);
00818     potentialNuTaus.Multiply(1.-pars.TransitionProb());
00819     if (!fQuietMode) cout << "Returning kTauNQ" << endl;
00820     return potentialNuTaus;
00821   }
00822   else if (s == kAppearedPQ) {
00823     if (!fQuietMode) cout << "Getting kAppearedPQ" << endl;
00824     NuMatrixSpectrum appearedNuBars(*PreCalcbarAppeared);
00825     appearedNuBars.Multiply(pars.TransitionProb());
00826     if (!fQuietMode) cout << "Returning kAppearedPQ" << endl;
00827     return appearedNuBars;
00828   }
00829   else if (s == kAppearedNQ) {
00830     if (!fQuietMode) cout << "Getting kAppearedNQ" << endl;
00831     NuMatrixSpectrum appearedNuMus(*PreCalcnuAppeared);
00832     appearedNuMus.Multiply(pars.TransitionProb());
00833     if (!fQuietMode) cout << "Returning kAppearedNQ" << endl;
00834     return appearedNuMus;
00835   }
00836   else {
00837     MSG("NuMMRunTransitions",Msg::kWarning) << "Requested unknown prediction #" << s << ", returning blank." << endl;
00838     NuMatrixSpectrum blank(*PreCalcnuPrediction);
00839     blank.SetName("Blank");
00840     blank.Spectrum()->Scale(0);
00841     return blank;
00842   }
00843 }

const std::vector< TH1D > NuMMRunTransition::WriteFDPredHistos const NuMMParameters pars  )  const [virtual]
 

Implements NuMMRun.

Definition at line 330 of file NuMMRunTransition.cxx.

References NuMatrixSpectrum::Add(), NuMMHelperCPT::BarBeamMatrix(), NuMMHelperCPT::BarXSecGraph(), NuMatrixSpectrum::Divide(), NuMMParameters::Dm2(), NuMMParameters::Dm2Bar(), NuMMHelperCPT::DoTaus(), NuMatrixSpectrum::ExtrapolateNDToFD(), NuMMHelperCPT::FDBarEfficiency(), NuMMHelperCPT::FDBarNCContamination(), NuMMHelperCPT::FDBarPurity(), NuMMHelperCPT::FDBarRecoVsTrue(), NuMMHelperCPT::FDNuEfficiency(), NuMMHelperCPT::FDNuNCContamination(), NuMMHelperCPT::FDNuPurity(), NuMMHelperCPT::FDNuRecoVsTrue(), NuMMHelperCPT::FDNuTauEfficiency(), NuMMHelperCPT::FDNuTauRecoVsTrue(), NuMMHelperCPT::FDTauBarEfficiency(), NuMMHelperCPT::FDTauBarRecoVsTrue(), NuMMHelperCPT::FDWrongSignBarEfficiency(), NuMMHelperCPT::FDWrongSignBarRecoVsTrue(), NuMMHelperCPT::FDWrongSignNuEfficiency(), NuMMHelperCPT::FDWrongSignNuRecoVsTrue(), NuMatrixSpectrum::InverseOscillate(), NuMatrixSpectrum::Multiply(), NuMMHelperCPT::NDBarEfficiency(), NuMMHelperCPT::NDBarPurity(), NuMMHelperCPT::NDBarRecoVsTrue(), NuMMHelperCPT::NDNuEfficiency(), NuMMHelperCPT::NDNuPurity(), NuMMHelperCPT::NDNuRecoVsTrue(), NuMMHelperCPT::NuBeamMatrix(), NuMMHelperCPT::NuXSecGraph(), NuMatrixSpectrum::Oscillate(), NuMatrixSpectrum::PoT(), NuMatrixSpectrum::RecoToTrue(), NuMatrixSpectrum::SetName(), NuMatrixSpectrum::SetTitle(), NuMMParameters::Sn2(), NuMMParameters::Sn2Bar(), NuMatrixSpectrum::Spectrum(), NuMMParameters::TransitionProb(), NuMatrixSpectrum::TrueToReco(), NuMMHelperCPT::XSecGraphNuTaus(), and NuMMHelperCPT::XSecGraphTauBars().

00331 {
00332   //Set up a vector to push the histograms into.
00333   vector<TH1D> vHistos;
00334 
00335   //Put the ND data in the vector:
00336   TH1D hNDNuData(*(fndNuData->Spectrum()));
00337   hNDNuData.SetName("ndDataNQ");
00338   hNDNuData.SetTitle("ndDataNQ");
00339   vHistos.push_back(*(new TH1D(hNDNuData)));
00340   TH1D hNDBarData(*(fndBarData->Spectrum()));
00341   hNDBarData.SetName("ndDataPQ");
00342   hNDBarData.SetTitle("ndDataPQ");
00343   vHistos.push_back(*(new TH1D(hNDBarData)));
00344 
00345 //cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2() 
00346 //     << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00347 //     << "; Prob: " << pars.TransitionProb()
00348 //     << endl;
00349   //Get the neutrinos to the FD
00350   NuMatrixSpectrum nuPrediction(*fndNuData);
00351   nuPrediction.Multiply(fHelper->NDNuPurity());
00352   nuPrediction.RecoToTrue(fHelper->NDNuRecoVsTrue());
00353   nuPrediction.Divide(fHelper->NDNuEfficiency());
00354   nuPrediction.Divide(fHelper->NuXSecGraph());
00355   nuPrediction.Divide(fndNuData->PoT());
00356   nuPrediction.Divide(fNDFidMass);
00357   nuPrediction.ExtrapolateNDToFD(fHelper->NuBeamMatrix());
00358   nuPrediction.Multiply(fFDFidMass);
00359   nuPrediction.Multiply(ffdNuData->PoT());
00360 
00361   //Get the antineutrinos to the FD
00362   NuMatrixSpectrum barPrediction(*fndBarData);
00363   barPrediction.Multiply(fHelper->NDBarPurity());
00364   barPrediction.RecoToTrue(fHelper->NDBarRecoVsTrue());
00365   barPrediction.Divide(fHelper->NDBarEfficiency());
00366   barPrediction.Divide(fHelper->BarXSecGraph());
00367   barPrediction.Divide(fndBarData->PoT());
00368   barPrediction.Divide(fNDFidMass);
00369   barPrediction.ExtrapolateNDToFD(fHelper->BarBeamMatrix());
00370   barPrediction.Multiply(fFDFidMass);
00371   barPrediction.Multiply(ffdBarData->PoT());
00372 
00373   NuMatrixSpectrum potentialNuTaus(nuPrediction);
00374   NuMatrixSpectrum potentialTauBars(barPrediction);
00375   if (fHelper->DoTaus())  {
00376     //Get the taus (ignoring any wrong-sign taubars)
00377     potentialNuTaus.Multiply(fHelper->XSecGraphNuTaus());
00378     potentialNuTaus.Multiply(fHelper->FDNuTauEfficiency());
00379     potentialNuTaus.InverseOscillate(pars.Dm2(),pars.Sn2());
00380     potentialNuTaus.TrueToReco(fHelper->FDNuTauRecoVsTrue());
00381     //Get the taubars (ignoring any wrong-sign taus)
00382     potentialTauBars.Multiply(fHelper->XSecGraphTauBars());
00383     potentialTauBars.Multiply(fHelper->FDTauBarEfficiency());
00384     potentialTauBars.InverseOscillate(pars.Dm2Bar(),pars.Sn2Bar());
00385     potentialTauBars.TrueToReco(fHelper->FDTauBarRecoVsTrue());
00386   }
00387   else {
00388     potentialNuTaus.Multiply(0.0);
00389     potentialTauBars.Multiply(0.0);
00390   }
00391   
00392   //Get the transitioned neutrinos (they're now antineutrinos)
00393   NuMatrixSpectrum appearedNuBars(nuPrediction);
00394   TH1D hRawAppearPQ(*(appearedNuBars.Spectrum()));
00395   hRawAppearPQ.SetName("hRawAppearPQ");
00396   vHistos.push_back(hRawAppearPQ); 
00397   
00398   appearedNuBars.Multiply(fHelper->BarXSecGraph());
00399   TH1D hTrueEffAppearPQ(*(appearedNuBars.Spectrum()));
00400   hTrueEffAppearPQ.SetName("hTrueEffAppearPQ");
00401   vHistos.push_back(hTrueEffAppearPQ); 
00402   
00403   appearedNuBars.Multiply(fHelper->FDBarEfficiency());
00404   TH1D hTrueAppearPQ(*(appearedNuBars.Spectrum()));
00405   hTrueAppearPQ.SetName("hTrueAppearPQ");
00406   vHistos.push_back(hTrueAppearPQ); 
00407   
00408   appearedNuBars.InverseOscillate(pars.Dm2(),pars.Sn2());
00409   appearedNuBars.Multiply(pars.TransitionProb());
00410   TH1D hTrueTransitionPQ(*(appearedNuBars.Spectrum()));
00411   hTrueTransitionPQ.SetName("hTrueTransitionPQ");
00412   vHistos.push_back(hTrueTransitionPQ); 
00413     
00414   appearedNuBars.TrueToReco(fHelper->FDBarRecoVsTrue());
00415   TH1D hRecoAppearPQ(*(appearedNuBars.Spectrum()));
00416   hRecoAppearPQ.SetName("hRecoAppearPQ");
00417   vHistos.push_back(hRecoAppearPQ);
00418   
00419   //Get the transitioned antineutrinos (they're now neutrinos)
00420   NuMatrixSpectrum appearedNuMus(barPrediction);
00421   TH1D hRawAppearNQ(*(appearedNuMus.Spectrum()));
00422   hRawAppearNQ.SetName("hRawAppearNQ");
00423   vHistos.push_back(hRawAppearNQ); 
00424   
00425   appearedNuMus.Multiply(fHelper->NuXSecGraph());
00426   TH1D hTrueEffAppearNQ(*(appearedNuMus.Spectrum()));
00427   hTrueEffAppearNQ.SetName("hTrueEffAppearNQ");
00428   vHistos.push_back(hTrueEffAppearNQ); 
00429   
00430   appearedNuMus.Multiply(fHelper->FDNuEfficiency());
00431   TH1D hTrueAppearNQ(*(appearedNuMus.Spectrum()));
00432   hTrueAppearNQ.SetName("hTrueAppearNQ");
00433   vHistos.push_back(hTrueAppearNQ); 
00434   
00435   appearedNuMus.InverseOscillate(pars.Dm2(),pars.Sn2());
00436   appearedNuMus.Multiply(pars.TransitionProb());
00437   TH1D hTrueTransitionNQ(*(appearedNuMus.Spectrum()));
00438   hTrueTransitionNQ.SetName("hTrueTransitionNQ");
00439   vHistos.push_back(hTrueTransitionNQ); 
00440   
00441   appearedNuMus.TrueToReco(fHelper->FDNuRecoVsTrue());
00442   TH1D hRecoAppearNQ(*(appearedNuMus.Spectrum()));
00443   hRecoAppearNQ.SetName("hRecoAppearNQ");
00444   vHistos.push_back(hRecoAppearNQ);
00445   
00446 
00447   //Cross sections
00448   nuPrediction.Multiply(fHelper->NuXSecGraph());
00449   barPrediction.Multiply(fHelper->BarXSecGraph());
00450   
00451   // True NuMus (flux x sigma)
00452   TH1D hTrueNuMus(*(nuPrediction.Spectrum()));
00453   hTrueNuMus.SetName("hTrueNuMus");
00454   vHistos.push_back(hTrueNuMus); 
00455   
00456   // True NuBars (flux x sigma)
00457   TH1D hTrueNuBars(*(barPrediction.Spectrum()));
00458   hTrueNuBars.SetName("hTrueNuBars");
00459   vHistos.push_back(hTrueNuBars); 
00460 
00461   //Get the neutrino NC background
00462   NuMatrixSpectrum nuNCBackground(nuPrediction);
00463   nuNCBackground.Multiply(fHelper->FDNuEfficiency());
00464   nuNCBackground.TrueToReco(fHelper->FDNuRecoVsTrue());
00465   nuNCBackground.Divide(fHelper->FDNuPurity());
00466   nuNCBackground.Multiply(fHelper->FDNuNCContamination());
00467   
00468   //Get the antineutrino NC background
00469   NuMatrixSpectrum barNCBackground(barPrediction);
00470   barNCBackground.Multiply(fHelper->FDBarEfficiency());
00471   barNCBackground.TrueToReco(fHelper->FDBarRecoVsTrue());
00472   barNCBackground.Divide(fHelper->FDBarPurity());
00473   barNCBackground.Multiply(fHelper->FDBarNCContamination());
00474   
00475   //Get the wrong-sign neutrino background for the antineutrino
00476   //prediction
00477   NuMatrixSpectrum wrongSignNuMus(nuPrediction);
00478   wrongSignNuMus.Multiply(fHelper->FDWrongSignNuEfficiency());
00479   wrongSignNuMus.Oscillate(pars.Dm2(),pars.Sn2());
00480   
00481   //Get the wrong-sign antineutrino background for the neutrino
00482   //prediction
00483   NuMatrixSpectrum wrongSignNuBars(barPrediction);
00484   wrongSignNuBars.Multiply(fHelper->FDWrongSignBarEfficiency());
00485   wrongSignNuBars.Oscillate(pars.Dm2Bar(),pars.Sn2Bar());  
00486 
00487 
00488   TH1D hFDWrongSignPQ(*(wrongSignNuBars.Spectrum()));
00489   hFDWrongSignPQ.SetName("fdWrongSignPQ");
00490   vHistos.push_back(hFDWrongSignPQ);
00491 
00492   TH1D hFDWrongSignNQ(*(wrongSignNuMus.Spectrum()));
00493   hFDWrongSignNQ.SetName("fdWrongSignNQ");
00494   vHistos.push_back(hFDWrongSignNQ);
00495 
00496   // Do the truetoreco seperately so that we can write out the histos first
00497   wrongSignNuBars.TrueToReco(fHelper->FDWrongSignBarRecoVsTrue());
00498   wrongSignNuMus.TrueToReco(fHelper->FDWrongSignNuRecoVsTrue()); 
00499 
00500   //Oscillations
00501   nuPrediction.Oscillate(pars.Dm2(),pars.Sn2());
00502   barPrediction.Oscillate(pars.Dm2Bar(),pars.Sn2Bar());
00503   //Efficiencies
00504   nuPrediction.Multiply(fHelper->FDNuEfficiency());
00505   barPrediction.Multiply(fHelper->FDBarEfficiency());
00506 
00507   //True to reco
00508   nuPrediction.TrueToReco(fHelper->FDNuRecoVsTrue());
00509   barPrediction.TrueToReco(fHelper->FDBarRecoVsTrue());
00510   
00511   // Dump out the prediction spectrum before adding in the backgrounds
00512   TH1D hFDNoBackNQ(*(nuPrediction.Spectrum()));
00513   hFDNoBackNQ.SetName("fdBasePredictionNQ");
00514   vHistos.push_back(hFDNoBackNQ);
00515   
00516   TH1D hFDNoBackPQ(*(barPrediction.Spectrum()));
00517   hFDNoBackPQ.SetName("fdBasePredictionPQ");
00518   vHistos.push_back(hFDNoBackPQ);
00519   
00520   //Add in backgrounds
00521   nuPrediction.Add(wrongSignNuBars);
00522   barPrediction.Add(wrongSignNuMus);
00523   nuPrediction.Add(nuNCBackground);
00524   if (fHelper->DoTaus()) nuPrediction.Add(potentialNuTaus);
00525   barPrediction.Add(barNCBackground);
00526   if (fHelper->DoTaus()) barPrediction.Add(potentialTauBars);
00527 
00528   
00529   TH1D hFDPredictionNoTransNQ(*(nuPrediction.Spectrum()));
00530   hFDPredictionNoTransNQ.SetName("fdPredictionNoTransNQ");
00531   vHistos.push_back(hFDPredictionNoTransNQ);
00532   
00533   TH1D hFDPredictionNoTransPQ(*(barPrediction.Spectrum()));
00534   hFDPredictionNoTransPQ.SetName("fdPredictionNoTransPQ");
00535   vHistos.push_back(hFDPredictionNoTransPQ);
00536   
00537   
00538   
00539   //Add in transitions
00540   nuPrediction.Add(appearedNuMus);
00541   barPrediction.Add(appearedNuBars);
00542   
00543   //Put the componants of the predictions in the vector
00544 
00545   TH1D hFDPredictionNQ(*(nuPrediction.Spectrum()));
00546   hFDPredictionNQ.SetName("fdPredictionNQ");
00547   vHistos.push_back(hFDPredictionNQ);
00548 
00549   TH1D hFDPredictionPQ(*(barPrediction.Spectrum()));
00550   hFDPredictionPQ.SetName("fdPredictionPQ");
00551   vHistos.push_back(hFDPredictionPQ);
00552 
00553   TH1D hFDNCNQ(*(nuNCBackground.Spectrum()));
00554   hFDNCNQ.SetName("fdNCNQ");
00555   vHistos.push_back(hFDNCNQ);
00556 
00557   TH1D hFDNCPQ(*(barNCBackground.Spectrum()));
00558   hFDNCPQ.SetName("fdNCPQ");
00559   vHistos.push_back(hFDNCPQ);
00560   
00561   if (fHelper->DoTaus()) {
00562     TH1D hFDTausNQ(*(potentialNuTaus.Spectrum()));
00563     hFDTausNQ.SetName("fdTausNQ");
00564     vHistos.push_back(hFDTausNQ);
00565     
00566     TH1D hFDTausPQ(*(potentialTauBars.Spectrum()));
00567     hFDTausPQ.SetName("fdTausPQ");
00568     vHistos.push_back(hFDTausPQ);
00569   }
00570   
00571   TH1D hFDDataNQ(*(ffdNuData->Spectrum()));
00572   hFDDataNQ.SetName("fdDataNQ");
00573   vHistos.push_back(hFDDataNQ);
00574 
00575   TH1D hFDDataPQ(*(ffdBarData->Spectrum()));
00576   hFDDataPQ.SetName("fdDataPQ");
00577   vHistos.push_back(hFDDataPQ);
00578 
00579   return vHistos;
00580 }


Member Data Documentation

Bool_t NuMMRunTransition::fPredictAntiNeutrinos [private]
 

Controls antineutrino component of prediction.

Definition at line 91 of file NuMMRunTransition.h.

Referenced by PredictNuBars().

Bool_t NuMMRunTransition::fPredictNeutrinos [private]
 

Controls neutrino component of prediction.

Definition at line 89 of file NuMMRunTransition.h.

Referenced by PredictNus().

NuMatrixSpectrum* NuMMRunTransition::PreCalcbarAppeared [private]
 

Definition at line 64 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcbarAppearedReco [private]
 

Definition at line 66 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuBar(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcbarNCBackground [private]
 

Definition at line 77 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuBar(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcbarPrediction [private]
 

Definition at line 58 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcbarPredictionReco [private]
 

Definition at line 60 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuBar(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcnuAppeared [private]
 

Definition at line 63 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcnuAppearedReco [private]
 

Definition at line 65 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuMu(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcnuNCBackground [private]
 

Definition at line 76 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuMu(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcnuPrediction [private]
 

Definition at line 57 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcnuPredictionReco [private]
 

Definition at line 59 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuMu(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcpotentialNuTaus [private]
 

Definition at line 70 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcpotentialNuTausReco [private]
 

Definition at line 72 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuMu(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcpotentialTauBars [private]
 

Definition at line 71 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcpotentialTauBarsReco [private]
 

Definition at line 73 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuBar(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcwrongSignNuBars [private]
 

Definition at line 83 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcwrongSignNuBarsReco [private]
 

Definition at line 85 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuMu(), NuMMRunTransition(), and ResetCache().

NuMatrixSpectrum* NuMMRunTransition::PreCalcwrongSignNuMus [private]
 

Definition at line 82 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), NuMMRunTransition(), ResetCache(), and TrueComponents().

NuMatrixSpectrum* NuMMRunTransition::PreCalcwrongSignNuMusReco [private]
 

Definition at line 84 of file NuMMRunTransition.h.

Referenced by CacheExtrapolation(), MakeFDPred(), MakeFDPredNuBar(), NuMMRunTransition(), and ResetCache().


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