#include <NuXFitAnalysis.h>
Public Member Functions | |
| NuXFitAnalysis () | |
| NuXFitAnalysis (const NuXMLConfig &xmlConfig) | |
| virtual | ~NuXFitAnalysis () |
| virtual double | operator() (const std::vector< double > &x) const |
| virtual double | Up () const |
| virtual void | SetErrorDef (const Double_t up) |
| virtual const Double_t | CalculateLikelihood () const |
| const Double_t | CalculateLikelihood (const TH1D *fdPred, const TH1D *fdData) const |
| virtual void | CrossSectionFileName (const std::string xSecFileName) |
| virtual void | DoGridSearch (const Bool_t doGridSearch) |
| virtual void | FDData (const std::string fdDataFileName) |
| virtual void | FDNuMuCCData (const TH1D &fdData) |
| virtual void | FDNuMuBarCCData (const TH1D &fdData) |
| virtual void | FDDataPoT (const Double_t pot) |
| virtual void | FDMC (const std::string fdMCFileName) |
| virtual void | FDRecoENuMuCCBins (const std::vector< Double_t > vFDRecoENuMuCCBins) |
| virtual void | FDRecoENuMuBarCCBins (const std::vector< Double_t > vFDRecoENuMuBarCCBins) |
| virtual void | FillCPTFDPrediction (const std::vector< double > &par) const |
| virtual void | FillTransitionFDPrediction (const vector< double > &par) const |
| virtual void | NDFitResults (const std::vector< Double_t > xSecWeights) |
| virtual void | NDFitBinningNuMuCC (const std::vector< Double_t > trueEBins) |
| virtual void | NDFitBinningNuMuBarCC (const std::vector< Double_t > trueEBins) |
| virtual void | OutputFileName (const std::string outFile) |
| virtual void | SelectionEfficiencyFileName (const std::string selEffFileName) |
| virtual void | SelectionScheme (const NuCuts::NuAnaVersion_t anaVersion=NuCuts::kCC0250Std) |
| virtual void | ConfigureForExternalFit (const NuXFit::NuXAnalysis_t analSetting) |
| virtual void | WriteOutput (const Bool_t writeOutput) |
| virtual const Double_t | BestDm2 () const |
| virtual const Double_t | BestSn2 () const |
| virtual const Double_t | BestDm2Bar () const |
| virtual const Double_t | BestSn2Bar () const |
| virtual const Double_t | BestTransitionProb () const |
| virtual void | CPTAnalysis () |
| virtual void | TransitionAnalysis (const Double_t dm2, const Double_t sn2) |
Private Member Functions | |
| virtual const Bool_t | CacheFDMCEvents () |
| virtual const Bool_t | CreateHistograms () |
| virtual const Bool_t | CreateFDNuMuCCDataHisto () |
| virtual const Bool_t | CreateFDNuMuBarCCDataHisto () |
| virtual const Bool_t | CreateFDNuMuCCMCHisto () |
| virtual const Bool_t | CreateFDNuMuBarCCMCHisto () |
| virtual const Bool_t | FillFDDataHistograms () |
| virtual const Double_t | NuBarCCCrossSection (const Double_t trueNuE) const |
| virtual const Double_t | NuMuCCCrossSection (const Double_t trueNuE) const |
| virtual const Double_t | NuBarCCSelectionEfficiency (const Double_t trueNuE) const |
| virtual const Double_t | NuMuCCSelectionEfficiency (const Double_t trueNuE) const |
| virtual const NuXSecFit::NuSelectionResult_t | SelectedAs (NuEvent &nuEvent) const |
| virtual const NuCuts::NuAnaVersion_t | SelectionScheme () const |
| virtual void | SetupPars () |
| virtual void | SetupCPTPars () |
| virtual void | SetupTransitionPars () |
| virtual const Int_t | TruthIndex (const NuEvent &info) const |
Private Attributes | |
| Bool_t | fdoGridSearch |
| Bool_t | fwriteOutput |
| NuXFit::NuXAnalysis_t | fanalysisSetting |
| Double_t | fUp |
| Double_t | ffdDataPoT |
| Double_t | ffdMCPoT |
| Double_t | fdm2 |
| Double_t | fsn2 |
| Double_t | fBestDm2 |
| Double_t | fBestSn2 |
| Double_t | fBestDm2Bar |
| Double_t | fBestSn2Bar |
| Double_t | fBestTransitionProb |
| NuCuts::NuAnaVersion_t | fanaVersion |
| NuTreeWrapper * | ftFDDataTree |
| NuTreeWrapper * | ftFDMCTree |
| TFitterMinuit * | fFitter |
| TH1D * | fhFDDataRecoENuMuCC |
| TH1D * | fhFDDataRecoENuMuBarCC |
| TH1D * | fhFDMCRecoENuMuCC |
| TH1D * | fhFDMCRecoENuMuBarCC |
| std::string | fSelEffFileName |
| std::string | fxsecfilename |
| TFile * | fOutputFile |
| TH1D * | fhFDNuMuCCDataFromFile |
| TH1D * | fhFDNuMuBarCCDataFromFile |
| TGraph * | fNuBarCCCrossSectionGraph |
| TGraph * | fNuMuCCCrossSectionGraph |
| TH1D * | fhNuBarCCSelectionEfficiency |
| TH1D * | fhNuMuCCSelectionEfficiency |
| TH1F * | fhNuBarCCCrossSections |
| TH1F * | fhNuMuCCCrossSections |
| std::vector< NuEvent > | fvFDMCCCNuMuEvents |
| std::vector< NuEvent > | fvFDMCCCNuMuBarEvents |
| std::vector< Double_t > | fvFDRecoENuMuCCBins |
| std::vector< Double_t > | fvFDRecoENuMuBarCCBins |
| std::vector< Double_t > | fvNDFitPars |
| std::vector< Double_t > | fvTrueEBinsNuMuCC |
| std::vector< Double_t > | fvTrueEBinsNuMuBarCC |
| NuSystematic * | fnuSystematic |
|
|
Definition at line 112 of file NuXFitAnalysis.cxx. 00113 : fdoGridSearch(false), 00114 fwriteOutput(true), 00115 fUp(1.0), 00116 ffdDataPoT(0.0), 00117 ffdMCPoT(0.0), 00118 fdm2(0.0), 00119 fsn2(0.0), 00120 fBestDm2(-1.0), 00121 fBestSn2(-1.0), 00122 fBestDm2Bar(-1.0), 00123 fBestSn2Bar(-1.0) 00124 { 00125 fanalysisSetting = NuXFit::kUnknown; 00126 fanaVersion = NuCuts::kJJE1; 00127 fnuSystematic = new NuSystematic(); 00128 00129 fSelEffFileName = ""; 00130 fxsecfilename = ""; 00131 00132 fOutputFile = 0; 00133 00134 ftFDDataTree = 0; 00135 ftFDMCTree = 0; 00136 00137 fhNuBarCCSelectionEfficiency = 0; 00138 fhNuMuCCSelectionEfficiency = 0; 00139 fNuBarCCCrossSectionGraph = 0; 00140 fNuMuCCCrossSectionGraph = 0; 00141 fhNuBarCCCrossSections = 0; 00142 fhNuMuCCCrossSections = 0; 00143 00144 fhFDNuMuCCDataFromFile = 0; 00145 fhFDNuMuBarCCDataFromFile = 0; 00146 00147 fhFDDataRecoENuMuCC = 0; 00148 fhFDDataRecoENuMuBarCC = 0; 00149 fhFDMCRecoENuMuCC = 0; 00150 fhFDMCRecoENuMuBarCC = 0; 00151 00152 fFitter = new TFitterMinuit(); 00153 fFitter->CreateMinimizer(); 00154 fFitter->SetMinuitFCN(this); 00155 }
|
|
|
|
Definition at line 200 of file NuXFitAnalysis.cxx. References fhFDNuMuBarCCDataFromFile, fhFDNuMuCCDataFromFile, fnuSystematic, and fOutputFile. 00201 {
00202 if (fOutputFile){
00203 fOutputFile->Close();
00204 delete fOutputFile;
00205 fOutputFile = 0;
00206 }
00207
00208 if (fnuSystematic){delete fnuSystematic; fnuSystematic = 0;}
00209
00210 if (fhFDNuMuCCDataFromFile){
00211 delete fhFDNuMuCCDataFromFile; fhFDNuMuCCDataFromFile = 0;
00212 }
00213 if (fhFDNuMuBarCCDataFromFile){
00214 delete fhFDNuMuBarCCDataFromFile; fhFDNuMuBarCCDataFromFile = 0;
00215 }
00216 }
|
|
|
Definition at line 80 of file NuXFitAnalysis.h. 00080 {return fBestDm2;}
|
|
|
Definition at line 82 of file NuXFitAnalysis.h. 00082 {return fBestDm2Bar;}
|
|
|
Definition at line 81 of file NuXFitAnalysis.h. 00081 {return fBestSn2;}
|
|
|
Definition at line 83 of file NuXFitAnalysis.h. 00083 {return fBestSn2Bar;}
|
|
|
Definition at line 84 of file NuXFitAnalysis.h. 00085 {return fBestTransitionProb;}
|
|
|
Definition at line 1239 of file NuXFitAnalysis.cxx. References NuEvent::energy, ffdDataPoT, ffdMCPoT, fhFDDataRecoENuMuBarCC, fhFDDataRecoENuMuCC, fnuSystematic, fOutputFile, ftFDMCTree, fvFDMCCCNuMuBarEvents, fvFDMCCCNuMuEvents, fvNDFitPars, NuTreeWrapper::GetEntries(), NuTreeWrapper::GetInfoObject(), MSG, NuXSecFit::NuSelectionResult_t, NuEvent::rw, SelectedAs(), NuSystematic::Shift(), and TruthIndex(). Referenced by CPTAnalysis(), and TransitionAnalysis(). 01240 {
01241 if (!ftFDMCTree){
01242 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
01243 << "FD MC not supplied"
01244 << endl;
01245 return false;
01246 }
01247
01248 TH1D hFDRawMCRecoECCNuMuBar(*fhFDDataRecoENuMuBarCC);
01249 TH1D hFDRawMCRecoECCNuMu(*fhFDDataRecoENuMuCC);
01250 TH1D hFDNoOscPredRecoECCNuMuBar(*fhFDDataRecoENuMuBarCC);
01251 TH1D hFDNoOscPredRecoECCNuMu(*fhFDDataRecoENuMuCC);
01252
01253 fvFDMCCCNuMuEvents.clear();
01254 fvFDMCCCNuMuBarEvents.clear();
01255
01256 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
01257 << "Looping over FD MC:"
01258 << endl;
01259 Int_t mcEntries = ftFDMCTree->GetEntries();
01260 for (Int_t counter = 0;
01261 counter < mcEntries;
01262 ++counter){
01263 if (!(counter%10000)){
01264 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
01265 << counter << " of " << mcEntries
01266 << endl;
01267 }
01268 NuEvent currentEvent = ftFDMCTree->GetInfoObject(counter);
01269 fnuSystematic->Shift(currentEvent);
01270 NuSelectionResult_t recoType = this->SelectedAs(currentEvent);
01271 Double_t eventWeight = currentEvent.rw;
01272
01273 Int_t truthpar = this->TruthIndex(currentEvent);
01274 Double_t eventWeightPred = eventWeight;
01275 if (truthpar>=0){
01276 eventWeightPred *= fvNDFitPars[truthpar];
01277 }
01278
01279 if (NuXSecFit::kCCNuMu==recoType){
01280 fvFDMCCCNuMuEvents.push_back(currentEvent);
01281 hFDRawMCRecoECCNuMu.Fill(currentEvent.energy,eventWeight);
01282 hFDNoOscPredRecoECCNuMu.Fill(currentEvent.energy,eventWeightPred);
01283 }
01284 if (NuXSecFit::kCCNuMuBar==recoType){
01285 fvFDMCCCNuMuBarEvents.push_back(currentEvent);
01286 hFDRawMCRecoECCNuMuBar.Fill(currentEvent.energy,eventWeight);
01287 hFDNoOscPredRecoECCNuMuBar.Fill(currentEvent.energy,eventWeightPred);
01288 }
01289 }
01290
01291 if (ffdMCPoT){
01292 hFDNoOscPredRecoECCNuMu.Scale(ffdDataPoT/ffdMCPoT);
01293 hFDNoOscPredRecoECCNuMuBar.Scale(ffdDataPoT/ffdMCPoT);
01294 hFDRawMCRecoECCNuMu.Scale(ffdDataPoT/ffdMCPoT);
01295 hFDRawMCRecoECCNuMuBar.Scale(ffdDataPoT/ffdMCPoT);
01296 }
01297
01298 if (fwriteOutput){
01299 fOutputFile->cd();
01300 hFDNoOscPredRecoECCNuMu.Write("NoOscPredRecoECCNuMu");
01301 hFDNoOscPredRecoECCNuMuBar.Write("NoOscPredRecoECCNuMuBar");
01302 hFDRawMCRecoECCNuMu.Write("RawMCRecoECCNuMu");
01303 hFDRawMCRecoECCNuMuBar.Write("RawMCRecoECCNuMuBar");
01304 }
01305
01306 return true;
01307 }
|
|
||||||||||||
|
Definition at line 242 of file NuXFitAnalysis.cxx. 00245 {
00246 //Aim to minimise -2lnL. That's what I'm returning.
00247
00248 Double_t like = 0;
00249
00250 for (Int_t i=1; i<=fdPred->GetNbinsX(); ++i){
00251 //Bizarre limits because root histograms are silly
00252 Double_t mnu = fdPred->GetBinContent(i);
00253 Double_t dnu = fdData->GetBinContent(i);
00254 if (mnu<0.0001){mnu = 0.0001;}
00255 if (dnu){
00256 like += 2*(mnu - dnu + dnu*log(dnu/mnu));
00257 }
00258 else{like += 2*(mnu - dnu);}
00259 }
00260 // cout << "Like = " << like << endl;
00261 return like;
00262 }
|
|
|
Definition at line 265 of file NuXFitAnalysis.cxx. References fhFDDataRecoENuMuBarCC, fhFDDataRecoENuMuCC, fhFDMCRecoENuMuBarCC, and fhFDMCRecoENuMuCC. Referenced by CPTAnalysis(), and TransitionAnalysis(). 00266 {
00267 //Aim to minimise -2lnL. That's what I'm returning.
00268
00269 Double_t like = 0;
00270
00271 for (Int_t i=1; i<=fhFDMCRecoENuMuCC->GetNbinsX(); ++i){
00272 //Bizarre limits because root histograms are silly
00273 Double_t mnu = fhFDMCRecoENuMuCC->GetBinContent(i);
00274 Double_t dnu = fhFDDataRecoENuMuCC->GetBinContent(i);
00275 if (mnu<0.0001){mnu = 0.0001;}
00276 if (dnu){
00277 like += 2*(mnu - dnu + dnu*log(dnu/mnu));
00278 }
00279 else{like += 2*(mnu - dnu);}
00280 }
00281
00282 for (Int_t i=1; i<=fhFDMCRecoENuMuBarCC->GetNbinsX(); ++i){
00283 Double_t mbar = fhFDMCRecoENuMuBarCC->GetBinContent(i);
00284 Double_t dbar = fhFDDataRecoENuMuBarCC->GetBinContent(i);
00285 if (mbar<0.0001){mbar = 0.0001;}
00286 if (dbar){
00287 like += 2*(mbar - dbar + dbar*log(dbar/mbar));
00288 }
00289 else{like += 2*(mbar - dbar);}
00290 }
00291 // cout << "Like = " << like << endl;
00292 return like;
00293 }
|
|
|
Definition at line 796 of file NuXFitAnalysis.cxx. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00797 {
00798 fanalysisSetting = analSetting;
00799 this->CreateHistograms();
00800 this->FillFDDataHistograms();
00801 this->CacheFDMCEvents();
00802
00803 this->SetupPars();
00804 }
|
|
|
Definition at line 807 of file NuXFitAnalysis.cxx. References CacheFDMCEvents(), CalculateLikelihood(), CreateHistograms(), fanalysisSetting, fBestDm2, fBestDm2Bar, fBestSn2, fBestSn2Bar, fFitter, fhFDDataRecoENuMuBarCC, fhFDMCRecoENuMuBarCC, fhFDMCRecoENuMuCC, FillCPTFDPrediction(), FillFDDataHistograms(), fOutputFile, MSG, SetupPars(), and NuTreeWrapper::Write(). 00808 {
00809 fanalysisSetting = NuXFit::kCPT;
00810
00811 if (!this->CreateHistograms()){return;}
00812 if (!this->FillFDDataHistograms()){return;}
00813 if (!this->CacheFDMCEvents()){return;}
00814
00815 if (!fdoGridSearch){
00816 this->SetupPars();
00817
00818 fFitter->FixParameter(0);
00819 fFitter->FixParameter(1);
00820
00821 fFitter->Minimize();
00822 fFitter->PrintResults(0,0);
00823
00824 fBestDm2 = fFitter->GetParameter(0);
00825 fBestSn2 = fFitter->GetParameter(1);
00826 fBestDm2Bar = fFitter->GetParameter(2);
00827 fBestSn2Bar = fFitter->GetParameter(3);
00828 }
00829
00830 if (fdoGridSearch){
00831 Double_t bestChi2 = 1.0e10;
00832 Double_t bestsn2bar = 0.0;
00833 Double_t bestdm2bar = 0.0;
00834
00835 Double_t sn2BarLow = 0.8;
00836 Double_t sn2BarHigh = 1.0;
00837 Double_t sn2BarGranularity = 0.001;
00838 Double_t dm2BarLow = 1.0e-3;
00839 Double_t dm2BarHigh = 4.0e-3;
00840 Double_t dm2BarGranularity = 0.005e-3;
00841
00842 //Create the Chi2 histogram
00843 Int_t numSn2BarBins = (Int_t) round((sn2BarHigh-sn2BarLow)/sn2BarGranularity) + 1;
00844 Int_t numDm2BarBins = (Int_t) round((dm2BarHigh-dm2BarLow)/dm2BarGranularity) + 1;
00845 TH2D hChi2Bar("hChi2Bar",
00846 "",
00847 numSn2BarBins,
00848 sn2BarLow-sn2BarGranularity/2.0,
00849 sn2BarHigh+sn2BarGranularity/2.0,
00850 numDm2BarBins,
00851 dm2BarLow-dm2BarGranularity/2.0,
00852 dm2BarHigh+dm2BarGranularity/2.0);
00853
00854 for (Double_t sn2bar = sn2BarLow;
00855 sn2bar <= sn2BarHigh+sn2BarGranularity/2.0;
00856 sn2bar += sn2BarGranularity){
00857 MSG("NuMatrixFitter.cxx",Msg::kInfo) << "sn2bar = " << sn2bar << endl;
00858 for (Double_t dm2bar = dm2BarLow;
00859 dm2bar <= dm2BarHigh+dm2BarGranularity/2.0;
00860 dm2bar += dm2BarGranularity){
00861
00862 vector<Double_t> vParameters;
00863 vParameters.push_back(2.38);
00864 vParameters.push_back(1.0);
00865 vParameters.push_back(dm2bar);
00866 vParameters.push_back(sn2bar);
00867 this->FillCPTFDPrediction(vParameters);
00868
00869 Double_t chi2 = this->CalculateLikelihood(fhFDMCRecoENuMuBarCC,
00870 fhFDDataRecoENuMuBarCC);
00871
00872 // chi2 += this->CalculateLikelihood(numufdPred,numufdData);
00873 Int_t xBin = hChi2Bar.GetXaxis()->FindBin(sn2bar);
00874 Int_t yBin = hChi2Bar.GetYaxis()->FindBin(dm2bar);
00875 Int_t bin2D = hChi2Bar.GetBin(xBin,yBin);
00876 hChi2Bar.SetBinContent(bin2D,chi2);
00877 if (chi2 < bestChi2){
00878 bestChi2 = chi2;
00879 bestsn2bar = sn2bar;
00880 bestdm2bar = dm2bar;
00881 }//if
00882 }//dm2bar
00883 }//sn2bar
00884
00885 fBestDm2 = 2.38;
00886 fBestSn2 = 1.0;
00887 fBestDm2Bar = bestdm2bar;
00888 fBestSn2Bar = bestsn2bar;
00889 }
00890
00891 vector<Double_t> vBestFit;
00892 vBestFit.push_back(fBestDm2);
00893 vBestFit.push_back(fBestSn2);
00894 vBestFit.push_back(fBestDm2Bar);
00895 vBestFit.push_back(fBestSn2Bar);
00896 this->FillCPTFDPrediction(vBestFit);
00897 if (fwriteOutput){
00898 fOutputFile->cd();
00899 fhFDMCRecoENuMuCC->Write("BestFitFDMCRecoENuMuCC");
00900 fhFDMCRecoENuMuBarCC->Write("BestFitFDMCRecoENuMuBarCC");
00901 }
00902
00903
00904
00905
00906 // ROOT::Minuit2::MnUserParameters mnPars;
00907 // mnPars.Add("Dm2",0.003,0.2,0.0e-3,10.0e-3);
00908 // mnPars.Add("Sn2",1.0,0.2,0.0,2.0);
00909 // mnPars.Add("Dm2Bar",0.003,0.2,4.0e-3,8.0e-3);
00910 // mnPars.Add("Sn2Bar",1.0,0.2,0.4,1.6);
00911 // ROOT::Minuit2::MnMigrad mnMigrad(*this,mnPars);
00912 // cout << "Beginning second fit" << endl;
00913 // ROOT::Minuit2::FunctionMinimum funcMin = mnMigrad();
00914 // cout << "Function minimum is " << funcMin.UserParameters().Parameters()[2].Value() << ", " << funcMin.UserParameters().Parameters()[3].Value() << endl;
00915
00916 // ROOT::Minuit2::FCNBase& fcnBase = *this;
00917 // ROOT::Minuit2::MnContours contours(fcnBase,funcMin);
00918 // this->SetErrorDef(4);
00919 // ContoursError contErr = contours.Contour(2,3,20);
00920 // // cout << contErr << endl;
00921 // cout << "Contour:" << endl;
00922
00923 // std::vector<std::pair<Double_t,Double_t> > vContPoints = contErr();
00924
00925 // Double_t* x = new Double_t[vContPoints.size()];
00926 // for (UInt_t pointCount = 0; pointCount<vContPoints.size(); ++pointCount){
00927 // x[pointCount] = vContPoints[pointCount].first;
00928 // }
00929 // Double_t* y = new Double_t[vContPoints.size()];
00930 // for (UInt_t pointCount = 0; pointCount<vContPoints.size(); ++pointCount){
00931 // y[pointCount] = vContPoints[pointCount].second;
00932 // }
00933 // TGraph* gCont = new TGraph(vContPoints.size(),y,x);
00934 // TCanvas* cCont;
00935 // gCont->Draw("AL");
00936 // cout << contours << endl;
00937
00938 /*
00939 TGraph2DErrors* gConf = new TGraph2DErrors(100);
00940 fFitter->FixParameter(0);
00941 fFitter->FixParameter(1);
00942 fFitter->GetFitter()->GetConfidenceIntervals(gConf,0.66);
00943 if (fwriteOutput){
00944 fOutputFile->cd();
00945 gConf->Write("OneSigmaContour");
00946 }
00947 */
00948 }
|
|
|
Definition at line 307 of file NuXFitAnalysis.cxx. References fhFDDataRecoENuMuBarCC, fhFDNuMuBarCCDataFromFile, fhFDNuMuCCDataFromFile, fvFDRecoENuMuBarCCBins, and MSG. Referenced by CreateHistograms(). 00308 {
00309 if (fhFDDataRecoENuMuBarCC) {
00310 delete fhFDDataRecoENuMuBarCC; fhFDDataRecoENuMuBarCC = 0;
00311 }
00312
00313 if (fhFDNuMuCCDataFromFile && fhFDNuMuBarCCDataFromFile){
00314 fhFDDataRecoENuMuBarCC = new TH1D(*fhFDNuMuBarCCDataFromFile);
00315 fhFDDataRecoENuMuBarCC->Reset();
00316 return true;
00317 }
00318
00319 Int_t size = fvFDRecoENuMuBarCCBins.size();
00320 if (!size){
00321 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
00322 << "FD reconstructed energy binning not supplied."
00323 << endl;
00324 return false;
00325 }
00326
00327 Double_t* recoEBinEdges = new Double_t[size];
00328
00329 Int_t i=0;
00330 for (vector<Double_t>::const_iterator it =
00331 fvFDRecoENuMuBarCCBins.begin();
00332 it != fvFDRecoENuMuBarCCBins.end();
00333 ++it, ++i){
00334 recoEBinEdges[i] = *it;
00335 }
00336
00337 fhFDDataRecoENuMuBarCC = new TH1D("fhFDDataRecoENuMuBarCC",
00338 "FD NuMuBar CC data",
00339 size-1,
00340 recoEBinEdges);
00341
00342 if (!fhFDDataRecoENuMuBarCC) return false;
00343 return true;
00344 }
|
|
|
Definition at line 387 of file NuXFitAnalysis.cxx. References fhFDMCRecoENuMuBarCC, fhFDNuMuBarCCDataFromFile, fhFDNuMuCCDataFromFile, fvFDRecoENuMuBarCCBins, and MSG. Referenced by CreateHistograms(). 00388 {
00389 if (fhFDMCRecoENuMuBarCC) {
00390 delete fhFDMCRecoENuMuBarCC; fhFDMCRecoENuMuBarCC = 0;
00391 }
00392
00393 if (fhFDNuMuCCDataFromFile && fhFDNuMuBarCCDataFromFile){
00394 fhFDMCRecoENuMuBarCC = new TH1D(*fhFDNuMuBarCCDataFromFile);
00395 fhFDMCRecoENuMuBarCC->Reset();
00396 return true;
00397 }
00398
00399 Int_t size = fvFDRecoENuMuBarCCBins.size();
00400 if (!size){
00401 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
00402 << "FD reconstructed energy binning not supplied."
00403 << endl;
00404 return false;
00405 }
00406
00407 Double_t* recoEBinEdges = new Double_t[size];
00408
00409 Int_t i=0;
00410 for (vector<Double_t>::const_iterator it =
00411 fvFDRecoENuMuBarCCBins.begin();
00412 it != fvFDRecoENuMuBarCCBins.end();
00413 ++it, ++i){
00414 recoEBinEdges[i] = *it;
00415 }
00416
00417 fhFDMCRecoENuMuBarCC = new TH1D("fhFDMCRecoENuMuBarCC",
00418 "FD NuMuBar CC prediction",
00419 size-1,
00420 recoEBinEdges);
00421
00422 if (!fhFDMCRecoENuMuBarCC) return false;
00423 return true;
00424 }
|
|
|
Definition at line 347 of file NuXFitAnalysis.cxx. References fhFDDataRecoENuMuCC, fhFDNuMuCCDataFromFile, fvFDRecoENuMuCCBins, and MSG. Referenced by CreateHistograms(). 00348 {
00349 if (fhFDDataRecoENuMuCC) {
00350 delete fhFDDataRecoENuMuCC; fhFDDataRecoENuMuCC = 0;
00351 }
00352
00353 if (fhFDNuMuCCDataFromFile && fhFDNuMuBarCCDataFromFile){
00354 fhFDDataRecoENuMuCC = new TH1D(*fhFDNuMuCCDataFromFile);
00355 fhFDDataRecoENuMuCC->Reset();
00356 return true;
00357 }
00358
00359 Int_t size = fvFDRecoENuMuCCBins.size();
00360 if (!size){
00361 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
00362 << "FD reconstructed energy binning not supplied."
00363 << endl;
00364 return false;
00365 }
00366
00367 Double_t* recoEBinEdges = new Double_t[size];
00368
00369 Int_t i=0;
00370 for (vector<Double_t>::const_iterator it =
00371 fvFDRecoENuMuCCBins.begin();
00372 it != fvFDRecoENuMuCCBins.end();
00373 ++it, ++i){
00374 recoEBinEdges[i] = *it;
00375 }
00376
00377 fhFDDataRecoENuMuCC = new TH1D("fhFDDataRecoENuMuCC",
00378 "FD NuMu CC data",
00379 size-1,
00380 recoEBinEdges);
00381
00382 if (!fhFDDataRecoENuMuCC) return false;
00383 return true;
00384 }
|
|
|
Definition at line 427 of file NuXFitAnalysis.cxx. References fhFDMCRecoENuMuCC, fhFDNuMuCCDataFromFile, fvFDRecoENuMuCCBins, and MSG. Referenced by CreateHistograms(). 00428 {
00429 if (fhFDMCRecoENuMuCC) {
00430 delete fhFDMCRecoENuMuCC; fhFDMCRecoENuMuCC = 0;
00431 }
00432
00433 if (fhFDNuMuCCDataFromFile && fhFDNuMuBarCCDataFromFile){
00434 fhFDMCRecoENuMuCC = new TH1D(*fhFDNuMuCCDataFromFile);
00435 fhFDMCRecoENuMuCC->Reset();
00436 return true;
00437 }
00438
00439 Int_t size = fvFDRecoENuMuCCBins.size();
00440 if (!size){
00441 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
00442 << "FD reconstructed energy binning not supplied."
00443 << endl;
00444 return false;
00445 }
00446
00447 Double_t* recoEBinEdges = new Double_t[size];
00448
00449 Int_t i=0;
00450 for (vector<Double_t>::const_iterator it =
00451 fvFDRecoENuMuCCBins.begin();
00452 it != fvFDRecoENuMuCCBins.end();
00453 ++it, ++i){
00454 recoEBinEdges[i] = *it;
00455 }
00456
00457 fhFDMCRecoENuMuCC = new TH1D("fhFDMCRecoENuMuCC",
00458 "FD NuMu CC prediction",
00459 size-1,
00460 recoEBinEdges);
00461
00462 if (!fhFDMCRecoENuMuCC) return false;
00463 return true;
00464 }
|
|
|
Definition at line 784 of file NuXFitAnalysis.cxx. References CreateFDNuMuBarCCDataHisto(), CreateFDNuMuBarCCMCHisto(), CreateFDNuMuCCDataHisto(), and CreateFDNuMuCCMCHisto(). Referenced by CPTAnalysis(). 00785 {
00786 Bool_t goodConfig = true;
00787 if (!this->CreateFDNuMuCCDataHisto()) goodConfig = false;
00788 if (!this->CreateFDNuMuBarCCDataHisto()) goodConfig = false;
00789 if (!this->CreateFDNuMuCCMCHisto()) goodConfig = false;
00790 if (!this->CreateFDNuMuBarCCMCHisto()) goodConfig = false;
00791 return goodConfig;
00792 }
|
|
|
Definition at line 43 of file NuXFitAnalysis.h. References fxsecfilename. 00044 {fxsecfilename = xSecFileName;}
|
|
|
Definition at line 45 of file NuXFitAnalysis.h. References fdoGridSearch. 00045 {fdoGridSearch=doGridSearch;}
|
|
|
Definition at line 736 of file NuXFitAnalysis.cxx. References ffdDataPoT, ftFDDataTree, NuTreeWrapper::GetPoT(), and MSG. 00737 {
00738 if (ftFDDataTree){delete ftFDDataTree; ftFDDataTree = 0;}
00739 ftFDDataTree = new NuTreeWrapper(fdDataFileName);
00740
00741 //Get the total PoT
00742 ffdDataPoT = ftFDDataTree->GetPoT();
00743
00744 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
00745 << "fdDataPoT: " << ffdDataPoT
00746 << endl;
00747 }
|
|
|
Definition at line 49 of file NuXFitAnalysis.h. References ffdDataPoT. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00050 {ffdDataPoT = pot;}
|
|
|
Definition at line 770 of file NuXFitAnalysis.cxx. References ffdMCPoT, ftFDMCTree, NuTreeWrapper::GetPoT(), and MSG. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00771 {
00772 if (ftFDMCTree){delete ftFDMCTree; ftFDMCTree = 0;}
00773 ftFDMCTree = new NuTreeWrapper(fdMCFileName);
00774
00775 //Get the total PoT
00776 ffdMCPoT = ftFDMCTree->GetPoT();
00777
00778 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
00779 << "fdMCPoT: " << ffdMCPoT
00780 << endl;
00781 }
|
|
|
Definition at line 750 of file NuXFitAnalysis.cxx. References fhFDNuMuBarCCDataFromFile. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00751 {
00752 if (fhFDNuMuBarCCDataFromFile){
00753 delete fhFDNuMuBarCCDataFromFile; fhFDNuMuBarCCDataFromFile = 0;
00754 }
00755 fhFDNuMuBarCCDataFromFile = new TH1D(fdData);
00756 fhFDNuMuBarCCDataFromFile->SetDirectory(0);
00757 }
|
|
|
Definition at line 760 of file NuXFitAnalysis.cxx. References fhFDNuMuCCDataFromFile. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00761 {
00762 if (fhFDNuMuCCDataFromFile){
00763 delete fhFDNuMuCCDataFromFile; fhFDNuMuCCDataFromFile = 0;
00764 }
00765 fhFDNuMuCCDataFromFile = new TH1D(fdData);
00766 fhFDNuMuCCDataFromFile->SetDirectory(0);
00767 }
|
|
|
Definition at line 56 of file NuXFitAnalysis.h. References fvFDRecoENuMuBarCCBins. 00057 {fvFDRecoENuMuBarCCBins = vFDRecoENuMuBarCCBins;}
|
|
|
Definition at line 53 of file NuXFitAnalysis.h. References fvFDRecoENuMuCCBins. 00054 {fvFDRecoENuMuCCBins = vFDRecoENuMuCCBins;}
|
|
|
Definition at line 468 of file NuXFitAnalysis.cxx. References NuEvent::iaction, NuEvent::inu, NuEvent::neuEnMC, NuUtilities::OscillationWeight(), NuEvent::rw, NuEvent::shwEn, and NuEvent::trkEn. Referenced by CPTAnalysis(). 00469 {
00470 //Reset recoE histograms (removes bin contents and errors)
00471 fhFDMCRecoENuMuCC->Reset();
00472 fhFDMCRecoENuMuBarCC->Reset();
00473
00474 Double_t shwEShift=1.0;
00475 Double_t trkEShift = 1.0;
00476
00477 Double_t Dm2 = par[0];
00478 Double_t Sn2 = par[1];
00479 Double_t Dm2Bar = par[2];
00480 Double_t Sn2Bar = par[3];
00481
00482 //Fill the nubar histogram, weighted with truth parameters
00483 for (vector<NuEvent>::const_iterator itBar
00484 = fvFDMCCCNuMuBarEvents.begin();
00485 itBar!=fvFDMCCCNuMuBarEvents.end();
00486 ++itBar){
00487 NuEvent barEvent = *itBar;
00488 Int_t truthpar = this->TruthIndex(barEvent);
00489 Double_t barweight = 1.0;
00490 barweight *= barEvent.rw;
00491 if (truthpar>=0){
00492 barweight *= fvNDFitPars[truthpar];
00493 }
00494 Double_t thisSn2 = 0.0;
00495 Double_t thisDm2 = 0.0;
00496 if (1==barEvent.iaction){
00497 if (-14==barEvent.inu){
00498 thisSn2 = Sn2Bar;
00499 thisDm2 = Dm2Bar;
00500 }
00501 if (14==barEvent.inu){
00502 thisSn2 = Sn2;
00503 thisDm2 = Dm2;
00504 }
00505 }
00506 Double_t oscweightbar = NuUtilities::OscillationWeight(barEvent.neuEnMC,
00507 thisDm2, thisSn2);
00508 barweight *= oscweightbar;
00509 Double_t recoNuE = shwEShift*(barEvent.shwEn)
00510 + trkEShift*(barEvent.trkEn);
00511 fhFDMCRecoENuMuBarCC->Fill(recoNuE,barweight);
00512 }
00513 if (ffdMCPoT){fhFDMCRecoENuMuBarCC->Scale(ffdDataPoT/ffdMCPoT);}
00514
00515 //Fill the numu histogram, weighted with truth parameters
00516 for (vector<NuEvent>::const_iterator itNu
00517 = fvFDMCCCNuMuEvents.begin();
00518 itNu!=fvFDMCCCNuMuEvents.end();
00519 ++itNu){
00520 NuEvent nuEvent = *itNu;
00521 Int_t truthpar = this->TruthIndex(nuEvent);
00522 Double_t nuweight = 1.0;
00523 nuweight *= nuEvent.rw;
00524 if (truthpar>=0){
00525 nuweight *= fvNDFitPars[truthpar];
00526 }
00527 Double_t thisSn2 = 0.0;
00528 Double_t thisDm2 = 0.0;
00529 if (1==nuEvent.iaction){
00530 if (-14==nuEvent.inu){
00531 thisSn2 = Sn2Bar;
00532 thisDm2 = Dm2Bar;
00533 }
00534 if (14==nuEvent.inu){
00535 thisSn2 = Sn2;
00536 thisDm2 = Dm2;
00537 }
00538 }
00539 Double_t oscweight = NuUtilities::OscillationWeight(nuEvent.neuEnMC,
00540 thisDm2, thisSn2);
00541 nuweight *= oscweight;
00542 Double_t recoNuE = shwEShift*(nuEvent.shwEn)
00543 + trkEShift*(nuEvent.trkEn);
00544 fhFDMCRecoENuMuCC->Fill(recoNuE,nuweight);
00545 }
00546 if (ffdMCPoT){fhFDMCRecoENuMuCC->Scale(ffdDataPoT/ffdMCPoT);}
00547 }
|
|
|
Definition at line 1133 of file NuXFitAnalysis.cxx. References NuEvent::energy, fhFDDataRecoENuMuBarCC, fhFDDataRecoENuMuCC, fhFDNuMuBarCCDataFromFile, fhFDNuMuCCDataFromFile, fOutputFile, ftFDDataTree, NuTreeWrapper::GetEntries(), NuTreeWrapper::GetInfoObject(), NuEvent::iaction, NuEvent::inu, MSG, NuEvent::neuEnMC, NuXSecFit::NuSelectionResult_t, NuUtilities::OscillationWeight(), NuEvent::rw, SelectedAs(), and NuTreeWrapper::Write(). Referenced by CPTAnalysis(), and TransitionAnalysis(). 01134 {
01135 //Preferentially take data from histograms if they've been supplied
01136 if (fhFDNuMuCCDataFromFile && fhFDNuMuBarCCDataFromFile){
01137 if (fhFDDataRecoENuMuCC){
01138 delete fhFDDataRecoENuMuCC; fhFDDataRecoENuMuCC = 0;
01139 }
01140 if (fhFDDataRecoENuMuBarCC){
01141 delete fhFDDataRecoENuMuBarCC; fhFDDataRecoENuMuBarCC = 0;
01142 }
01143 fhFDDataRecoENuMuCC = new TH1D(*fhFDNuMuCCDataFromFile);
01144 fhFDDataRecoENuMuBarCC = new TH1D(*fhFDNuMuBarCCDataFromFile);
01145
01146 if (fwriteOutput){
01147 fOutputFile->cd();
01148 fhFDDataRecoENuMuCC->Write("InputFDNuMuCCData");
01149 fhFDDataRecoENuMuBarCC->Write("InputFDNuMuBarCCData");
01150 }
01151 return true;
01152 }
01153
01154 if (!fhFDDataRecoENuMuCC){
01155 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
01156 << "FD numu data histogram not created"
01157 << endl;
01158 return false;
01159 }
01160 if (!fhFDDataRecoENuMuBarCC){
01161 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
01162 << "FD numubar data histogram not created"
01163 << endl;
01164 return false;
01165 }
01166 if (!ftFDDataTree){
01167 MSG("NuXFitAnalysis.cxx",Msg::kWarning)
01168 << "FD data not supplied"
01169 << endl;
01170 return false;
01171 }
01172
01173 fhFDDataRecoENuMuCC->Reset();
01174 fhFDDataRecoENuMuBarCC->Reset();
01175
01176 Double_t Sn2 = 1.0;
01177 Double_t Sn2Bar = 1.0;
01178 Double_t Dm2 = 0.003;
01179 Double_t Dm2Bar = 0.003;
01180 /*
01181 Double_t Sn2 = 0.0;
01182 Double_t Sn2Bar = 0.0;
01183 Double_t Dm2 = 0.0;
01184 Double_t Dm2Bar = 0.0;
01185 */
01186 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
01187 << "Looping over FD data:"
01188 << endl;
01189 Int_t dataEntries = ftFDDataTree->GetEntries();
01190 for (Int_t counter = 0;
01191 counter < dataEntries;
01192 ++counter){
01193 if (!(counter%10000)){
01194 MSG("NuXFitAnalysis.cxx",Msg::kInfo)
01195 << counter << " of " << dataEntries
01196 << endl;
01197 }
01198 NuEvent currentEvent = ftFDDataTree->GetInfoObject(counter);
01199 NuSelectionResult_t recoType = this->SelectedAs(currentEvent);
01200 Double_t recoEnergy = currentEvent.energy;
01201 Double_t nuweight = 1.0;
01202 nuweight *= currentEvent.rw;
01203
01204 //Fake oscillations
01205 Double_t thisSn2 = 0.0;
01206 Double_t thisDm2 = 0.0;
01207 if (1==currentEvent.iaction){
01208 if (-14==currentEvent.inu){
01209 thisSn2 = Sn2Bar;
01210 thisDm2 = Dm2Bar;
01211 }
01212 if (14==currentEvent.inu){
01213 thisSn2 = Sn2;
01214 thisDm2 = Dm2;
01215 }
01216 }
01217 Double_t oscweight = NuUtilities::OscillationWeight(currentEvent.neuEnMC,
01218 thisDm2, thisSn2);
01219 nuweight *= oscweight;
01220
01221 if (recoType==NuXSecFit::kCCNuMu){
01222 fhFDDataRecoENuMuCC->Fill(recoEnergy,nuweight);
01223 }
01224 if (recoType==NuXSecFit::kCCNuMuBar){
01225 fhFDDataRecoENuMuBarCC->Fill(recoEnergy,nuweight);
01226 }
01227 }
01228
01229 if (fwriteOutput){
01230 fOutputFile->cd();
01231 fhFDDataRecoENuMuCC->Write("InputFDNuMuCCData");
01232 fhFDDataRecoENuMuBarCC->Write("InputFDNuMuBarCCData");
01233 }
01234
01235 return true;
01236 }
|
|
|
Definition at line 551 of file NuXFitAnalysis.cxx. References NuEvent::iaction, NuEvent::inu, NuEvent::neuEnMC, NuUtilities::OscillationWeight(), NuEvent::Reset(), NuEvent::rw, NuEvent::shwEn, and NuEvent::trkEn. Referenced by TransitionAnalysis(). 00552 {
00553 //Reset recoE histograms
00554 fhFDMCRecoENuMuCC->Reset();
00555 fhFDMCRecoENuMuBarCC->Reset();
00556
00557 Double_t shwEShift=1.0;
00558 Double_t trkEShift = 1.0;
00559
00560 Double_t Dm2 = fdm2;
00561 Double_t Sn2 = fsn2;
00562 Double_t Dm2Bar = fdm2;
00563 Double_t Sn2Bar = fsn2;
00564 Double_t transitionProb = par[0];
00565
00566 //Fill the nubar histogram, weighted with truth parameters
00567 for (vector<NuEvent>::const_iterator itBar
00568 = fvFDMCCCNuMuBarEvents.begin();
00569 itBar!=fvFDMCCCNuMuBarEvents.end();
00570 ++itBar){
00571 NuEvent barEvent = *itBar;
00572 Int_t truthpar = this->TruthIndex(barEvent);
00573 Double_t barweight = 1.0;
00574 barweight *= barEvent.rw;
00575 if (truthpar>=0){
00576 barweight *= fvNDFitPars[truthpar];
00577 }
00578 Double_t thisSn2 = 0.0;
00579 Double_t thisDm2 = 0.0;
00580 if (1==barEvent.iaction){
00581 if (-14==barEvent.inu){
00582 thisSn2 = Sn2Bar;
00583 thisDm2 = Dm2Bar;
00584 }
00585 if (14==barEvent.inu){
00586 thisSn2 = Sn2;
00587 thisDm2 = Dm2;
00588 }
00589 }
00590 Double_t oscweightbar = NuUtilities::OscillationWeight(barEvent.neuEnMC,
00591 thisDm2, thisSn2);
00592 Double_t transitionWeight = barweight;
00593 barweight *= oscweightbar;
00594 Double_t recoNuE = shwEShift*(barEvent.shwEn)
00595 + trkEShift*(barEvent.trkEn);
00596 Double_t trueNuE = barEvent.neuEnMC;
00597 fhFDMCRecoENuMuBarCC->Fill(recoNuE,barweight);
00598 if (1==barEvent.iaction){
00599 if (-14==barEvent.inu){
00600 transitionWeight *= 1.0-oscweightbar;
00601 transitionWeight *= transitionProb;
00602 Double_t nuBarSelEff = this->NuBarCCSelectionEfficiency(trueNuE);
00603 Double_t nuBarXSec = this->NuBarCCCrossSection(trueNuE);
00604 if (nuBarSelEff && nuBarXSec){
00605 transitionWeight /= nuBarSelEff;
00606 transitionWeight /= nuBarXSec;
00607 }
00608 transitionWeight *= this->NuMuCCSelectionEfficiency(trueNuE);
00609 transitionWeight *= this->NuMuCCCrossSection(trueNuE);
00610 fhFDMCRecoENuMuCC->Fill(recoNuE,transitionWeight);
00611 }
00612 }
00613 }
00614 if (ffdMCPoT){fhFDMCRecoENuMuBarCC->Scale(ffdDataPoT/ffdMCPoT);}
00615
00616 //Fill the numu histogram, weighted with truth parameters
00617 for (vector<NuEvent>::const_iterator itNu
00618 = fvFDMCCCNuMuEvents.begin();
00619 itNu!=fvFDMCCCNuMuEvents.end();
00620 ++itNu){
00621 NuEvent nuEvent = *itNu;
00622 Int_t truthpar = this->TruthIndex(nuEvent);
00623 Double_t nuweight = 1.0;
00624 nuweight *= nuEvent.rw;
00625 if (truthpar>=0){
00626 nuweight *= fvNDFitPars[truthpar];
00627 }
00628 Double_t thisSn2 = 0.0;
00629 Double_t thisDm2 = 0.0;
00630 if (1==nuEvent.iaction){
00631 if (-14==nuEvent.inu){
00632 thisSn2 = Sn2Bar;
00633 thisDm2 = Dm2Bar;
00634 }
00635 if (14==nuEvent.inu){
00636 thisSn2 = Sn2;
00637 thisDm2 = Dm2;
00638 }
00639 }
00640 Double_t oscweight = NuUtilities::OscillationWeight(nuEvent.neuEnMC,
00641 thisDm2, thisSn2);
00642 Double_t transitionWeight = nuweight;
00643 nuweight *= oscweight;
00644 Double_t recoNuE = shwEShift*(nuEvent.shwEn)
00645 + trkEShift*(nuEvent.trkEn);
00646 Double_t trueNuE = nuEvent.neuEnMC;
00647 fhFDMCRecoENuMuCC->Fill(recoNuE,nuweight);
00648 if (1==nuEvent.iaction){
00649 if (14==nuEvent.inu){
00650 transitionWeight *= 1.0-oscweight;
00651 transitionWeight *= transitionProb;
00652 transitionWeight *= this->NuBarCCSelectionEfficiency(trueNuE);
00653 transitionWeight *= this->NuBarCCCrossSection(trueNuE);
00654 Double_t nuMuSelEff = this->NuMuCCSelectionEfficiency(trueNuE);
00655 Double_t nuMuXSec = this->NuMuCCCrossSection(trueNuE);
00656 if (nuMuSelEff && nuMuXSec){
00657 transitionWeight /= nuMuSelEff;
00658 transitionWeight /= nuMuXSec;
00659 }
00660 fhFDMCRecoENuMuBarCC->Fill(recoNuE,transitionWeight);
00661 }
00662 }
00663 }
00664 if (ffdMCPoT){fhFDMCRecoENuMuCC->Scale(ffdDataPoT/ffdMCPoT);}
00665 }
|
|
|
Definition at line 64 of file NuXFitAnalysis.h. References fvTrueEBinsNuMuBarCC. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00065 {fvTrueEBinsNuMuBarCC = trueEBins;}
|
|
|
Definition at line 62 of file NuXFitAnalysis.h. References fvTrueEBinsNuMuCC. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00063 {fvTrueEBinsNuMuCC = trueEBins;}
|
|
|
Definition at line 60 of file NuXFitAnalysis.h. References fvNDFitPars. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00061 {fvNDFitPars = xSecWeights;}
|
|
|
Definition at line 669 of file NuXFitAnalysis.cxx. 00670 {
00671 // return fNuBarCCCrossSectionGraph->Eval(trueNuE,0,"");
00672 return fhNuBarCCCrossSections->
00673 GetBinContent(fhNuBarCCCrossSections->FindBin(trueNuE));
00674 }
|
|
|
Definition at line 678 of file NuXFitAnalysis.cxx. 00679 {
00680 return fhNuBarCCSelectionEfficiency->
00681 GetBinContent(fhNuBarCCSelectionEfficiency->FindBin(trueNuE));
00682 }
|
|
|
Definition at line 686 of file NuXFitAnalysis.cxx. 00687 {
00688 // return fNuMuCCCrossSectionGraph->Eval(trueNuE,0,"");
00689 return fhNuMuCCCrossSections->
00690 GetBinContent(fhNuMuCCCrossSections->FindBin(trueNuE));
00691 }
|
|
|
Definition at line 695 of file NuXFitAnalysis.cxx. 00696 {
00697 return fhNuMuCCSelectionEfficiency->
00698 GetBinContent(fhNuMuCCSelectionEfficiency->FindBin(trueNuE));
00699 }
|
|
|
Definition at line 220 of file NuXFitAnalysis.cxx. References MSG. 00221 {
00222 static Int_t fitcounter = 0;
00223 if (!(fitcounter%50)){
00224 cout << "Minuit FD XFit call " << fitcounter << endl;
00225 }
00226 ++fitcounter;
00227 if (NuXFit::kCPT == fanalysisSetting){
00228 this->FillCPTFDPrediction(pars);
00229 }
00230 else if(NuXFit::kTransition == fanalysisSetting){
00231 this->FillTransitionFDPrediction(pars);
00232 }
00233 else{
00234 MSG("NuXFitAnalysis.cxx",Msg::kFatal)
00235 << "Incorrect analysis setting" << endl;
00236 return -1.0;
00237 }
00238 return this->CalculateLikelihood();
00239 }
|
|
|
Definition at line 296 of file NuXFitAnalysis.cxx. References fOutputFile. 00297 {
00298 if (fOutputFile){
00299 fOutputFile->Close();
00300 delete fOutputFile;
00301 fOutputFile = 0;
00302 }
00303 fOutputFile = new TFile(outFile.c_str(),"RECREATE");
00304 }
|
|
|
Definition at line 1311 of file NuXFitAnalysis.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 CacheFDMCEvents(), and FillFDDataHistograms(). 01312 {
01313 NuCuts nuCuts;
01314 nuEvent.anaVersion = this->SelectionScheme();
01315
01316 //cut on LI
01317 if (nuCuts.IsLI(nuEvent)) return NuXSecFit::kUnknown;
01318 //cut on the data quality
01319 if (!nuCuts.IsGoodDataQuality(nuEvent)) return NuXSecFit::kUnknown;
01320 //cut on the spill time
01321 if (!nuCuts.IsGoodTimeToNearestSpill(nuEvent)) return NuXSecFit::kUnknown;
01322 //cut on the beam
01323 if (!nuCuts.IsGoodBeam(nuEvent)) return NuXSecFit::kUnknown;
01324
01325 //cut on whether event vtx is in fid vol (does nothing for CC ana)
01326 // if (!nuCuts.IsInFidVol(evt,nu)) continue;
01327 //ensure good number of tracks in event (note preselection above)
01328 if (!nuCuts.IsGoodNumberOfTracks(nuEvent)) return NuXSecFit::kUnknown;
01329 //check trk is in fiducial volume (note preselection above)
01330 if (!nuCuts.IsInFidVolTrk(nuEvent)) return NuXSecFit::kUnknown;
01331
01332 //require a good trk fit
01333 if (!nuCuts.IsGoodTrackFitPass(nuEvent)) return NuXSecFit::kUnknown;
01334 //require a forward going neutrino about beam direction
01335 if (!nuCuts.IsGoodDirCos(nuEvent)) return NuXSecFit::kUnknown;
01336
01337 //cut on the PID
01338 if (!nuCuts.IsGoodPID(nuEvent)) {
01339 return NuXSecFit::kUnknown;
01340 }
01341 //cut on the fractional track momentum and sign error
01342 if (!nuCuts.IsGoodSigmaQP_QP(nuEvent)) {
01343 return NuXSecFit::kUnknown;
01344 }
01345 //cut on the track fit probability
01346 if (!nuCuts.IsGoodFitProb(nuEvent)) {
01347 return NuXSecFit::kUnknown;
01348 }
01349 if (!nuCuts.IsGoodMajorityCurvature(nuEvent)){
01350 return NuXSecFit::kUnknown;
01351 }
01352
01353 if (-1==nuEvent.charge){return NuXSecFit::kCCNuMu;}
01354 if (1==nuEvent.charge){return NuXSecFit::kCCNuMuBar;}
01355 return NuXSecFit::kUnknown;
01356 }
|
|
|
Definition at line 67 of file NuXFitAnalysis.h. References fSelEffFileName. 00068 {fSelEffFileName = selEffFileName;}
|
|
|
Definition at line 106 of file NuXFitAnalysis.h. Referenced by SelectedAs(). 00107 {return fanaVersion;}
|
|
|
Definition at line 69 of file NuXFitAnalysis.h. References fanaVersion. 00071 {fanaVersion = anaVersion;}
|
|
|
Definition at line 37 of file NuXFitAnalysis.h. References fUp. 00037 {fUp = up;}
|
|
|
Definition at line 1039 of file NuXFitAnalysis.cxx. References fFitter. Referenced by SetupPars(). 01040 {
01041 fFitter->SetParameter(0,
01042 "Dm2",
01043 0.00238,0.2,1.0,0.0);
01044 fFitter->SetParameter(1,
01045 "Sn2",
01046 1.0,0.2,1.0,0.0);
01047 fFitter->SetParameter(2,
01048 "Dm2Bar",
01049 0.00238,0.2,1.0,0.0);
01050 fFitter->SetParameter(3,
01051 "Sn2Bar",
01052 1.0,0.2,1.0,0.0);
01053 }
|
|
|
Definition at line 1021 of file NuXFitAnalysis.cxx. References MSG, SetupCPTPars(), and SetupTransitionPars(). Referenced by CPTAnalysis(), and TransitionAnalysis(). 01022 {
01023 if (NuXFit::kCPT == fanalysisSetting){
01024 this->SetupCPTPars();
01025 return;
01026 }
01027 else if (NuXFit::kTransition == fanalysisSetting){
01028 this->SetupTransitionPars();
01029 return;
01030 }
01031 else{
01032 MSG("NuXFitAnalysis.cxx",Msg::kFatal)
01033 << "Incorrect analysis setting" << endl;
01034 return;
01035 }
01036 }
|
|
|
Definition at line 1056 of file NuXFitAnalysis.cxx. References fFitter, fhNuBarCCCrossSections, fhNuBarCCSelectionEfficiency, fhNuMuCCCrossSections, fhNuMuCCSelectionEfficiency, fNuBarCCCrossSectionGraph, fNuMuCCCrossSectionGraph, fSelEffFileName, and fxsecfilename. Referenced by SetupPars(). 01057 {
01058 //Get cross-sections
01059 TFile *xsecfile = new TFile(fxsecfilename.c_str(),"READ");
01060
01061 if (fNuMuCCCrossSectionGraph){
01062 delete fNuMuCCCrossSectionGraph;
01063 fNuMuCCCrossSectionGraph = 0;
01064 }
01065 if (fhNuMuCCCrossSections){
01066 delete fhNuMuCCCrossSections;
01067 fhNuMuCCCrossSections = 0;
01068 }
01069 TH1F* XSec_CC = (TH1F*) xsecfile->Get("h_numu_cc_tot");
01070 fhNuMuCCCrossSections = new TH1F(*XSec_CC);
01071 fhNuMuCCCrossSections->SetDirectory(0);
01072 Float_t *x = new Float_t[XSec_CC->GetNbinsX()];
01073 Float_t *y = new Float_t[XSec_CC->GetNbinsX()];
01074 for(int i=0;i<XSec_CC->GetNbinsX();i++) {
01075 x[i] = XSec_CC->GetBinCenter(i+1);
01076 y[i] = XSec_CC->GetBinContent(i+1);
01077 }
01078 fNuMuCCCrossSectionGraph = new TGraph(XSec_CC->GetNbinsX(),x,y);
01079 if (x) {delete[] x; x = 0;}
01080 if (y) {delete[] y; y = 0;}
01081
01082 if (fNuBarCCCrossSectionGraph){
01083 delete fNuBarCCCrossSectionGraph;
01084 fNuBarCCCrossSectionGraph = 0;
01085 }
01086 if (fhNuBarCCCrossSections){
01087 delete fhNuBarCCCrossSections;
01088 fhNuBarCCCrossSections = 0;
01089 }
01090 XSec_CC = (TH1F*) xsecfile->Get("h_numubar_cc_tot");
01091 fhNuBarCCCrossSections = new TH1F(*XSec_CC);
01092 fhNuBarCCCrossSections->SetDirectory(0);
01093 x = new Float_t[XSec_CC->GetNbinsX()];
01094 y = new Float_t[XSec_CC->GetNbinsX()];
01095 for(int i=0;i<XSec_CC->GetNbinsX();i++) {
01096 x[i] = XSec_CC->GetBinCenter(i+1);
01097 y[i] = XSec_CC->GetBinContent(i+1);
01098 }
01099 fNuBarCCCrossSectionGraph = new TGraph(XSec_CC->GetNbinsX(),x,y);
01100 if (x) {delete[] x; x = 0;}
01101 if (y) {delete[] y; y = 0;}
01102
01103 xsecfile->Close();
01104 if (xsecfile){delete xsecfile; xsecfile = 0;}
01105
01106 //Get selection efficiencies
01107 TFile* selEffFile = new TFile(fSelEffFileName.c_str(),"READ");
01108
01109 if (fhNuBarCCSelectionEfficiency){
01110 delete fhNuBarCCSelectionEfficiency;
01111 fhNuBarCCSelectionEfficiency = 0;
01112 }
01113 fhNuBarCCSelectionEfficiency = (TH1D*) selEffFile->Get("EfficiencyPQ_FD");
01114 fhNuBarCCSelectionEfficiency->SetDirectory(0);
01115
01116 if (fhNuMuCCSelectionEfficiency){
01117 delete fhNuMuCCSelectionEfficiency;
01118 fhNuMuCCSelectionEfficiency = 0;
01119 }
01120 fhNuMuCCSelectionEfficiency = (TH1D*) selEffFile->Get("Efficiency_FD");
01121 fhNuMuCCSelectionEfficiency->SetDirectory(0);
01122
01123 selEffFile->Close();
01124 if (selEffFile){delete selEffFile; selEffFile = 0;}
01125
01126 //Setup fit parameters
01127 fFitter->SetParameter(0,
01128 "transitionProb",
01129 0.0,0.2,1.0,0.0);
01130 }
|
|
||||||||||||
|
Definition at line 951 of file NuXFitAnalysis.cxx. References CacheFDMCEvents(), CalculateLikelihood(), fanalysisSetting, fBestTransitionProb, fdm2, fFitter, fhFDDataRecoENuMuBarCC, fhFDMCRecoENuMuBarCC, fhFDMCRecoENuMuCC, FillFDDataHistograms(), FillTransitionFDPrediction(), fOutputFile, fsn2, MSG, SetupPars(), and NuTreeWrapper::Write(). 00953 {
00954 fanalysisSetting = NuXFit::kTransition;
00955 fdm2 = dm2;
00956 fsn2 = sn2;
00957
00958 if (!this->CacheFDMCEvents()){return;}
00959 if (!this->FillFDDataHistograms()){return;}
00960
00961 if (!fdoGridSearch){
00962 this->SetupPars();
00963
00964 fFitter->Minimize();
00965 fFitter->PrintResults(0,0);
00966
00967 fBestTransitionProb = fFitter->GetParameter(0);
00968 }
00969
00970 if (fdoGridSearch){
00971 Double_t bestChi2 = 1.0e10;
00972 Double_t bestTransitionProb = 0.0;
00973
00974 Double_t transitionProbLow = 0.0;
00975 Double_t transitionProbHigh = 1.0;
00976 Double_t transitionProbGranularity = 0.05;
00977
00978 //Create the chi2 histogram
00979 Int_t numTransitionProbBins =
00980 (Int_t) round((transitionProbHigh-transitionProbLow)/
00981 transitionProbGranularity) + 1;
00982 TH1D hChi2Trans("hChi2Trans",
00983 "",
00984 numTransitionProbBins,
00985 transitionProbLow-transitionProbGranularity/2.0,
00986 transitionProbHigh+transitionProbGranularity/2.0);
00987 for (Double_t transitionProb = transitionProbLow;
00988 transitionProb <= transitionProbHigh+transitionProbGranularity/2.0;
00989 transitionProb += transitionProbGranularity){
00990 MSG("NuMatrixFitter.cxx",Msg::kInfo)
00991 << "Fitting transitionProb = " << transitionProb << endl;
00992
00993 vector<Double_t> vParams;
00994 vParams.push_back(transitionProb);
00995 this->FillTransitionFDPrediction(vParams);
00996
00997 Double_t chi2 = this->CalculateLikelihood(fhFDMCRecoENuMuBarCC,
00998 fhFDDataRecoENuMuBarCC);
00999
01000 Int_t xBin = hChi2Trans.GetXaxis()->FindBin(transitionProb);
01001 hChi2Trans.SetBinContent(xBin,chi2);
01002 if (chi2 < bestChi2){
01003 bestChi2 = chi2;
01004 bestTransitionProb = transitionProb;
01005 }
01006 } //transitionProb
01007 fBestTransitionProb = bestTransitionProb;
01008 }
01009
01010 vector<Double_t> vBestFit;
01011 vBestFit.push_back(fBestTransitionProb);
01012 this->FillTransitionFDPrediction(vBestFit);
01013 if (fwriteOutput){
01014 fOutputFile->cd();
01015 fhFDMCRecoENuMuCC->Write("BestFitFDMCRecoENuMuCC");
01016 fhFDMCRecoENuMuBarCC->Write("BestFitFDMCRecoENuMuBarCC");
01017 }
01018 }
|
|
|
Definition at line 702 of file NuXFitAnalysis.cxx. References fvTrueEBinsNuMuBarCC, fvTrueEBinsNuMuCC, NuEvent::inu, and NuEvent::neuEnMC. Referenced by CacheFDMCEvents(). 00703 {
00704 Int_t numnubins = fvTrueEBinsNuMuCC.size();
00705 Int_t numbarbins = fvTrueEBinsNuMuBarCC.size();
00706
00707 Int_t type = info.inu;
00708 const vector<Double_t>* truthbins;
00709 Int_t offset = 0;
00710 Int_t numbins = 0;
00711 if (14 == type){
00712 truthbins = &fvTrueEBinsNuMuCC;
00713 numbins = numnubins;
00714 offset = 0;
00715 }
00716 else if (-14 == type){
00717 truthbins = &fvTrueEBinsNuMuBarCC;
00718 numbins = numbarbins;
00719 offset = numnubins;
00720 }
00721 else{
00722 return numnubins + numbarbins;
00723 }
00724 for (Int_t i=1; i<numbins; ++i){
00725 if ((*truthbins)[i]>info.neuEnMC){
00726 return i - 1 + offset;
00727 }
00728 }
00729 if ((14 == type) || (-14 == type)){
00730 return (numbins + offset);
00731 }
00732 return numnubins + numbarbins;
00733 }
|
|
|
Definition at line 36 of file NuXFitAnalysis.h. 00036 {return fUp;}//Chi2 errors; 0.5 for likelihood
|
|
|
Definition at line 76 of file NuXFitAnalysis.h. References fwriteOutput. Referenced by NuMultiRunXFitAnalysis::ConfigureExtrapolators(). 00077 {fwriteOutput = writeOutput;}
|
|
|
Definition at line 115 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(), NuXFitAnalysis(), and TransitionAnalysis(). |
|
|
Definition at line 126 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SelectionScheme(). |
|
|
Definition at line 121 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(). |
|
|
Definition at line 123 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(). |
|
|
Definition at line 122 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(). |
|
|
Definition at line 124 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(). |
|
|
Definition at line 125 of file NuXFitAnalysis.h. Referenced by TransitionAnalysis(). |
|
|
Definition at line 119 of file NuXFitAnalysis.h. Referenced by TransitionAnalysis(). |
|
|
Definition at line 113 of file NuXFitAnalysis.h. Referenced by DoGridSearch(). |
|
|
Definition at line 117 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), FDData(), and FDDataPoT(). |
|
|
Definition at line 118 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), and FDMC(). |
|
|
Definition at line 129 of file NuXFitAnalysis.h. Referenced by CPTAnalysis(), NuXFitAnalysis(), SetupCPTPars(), SetupTransitionPars(), and TransitionAnalysis(). |
|
|
Definition at line 131 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), CalculateLikelihood(), CPTAnalysis(), CreateFDNuMuBarCCDataHisto(), FillFDDataHistograms(), NuXFitAnalysis(), and TransitionAnalysis(). |
|
|
Definition at line 130 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), CalculateLikelihood(), CreateFDNuMuCCDataHisto(), FillFDDataHistograms(), and NuXFitAnalysis(). |
|
|
Definition at line 133 of file NuXFitAnalysis.h. Referenced by CalculateLikelihood(), CPTAnalysis(), CreateFDNuMuBarCCMCHisto(), NuXFitAnalysis(), and TransitionAnalysis(). |
|
|
Definition at line 132 of file NuXFitAnalysis.h. Referenced by CalculateLikelihood(), CPTAnalysis(), CreateFDNuMuCCMCHisto(), NuXFitAnalysis(), and TransitionAnalysis(). |
|
|
Definition at line 142 of file NuXFitAnalysis.h. Referenced by CreateFDNuMuBarCCDataHisto(), CreateFDNuMuBarCCMCHisto(), FDNuMuBarCCData(), FillFDDataHistograms(), NuXFitAnalysis(), and ~NuXFitAnalysis(). |
|
|
Definition at line 141 of file NuXFitAnalysis.h. Referenced by CreateFDNuMuBarCCDataHisto(), CreateFDNuMuBarCCMCHisto(), CreateFDNuMuCCDataHisto(), CreateFDNuMuCCMCHisto(), FDNuMuCCData(), FillFDDataHistograms(), NuXFitAnalysis(), and ~NuXFitAnalysis(). |
|
|
Definition at line 149 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 147 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 150 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 148 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 145 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 146 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), and SetupTransitionPars(). |
|
|
Definition at line 165 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), NuXFitAnalysis(), and ~NuXFitAnalysis(). |
|
|
Definition at line 138 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), CPTAnalysis(), FillFDDataHistograms(), NuXFitAnalysis(), OutputFileName(), TransitionAnalysis(), and ~NuXFitAnalysis(). |
|
|
Definition at line 134 of file NuXFitAnalysis.h. Referenced by NuXFitAnalysis(), SelectionEfficiencyFileName(), and SetupTransitionPars(). |
|
|
Definition at line 120 of file NuXFitAnalysis.h. Referenced by TransitionAnalysis(). |
|
|
Definition at line 127 of file NuXFitAnalysis.h. Referenced by FDData(), FillFDDataHistograms(), and NuXFitAnalysis(). |
|
|
Definition at line 128 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), FDMC(), and NuXFitAnalysis(). |
|
|
Definition at line 116 of file NuXFitAnalysis.h. Referenced by SetErrorDef(). |
|
|
Definition at line 154 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(). |
|
|
Definition at line 153 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(). |
|
|
Definition at line 158 of file NuXFitAnalysis.h. Referenced by CreateFDNuMuBarCCDataHisto(), CreateFDNuMuBarCCMCHisto(), and FDRecoENuMuBarCCBins(). |
|
|
Definition at line 157 of file NuXFitAnalysis.h. Referenced by CreateFDNuMuCCDataHisto(), CreateFDNuMuCCMCHisto(), and FDRecoENuMuCCBins(). |
|
|
Definition at line 161 of file NuXFitAnalysis.h. Referenced by CacheFDMCEvents(), and NDFitResults(). |
|
|
Definition at line 163 of file NuXFitAnalysis.h. Referenced by NDFitBinningNuMuBarCC(), and TruthIndex(). |
|
|
Definition at line 162 of file NuXFitAnalysis.h. Referenced by NDFitBinningNuMuCC(), and TruthIndex(). |
|
|
Definition at line 114 of file NuXFitAnalysis.h. Referenced by WriteOutput(). |
|
|
Definition at line 135 of file NuXFitAnalysis.h. Referenced by CrossSectionFileName(), NuXFitAnalysis(), and SetupTransitionPars(). |
1.3.9.1