00001 #include "TH1.h"
00002
00003 #include "MessageService/MsgService.h"
00004 #include "NtupleUtils/NuHistInterpolator.h"
00005 #include "NtupleUtils/NuMMHelperPRL.h"
00006 #include "NtupleUtils/NuMMHelperCPT.h"
00007 #include "NtupleUtils/NuMMParameters.h"
00008 #include "NtupleUtils/NuMMRunCC2010.h"
00009
00010 ClassImp(NuMMRunCC2010)
00011
00012 CVSID("$Id: NuMMRunCC2010.cxx,v 1.10 2010/02/03 14:41:01 bckhouse Exp $");
00013
00014
00015 NuMMRunCC2010::NuMMRunCC2010(NuMMHelperPRL* helper,
00016 NuMatrixSpectrum* ndCCData,
00017 NuMatrixSpectrum* fdCCData)
00018 : NuMMRun(),
00019 fNDCCData(ndCCData),
00020 fFDCCData(fdCCData),
00021 fHelper(helper),
00022 fHelperCPT(0)
00023 {
00024
00025 fFDFlux = this->CalculateFDFlux();
00026 }
00027
00028
00029
00030 NuMMRunCC2010::NuMMRunCC2010(NuMMHelperCPT* helper,
00031 NuMatrixSpectrum* ndCCData,
00032 NuMatrixSpectrum* ndCCDataBar,
00033 NuMatrixSpectrum* fdCCData,
00034 NuMatrixSpectrum* fdCCDataBar)
00035 : NuMMRun(),
00036 fNDCCData(ndCCData),
00037 fFDCCData(fdCCData),
00038 fNDCCDataBar(ndCCDataBar),
00039 fFDCCDataBar(fdCCDataBar),
00040 fHelper(0),
00041 fHelperCPT(helper)
00042 {
00043 fFDFlux = this->CalculateFDFlux();
00044 }
00045
00046
00047 const std::vector<TH1D> NuMMRunCC2010
00048 ::WriteFDPredHistos(const NuMMParameters& pars) const
00049 {
00050 vector<TH1D> vHistos;
00051
00052 pair<NuMatrixSpectrum,NuMatrixSpectrum> predictions = fFDFlux;
00053 NuMatrixSpectrum nuPrediction = fFDFlux.first;
00054 NuMatrixSpectrum barPrediction = fFDFlux.first;
00055
00056 if(fHelper){
00057 TH1D hNDData(*(fNDCCData->Spectrum()));
00058 hNDData.SetName("ndData");
00059 hNDData.SetTitle("ndData");
00060 vHistos.push_back(*(new TH1D(hNDData)));
00061
00062 NuMatrixSpectrum potentialTaus(nuPrediction);
00063 potentialTaus.Multiply(fHelper->XSecGraphTaus());
00064 potentialTaus.Multiply(fHelper->FDTauEfficiency());
00065
00066 nuPrediction.Multiply(fHelper->XSecGraph());
00067 nuPrediction.Multiply(fHelper->FDEfficiency());
00068
00069 NuMatrixSpectrum unoscTrueSpectrum(nuPrediction);
00070 unoscTrueSpectrum.TrueToReco(fHelper->FDRecoVsTrue());
00071 NuMatrixSpectrum ncBackground(unoscTrueSpectrum);
00072 ncBackground.Divide(fHelper->FDPurity());
00073 ncBackground.Subtract(unoscTrueSpectrum);
00074
00075 OscillateNuMu(nuPrediction, pars.Dm2(), pars.Sn2());
00076 InverseOscillateNuTau(potentialTaus, pars.Dm2(), pars.Sn2());
00077
00078
00079 TH1D hTrueFDPrediction(*(nuPrediction.Spectrum()));
00080 hTrueFDPrediction.SetName("fdTruePrediction");
00081 vHistos.push_back(hTrueFDPrediction);
00082
00083 potentialTaus.TrueToReco(fHelper->FDTauRecoVsTrue());
00084 nuPrediction.TrueToReco(fHelper->FDRecoVsTrue());
00085
00086
00087 TH1D hBaseFDPrediction(*(nuPrediction.Spectrum()));
00088 hBaseFDPrediction.SetName("fdBasePrediction");
00089 vHistos.push_back(hBaseFDPrediction);
00090
00091 nuPrediction.Add(ncBackground);
00092 if (0==fDisappearanceModel){
00093 nuPrediction.Add(potentialTaus);
00094 }
00095
00096
00097 TH1D hFDPrediction(*(nuPrediction.Spectrum()));
00098 hFDPrediction.SetName("fdPrediction");
00099 vHistos.push_back(hFDPrediction);
00100
00101 TH1D hFDTaus(*(potentialTaus.Spectrum()));
00102 hFDTaus.SetName("fdTaus");
00103 vHistos.push_back(hFDTaus);
00104
00105 TH1D hFDNCBackground(*(ncBackground.Spectrum()));
00106 hFDNCBackground.SetName("fdNCBackground");
00107 vHistos.push_back(hFDNCBackground);
00108
00109 TH1D hfdData(*(fFDCCData->Spectrum()));
00110 hfdData.SetName("fdData");
00111 vHistos.push_back(hfdData);
00112 }
00113
00114 if(fHelperCPT){
00115
00116 TH1D hNDNuData(*(fNDCCData->Spectrum()));
00117 hNDNuData.SetName("ndDataNQ");
00118 hNDNuData.SetTitle("ndDataNQ");
00119 vHistos.push_back(*(new TH1D(hNDNuData)));
00120 TH1D hNDBarData(*(fNDCCDataBar->Spectrum()));
00121 hNDBarData.SetName("ndDataPQ");
00122 hNDBarData.SetTitle("ndDataPQ");
00123 vHistos.push_back(*(new TH1D(hNDBarData)));
00124
00125 cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2()
00126 << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00127 << endl
00128 << "; norm: " << pars.Normalisation()
00129 << "; NCBack: " << pars.NCBackgroundScale()
00130 << "; ShwEn: " << pars.ShwEnScale() << endl;
00131
00132
00133 NuMatrixSpectrum nuPrediction(*fNDCCData);
00134 nuPrediction.Multiply(fHelperCPT->NDNuPurity());
00135 nuPrediction.RecoToTrue(fHelperCPT->NDNuRecoVsTrue());
00136 nuPrediction.Divide(fHelperCPT->NDNuEfficiency());
00137 nuPrediction.Divide(fHelperCPT->NuXSecGraph());
00138 nuPrediction.Divide(fNDCCData->PoT());
00139 nuPrediction.Divide(fNDFidMass);
00140 nuPrediction.ExtrapolateNDToFD(fHelperCPT->NuBeamMatrix());
00141 nuPrediction.Multiply(fFDFidMass);
00142 nuPrediction.Multiply(fFDCCData->PoT());
00143 nuPrediction.ResetPoT(fFDCCData->PoT());
00144
00145
00146 NuMatrixSpectrum barPrediction(*fNDCCDataBar);
00147 barPrediction.Multiply(fHelperCPT->NDBarPurity());
00148 barPrediction.RecoToTrue(fHelperCPT->NDBarRecoVsTrue());
00149 barPrediction.Divide(fHelperCPT->NDBarEfficiency());
00150 barPrediction.Divide(fHelperCPT->BarXSecGraph());
00151 barPrediction.Divide(fNDCCDataBar->PoT());
00152 barPrediction.Divide(fNDFidMass);
00153 barPrediction.ExtrapolateNDToFD(fHelperCPT->BarBeamMatrix());
00154 barPrediction.Multiply(fFDFidMass);
00155 barPrediction.Multiply(fFDCCDataBar->PoT());
00156 barPrediction.ResetPoT(fFDCCDataBar->PoT());
00157
00158
00159 NuMatrixSpectrum potentialNuTaus(nuPrediction);
00160 potentialNuTaus.Multiply(fHelperCPT->XSecGraphNuTaus());
00161 potentialNuTaus.Multiply(fHelperCPT->FDNuTauEfficiency());
00162 InverseOscillateNuTau(potentialNuTaus, pars.Dm2(), pars.Sn2());
00163
00164 NuMatrixSpectrum potentialTauBars(barPrediction);
00165 potentialTauBars.Multiply(fHelperCPT->XSecGraphTauBars());
00166 potentialTauBars.Multiply(fHelperCPT->FDTauBarEfficiency());
00167 InverseOscillateNuTau(potentialTauBars, pars.Dm2(), pars.Sn2());
00168
00169
00170 TH1D hFDTausNuMu(*(potentialNuTaus.Spectrum()));
00171 hFDTausNuMu.SetName("fdTausNuMu");
00172 vHistos.push_back(hFDTausNuMu);
00173 TH1D hFDTausNuBar(*(potentialTauBars.Spectrum()));
00174 hFDTausNuBar.SetName("fdTausNuBar");
00175 vHistos.push_back(hFDTausNuBar);
00176
00177
00178 potentialNuTaus.TrueToReco(fHelperCPT->FDNuTauRecoVsTrue());
00179 potentialTauBars.TrueToReco(fHelperCPT->FDTauBarRecoVsTrue());
00180
00181
00182 nuPrediction.Multiply(fHelperCPT->NuXSecGraph());
00183 barPrediction.Multiply(fHelperCPT->BarXSecGraph());
00184
00185
00186 NuMatrixSpectrum nuNCBackground(nuPrediction);
00187 nuNCBackground.Multiply(fHelperCPT->FDNuEfficiency());
00188 nuNCBackground.TrueToReco(fHelperCPT->FDNuRecoVsTrue());
00189 nuNCBackground.Divide(fHelperCPT->FDNuPurity());
00190 nuNCBackground.Multiply(fHelperCPT->FDNuNCContamination());
00191
00192
00193 NuMatrixSpectrum barNCBackground(barPrediction);
00194 barNCBackground.Multiply(fHelperCPT->FDBarEfficiency());
00195 barNCBackground.TrueToReco(fHelperCPT->FDBarRecoVsTrue());
00196 barNCBackground.Divide(fHelperCPT->FDBarPurity());
00197 barNCBackground.Multiply(fHelperCPT->FDBarNCContamination());
00198
00199
00200
00201 NuMatrixSpectrum wrongSignNuMus(nuPrediction);
00202 wrongSignNuMus.Multiply(fHelperCPT->FDWrongSignNuEfficiency());
00203 OscillateNuMu(wrongSignNuMus, pars.Dm2(), pars.Sn2());
00204
00205
00206
00207 NuMatrixSpectrum wrongSignNuBars(barPrediction);
00208 wrongSignNuBars.Multiply(fHelperCPT->FDWrongSignBarEfficiency());
00209 OscillateNuMu(wrongSignNuBars, pars.Dm2(), pars.Sn2());
00210
00211 TH1D hFDWrongSignNQ(*(wrongSignNuBars.Spectrum()));
00212 hFDWrongSignNQ.SetName("fdWrongSignNQ");
00213 vHistos.push_back(hFDWrongSignNQ);
00214
00215 TH1D hFDWrongSignPQ(*(wrongSignNuMus.Spectrum()));
00216 hFDWrongSignPQ.SetName("fdWrongSignPQ");
00217 vHistos.push_back(hFDWrongSignPQ);
00218
00219
00220 wrongSignNuBars.TrueToReco(fHelperCPT->FDWrongSignBarRecoVsTrue());
00221 wrongSignNuMus.TrueToReco(fHelperCPT->FDWrongSignNuRecoVsTrue());
00222
00223
00224 OscillateNuMu(nuPrediction, pars.Dm2(), pars.Sn2());
00225 OscillateNuMu(barPrediction, pars.Dm2(), pars.Sn2());
00226
00227 nuPrediction.Multiply(fHelperCPT->FDNuEfficiency());
00228 barPrediction.Multiply(fHelperCPT->FDBarEfficiency());
00229
00230
00231 TH1D hFDNoBackTrueNQ(*(nuPrediction.Spectrum()));
00232 hFDNoBackTrueNQ.SetName("fdBasePredictionNuMus");
00233 vHistos.push_back(hFDNoBackTrueNQ);
00234
00235 TH1D hFDNoBackTruePQ(*(barPrediction.Spectrum()));
00236 hFDNoBackTruePQ.SetName("fdBasePredictionNuBars");
00237 vHistos.push_back(hFDNoBackTruePQ);
00238
00239
00240 nuPrediction.TrueToReco(fHelperCPT->FDNuRecoVsTrue());
00241 barPrediction.TrueToReco(fHelperCPT->FDBarRecoVsTrue());
00242
00243
00244 TH1D hFDNoBackNQ(*(nuPrediction.Spectrum()));
00245 hFDNoBackNQ.SetName("fdBasePredictionNQ");
00246 vHistos.push_back(hFDNoBackNQ);
00247
00248 TH1D hFDNoBackPQ(*(barPrediction.Spectrum()));
00249 hFDNoBackPQ.SetName("fdBasePredictionPQ");
00250 vHistos.push_back(hFDNoBackPQ);
00251
00252
00253 nuPrediction.Add(wrongSignNuBars);
00254 barPrediction.Add(wrongSignNuMus);
00255 nuPrediction.Add(nuNCBackground);
00256 nuPrediction.Add(potentialNuTaus);
00257 barPrediction.Add(barNCBackground);
00258 barPrediction.Add(potentialTauBars);
00259
00260
00261
00262 TH1D hFDPredictionNQ(*(nuPrediction.Spectrum()));
00263 hFDPredictionNQ.SetName("fdPredictionNQ");
00264 vHistos.push_back(hFDPredictionNQ);
00265
00266 TH1D hFDPredictionPQ(*(barPrediction.Spectrum()));
00267 hFDPredictionPQ.SetName("fdPredictionPQ");
00268 vHistos.push_back(hFDPredictionPQ);
00269
00270 TH1D hFDNCNQ(*(nuNCBackground.Spectrum()));
00271 hFDNCNQ.SetName("fdNCNQ");
00272 vHistos.push_back(hFDNCNQ);
00273
00274 TH1D hFDNCPQ(*(barNCBackground.Spectrum()));
00275 hFDNCPQ.SetName("fdNCPQ");
00276 vHistos.push_back(hFDNCPQ);
00277
00278 TH1D hFDTausNQ(*(potentialNuTaus.Spectrum()));
00279 hFDTausNQ.SetName("fdTausNQ");
00280 vHistos.push_back(hFDTausNQ);
00281
00282 TH1D hFDTausPQ(*(potentialTauBars.Spectrum()));
00283 hFDTausPQ.SetName("fdTausPQ");
00284 vHistos.push_back(hFDTausPQ);
00285
00286 TH1D hFDDataNQ(*(fFDCCData->Spectrum()));
00287 hFDDataNQ.SetName("fdDataNQ");
00288 vHistos.push_back(hFDDataNQ);
00289
00290 TH1D hFDDataPQ(*(fFDCCDataBar->Spectrum()));
00291 hFDDataPQ.SetName("fdDataPQ");
00292 vHistos.push_back(hFDDataPQ);
00293 }
00294 else{
00295 MSG("NuMMRunCC2010",Msg::kError)<<"No Helper Set!"<<endl;
00296 }
00297 return vHistos;
00298 }
00299
00300
00301 const pair<NuMatrixSpectrum,NuMatrixSpectrum>
00302 NuMMRunCC2010::CalculateFDFlux() const
00303 {
00304 if(fHelper){
00305 NuMatrixSpectrum prediction(*fNDCCData);
00306 prediction.Multiply(fHelper->NDPurity());
00307 prediction.RecoToTrue(fHelper->NDRecoVsTrue());
00308 prediction.Divide(fHelper->NDEfficiency());
00309 prediction.Divide(fHelper->XSecGraph());
00310 prediction.Divide(fNDCCData->PoT());
00311 prediction.Divide(fNDFidMass);
00312 prediction.ExtrapolateNDToFD(fHelper->BeamMatrix());
00313 prediction.Multiply(fFDFidMass);
00314 prediction.Multiply(fFDCCData->PoT());
00315
00316 NuMatrixSpectrum dummy;
00317 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00318 predictions(prediction,dummy);
00319 return predictions;
00320
00321 }
00322 else if(fHelperCPT){
00323
00324
00325 NuMatrixSpectrum nuPrediction(*fNDCCData);
00326 nuPrediction.Multiply(fHelperCPT->NDNuPurity());
00327 nuPrediction.RecoToTrue(fHelperCPT->NDNuRecoVsTrue());
00328 nuPrediction.Divide(fHelperCPT->NDNuEfficiency());
00329 nuPrediction.Divide(fHelperCPT->NuXSecGraph());
00330 nuPrediction.Divide(fNDCCData->PoT());
00331 nuPrediction.Divide(fNDFidMass);
00332 nuPrediction.ExtrapolateNDToFD(fHelperCPT->NuBeamMatrix());
00333 nuPrediction.Multiply(fFDFidMass);
00334 nuPrediction.Multiply(fFDCCData->PoT());
00335 nuPrediction.ResetPoT(fFDCCData->PoT());
00336
00337
00338 NuMatrixSpectrum barPrediction(*fNDCCDataBar);
00339 barPrediction.Multiply(fHelperCPT->NDBarPurity());
00340 barPrediction.RecoToTrue(fHelperCPT->NDBarRecoVsTrue());
00341 barPrediction.Divide(fHelperCPT->NDBarEfficiency());
00342 barPrediction.Divide(fHelperCPT->BarXSecGraph());
00343 barPrediction.Divide(fNDCCDataBar->PoT());
00344 barPrediction.Divide(fNDFidMass);
00345 barPrediction.ExtrapolateNDToFD(fHelperCPT->BarBeamMatrix());
00346 barPrediction.Multiply(fFDFidMass);
00347 barPrediction.Multiply(fFDCCDataBar->PoT());
00348 barPrediction.ResetPoT(fFDCCDataBar->PoT());
00349
00350 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00351 predictions(nuPrediction,barPrediction);
00352 return predictions;
00353 }
00354 else{
00355
00356 MSG("NuMMRunCC2010",Msg::kError) <<"Helpers not set!"<<endl;
00357 NuMatrixSpectrum dummy;
00358 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00359 predictions(dummy,dummy);
00360 return predictions;
00361 }
00362 }
00363
00364 const pair<NuMatrixSpectrum,NuMatrixSpectrum>
00365 NuMMRunCC2010::MakeFDPred(const NuMMParameters& pars)
00366 {
00367 if (!fQuietMode) {
00368 cout << "sn2: " << pars.Sn2() << "; dm2: " << pars.Dm2()
00369 << "; sn2bar: " << pars.Sn2Bar() << "; dm2bar: " << pars.Dm2Bar()
00370 << endl
00371 << "; norm: " << pars.Normalisation()
00372 << "; NCBack: " << pars.NCBackgroundScale()
00373 << "; ShwEn: " << pars.ShwEnScale() << endl;
00374 }
00375
00376 const pair<NuMatrixSpectrum,NuMatrixSpectrum> predictions =
00377 fFDFlux;
00378 NuMatrixSpectrum nuPrediction = predictions.first;
00379 NuMatrixSpectrum barPrediction = predictions.second;
00380
00381 if(fHelperCPT){
00382
00383 NuMatrixSpectrum potentialNuTaus(nuPrediction);
00384 potentialNuTaus.Multiply(fHelperCPT->XSecGraphNuTaus());
00385 potentialNuTaus.Multiply(fHelperCPT->FDNuTauEfficiency());
00386 InverseOscillateNuTau(potentialNuTaus, pars.Dm2(), pars.Sn2());
00387 potentialNuTaus.TrueToReco(fHelperCPT->FDNuTauRecoVsTrue());
00388
00389 NuMatrixSpectrum potentialTauBars(barPrediction);
00390 potentialTauBars.Multiply(fHelperCPT->XSecGraphTauBars());
00391 potentialTauBars.Multiply(fHelperCPT->FDTauBarEfficiency());
00392 InverseOscillateNuTau(potentialTauBars, pars.Dm2(), pars.Sn2());
00393 potentialTauBars.TrueToReco(fHelperCPT->FDTauBarRecoVsTrue());
00394
00395
00396 nuPrediction.Multiply(fHelperCPT->NuXSecGraph());
00397 barPrediction.Multiply(fHelperCPT->BarXSecGraph());
00398
00399
00400 NuMatrixSpectrum nuNCBackground(nuPrediction);
00401 nuNCBackground.Multiply(fHelperCPT->FDNuEfficiency());
00402 nuNCBackground.TrueToReco(fHelperCPT->FDNuRecoVsTrue());
00403 nuNCBackground.Divide(fHelperCPT->FDNuPurity());
00404 nuNCBackground.Multiply(fHelperCPT->FDNuNCContamination());
00405
00406
00407 NuMatrixSpectrum barNCBackground(barPrediction);
00408 barNCBackground.Multiply(fHelperCPT->FDBarEfficiency());
00409 barNCBackground.TrueToReco(fHelperCPT->FDBarRecoVsTrue());
00410 barNCBackground.Divide(fHelperCPT->FDBarPurity());
00411 barNCBackground.Multiply(fHelperCPT->FDBarNCContamination());
00412
00413
00414
00415 NuMatrixSpectrum wrongSignNuMus(nuPrediction);
00416 wrongSignNuMus.Multiply(fHelperCPT->FDWrongSignNuEfficiency());
00417 OscillateNuMu(wrongSignNuMus, pars.Dm2(), pars.Sn2());
00418 wrongSignNuMus.TrueToReco(fHelperCPT->FDWrongSignNuRecoVsTrue());
00419
00420
00421
00422 NuMatrixSpectrum wrongSignNuBars(barPrediction);
00423 wrongSignNuBars.Multiply(fHelperCPT->FDWrongSignBarEfficiency());
00424 OscillateNuMu(wrongSignNuBars, pars.Dm2(), pars.Sn2());
00425 wrongSignNuBars.TrueToReco(fHelperCPT->FDWrongSignBarRecoVsTrue());
00426
00427
00428 OscillateNuMu(nuPrediction, pars.Dm2(), pars.Sn2());
00429 OscillateNuMu(barPrediction, pars.Dm2(), pars.Sn2());
00430
00431 nuPrediction.Multiply(fHelperCPT->FDNuEfficiency());
00432 barPrediction.Multiply(fHelperCPT->FDBarEfficiency());
00433
00434
00435 nuPrediction.TrueToReco(fHelperCPT->FDNuRecoVsTrue());
00436 barPrediction.TrueToReco(fHelperCPT->FDBarRecoVsTrue());
00437
00438
00439 nuPrediction.Add(wrongSignNuBars);
00440 barPrediction.Add(wrongSignNuMus);
00441 nuPrediction.Add(nuNCBackground);
00442 nuPrediction.Add(potentialNuTaus);
00443 barPrediction.Add(barNCBackground);
00444 barPrediction.Add(potentialTauBars);
00445
00446 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00447 ccPredictions(nuPrediction,barPrediction);
00448 return ccPredictions;
00449 }
00450
00451 else if(fHelper){
00452 NuMatrixSpectrum potentialTaus(nuPrediction);
00453 potentialTaus.Multiply(fHelper->XSecGraphTaus());
00454 potentialTaus.Multiply(fHelper->FDTauEfficiency());
00455
00456 nuPrediction.Multiply(fHelper->XSecGraph());
00457 nuPrediction.Multiply(fHelper->FDEfficiency());
00458
00459 NuMatrixSpectrum unoscTrueSpectrum(nuPrediction);
00460 unoscTrueSpectrum.TrueToReco(fHelper->FDRecoVsTrue());
00461 NuMatrixSpectrum ncBackground(unoscTrueSpectrum);
00462 ncBackground.Divide(fHelper->FDPurity());
00463 ncBackground.Subtract(unoscTrueSpectrum);
00464
00465 OscillateNuMu(nuPrediction, pars.Dm2(), pars.Sn2());
00466 InverseOscillateNuTau(potentialTaus, pars.Dm2(), pars.Sn2());
00467
00468 potentialTaus.TrueToReco(fHelper->FDTauRecoVsTrue());
00469 nuPrediction.TrueToReco(fHelper->FDRecoVsTrue());
00470 nuPrediction.Add(ncBackground);
00471
00472 nuPrediction.Add(potentialTaus);
00473
00474 NuMatrixSpectrum dummy;
00475 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00476 ccPredictions(nuPrediction,dummy);
00477 return ccPredictions;
00478 }
00479 else{
00480
00481 MSG("NuMMRunCC2010",Msg::kError)<<"Helper not set!"<<endl;
00482 NuMatrixSpectrum dummy;
00483 pair<NuMatrixSpectrum,NuMatrixSpectrum>
00484 predictions(dummy,dummy);
00485 return predictions;
00486 }
00487 }
00488
00489
00490
00491 const Double_t NuMMRunCC2010
00492 ::ComparePredWithData(const NuMMParameters& pars)
00493 {
00494 const pair<NuMatrixSpectrum,NuMatrixSpectrum> predictions =
00495 this->MakeFDPred(pars);
00496 Double_t like = 0.0;
00497
00498 like += this->StatsLikelihood(predictions.first.Spectrum(),
00499 fFDCCData->Spectrum());
00500
00501 if (fHelperCPT) {
00502 like += this->StatsLikelihood(predictions.second.Spectrum(),
00503 fFDCCDataBar->Spectrum());
00504 }
00505 return like;
00506 }
00507
00508
00509
00510 void NuMMRunCC2010::OscillateNuMu(NuMatrixSpectrum& numu,
00511 double dm2, double sn2) const
00512 {
00513 switch(fDisappearanceModel){
00514 case 0:
00515 numu.OscillateLinearInterp(dm2, sn2);
00516 return;
00517 case 1:
00518 numu.DecayCC(dm2, sn2);
00519 return;
00520 case 2:
00521 numu.Decohere(dm2, sn2);
00522 return;
00523 default:
00524 assert(0 && "Badly configured disappearance model");
00525 }
00526 }
00527
00528
00529
00530 void NuMMRunCC2010::InverseOscillateNuTau(NuMatrixSpectrum& nutau,
00531 double dm2, double sn2) const
00532 {
00533 if(fDisappearanceModel == 0)
00534 nutau.InverseOscillateLinearInterp(dm2, sn2);
00535 }