diff --git a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.cxx b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.cxx index 6f8a6e9..74718b9 100644 --- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.cxx +++ b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.cxx @@ -1,249 +1,216 @@ // Copyright 2016-2021 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "T2K_SignalDef.h" #include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h" static size_t nangbins = 9; static double angular_binning_costheta[] = {-1, 0.2, 0.6, 0.7, 0.8, 0.85, 0.9, 0.94, 0.98, 1 }; //******************************************************************** T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey) { //******************************************************************** // Samples overview --------------------------------------------------- fSettings = LoadSampleSettings(samplekey); - std::string name = fSettings.GetS("name"); + std::string name = fSettings.GetName(); std::string descrip = ""; // This has to deal with NuMu FHC, and AntiNuMu RHC if (!name.compare("T2K_NuMu_CC0pi_CH_XSec_2DPcos")){ descrip = name +". \n" "Target: CH \n" "Flux: T2K 2.5 degree off-axis (ND280) \n" "Signal: CC0pi\n" "DOI:10.1103/PhysRevD.101.112001"; fSettings.SetTitle("T2K_NuMu_CC0pi_CH_XSec_2DPcos"); fSettings.DefineAllowedSpecies("numu"); NuPDG = 14; LepPDG = 13; } else if (!name.compare("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos")){ descrip = name +". \n" "Target: CH \n" "Flux: T2K 2.5 degree off-axis (ND280) \n" "Signal: CC0pi\n" "DOI:10.1103/PhysRevD.101.112001"; fSettings.SetTitle("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos"); fSettings.DefineAllowedSpecies("numub"); NuPDG = -14; LepPDG = -13; } // Setup common settings fSettings.SetDescription(descrip); fSettings.SetXTitle("p_{#mu}-cos#theta_{#mu}"); - fSettings.SetYTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)"); + fSettings.SetYTitle("d^{2}#sigma/dp_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)"); fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX"); fSettings.SetEnuRangeFromFlux(fFluxHist); fSettings.DefineAllowedTargets("C,H"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = ((GetEventHistogram()->Integral("width")/(fNEvents+0.)) * 1E-38 / (TotalIntegratedFlux())); // Setup Histograms SetHistograms(); // Final setup --------------------------------------------------- FinaliseMeasurement(); - + fSaveFine = false; }; bool T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::isSignal(FitEvent *event){ return SignalDef::isCC0pi(event, NuPDG, EnuMin, EnuMax); }; void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::FillEventVariables(FitEvent* event){ if (event->NumFSParticle(LepPDG) == 0) return; TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Pmu = event->GetHMFSParticle(LepPDG)->fP; double pmu = Pmu.Vect().Mag()/1000.; double CosThetaMu = cos(Pnu.Vect().Angle(Pmu.Vect())); fXVar = pmu; fYVar = CosThetaMu; return; }; void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::FillHistograms(){ Measurement1D::FillHistograms(); if (Signal){ FillMCSlice( fXVar, fYVar, Weight ); } } void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::ConvertEventRates(){ for (size_t i = 0; i < nangbins; i++){ - if(NuPDG==14) fMCHistNuMu_Slices[i]->GetSumw2(); - else if(NuPDG==-14) fMCHistAntiNuMu_Slices[i]->GetSumw2(); + fMCHist_Slices[i]->GetSumw2(); } // Do standard conversion. Measurement1D::ConvertEventRates(); // Scale MC slices by their bin area for (size_t i = 0; i < nangbins; ++i) { - if(NuPDG==14) fMCHistNuMu_Slices[i]->Scale(1. / (angular_binning_costheta[i + 1] - angular_binning_costheta[i])); - else if(NuPDG==-14) fMCHistAntiNuMu_Slices[i]->Scale(1. / (angular_binning_costheta[i + 1] - angular_binning_costheta[i])); + fMCHist_Slices[i]->Scale(1. / (angular_binning_costheta[i + 1] - angular_binning_costheta[i])); } // Now Convert into 1D lists fMCHist->Reset(); int bincount = 0; for (size_t i = 0; i < nangbins; i++){ - if(NuPDG==14){ - for (int j = 0; j < fDataHistNuMu_Slices[i]->GetNbinsX(); j++){ - fMCHist->SetBinContent(bincount+1, fMCHistNuMu_Slices[i]->GetBinContent(j+1)); - bincount++; - } - } - else if(NuPDG==-14){ - for (int j = 0; j < fMCHistAntiNuMu_Slices[i]->GetNbinsX(); j++){ - fMCHist->SetBinContent(bincount+1, fMCHistAntiNuMu_Slices[i]->GetBinContent(j+1)); - bincount++; - } + for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++){ + fMCHist->SetBinContent(bincount+1, fMCHist_Slices[i]->GetBinContent(j+1)); + bincount++; } - } + } return; } void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::FillMCSlice(double x, double y, double w){ for (size_t i = 0; i < nangbins; ++i) { if ((y > angular_binning_costheta[i]) && (y <= angular_binning_costheta[i + 1])) { - if(NuPDG==14) fMCHistNuMu_Slices[i]->Fill(x, w); - else if(NuPDG==-14) fMCHistAntiNuMu_Slices[i]->Fill(x, w); + fMCHist_Slices[i]->Fill(x, w); } } } void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos::SetHistograms(){ - // Read in 1D Data Histograms - fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ"); - - TH1D* hLinearResult; + std::string name = fSettings.GetName(); + std::string titles = fSettings.GetFullTitles(); - if(NuPDG==14) hLinearResult = (TH1D*) fInputFile->Get("hNuMuCC0piXsecLinearResult"); - else if(NuPDG==-14) hLinearResult = (TH1D*) fInputFile->Get("hAntiNuMuCC0piXsecLinearResult"); + std::string nuType; + if (NuPDG==14) nuType = "NuMu"; + else nuType = "AntiNuMu"; - int Nbins = hLinearResult->GetNbinsX(); + // Read in 1D Data Histograms + fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ"); - std::string histoLinearNuType; - if(NuPDG==14) histoLinearNuType = "NuMuCC0pi"; - else if(NuPDG==-14) histoLinearNuType = "AntiNuMuCC0pi"; + TH1D* hLinearResult = (TH1D*) fInputFile->Get(Form("h%sCC0piXsecLinearResult", nuType.c_str())); + int Nbins = hLinearResult->GetNbinsX(); // Now Convert into 1D list - fDataHist = new TH1D(("LinearResult" + histoLinearNuType).c_str(),("LinearResult" + histoLinearNuType).c_str(),Nbins,0,Nbins); + fDataHist = new TH1D(Form("%s_data", name.c_str()), + Form("%s_data%s", name.c_str(), titles.c_str()), + Nbins,0,Nbins); for (int bin = 0; bin < Nbins; bin++){ fDataHist->SetBinContent(bin+1, hLinearResult->GetBinContent(bin+1)); } // Make covariance matrix fFullCovar = new TMatrixDSym(Nbins); TMatrixDSym* tmpcovstat = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixStat"); TMatrixDSym* tmpcovsyst = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixSyst"); for(int ibin=0; ibinReset(); int bincount = 0; for (size_t i = 0; i < nangbins; i++){ - if(NuPDG==14){ - // Make slices for data - fDataHistNuMu_Slices.push_back((TH1D*)fInputFile->Get(Form("hXsecNuMuCC0piDataSlice_%zu",i))->Clone()); - fDataHistNuMu_Slices[i]->SetNameTitle(Form("T2K_NuMu_CC0pi_2DPcos_data_Slice%zu",i), - (Form("T2K_NuMu_CC0pi_2DPcos_data_Slice%zu",i))); - - // Loop over nbins and set errors from covar - for (int j = 0; j < fDataHistNuMu_Slices[i]->GetNbinsX(); j++){ - fDataHistNuMu_Slices[i]->SetBinError(j+1, sqrt((*fFullCovar)(bincount,bincount))*1E-38); - fDataHist->SetBinContent(bincount+1, fDataHistNuMu_Slices[i]->GetBinContent(j+1)); - fDataHist->SetBinError(bincount+1, fDataHistNuMu_Slices[i]->GetBinError(j+1)); - bincount++; - } - - // Save MC slices - fMCHistNuMu_Slices.push_back((TH1D*) fDataHistNuMu_Slices[i]->Clone()); - fMCHistNuMu_Slices[i]->SetNameTitle(Form("T2K_NuMu_CC0pi_2DPcos_MC_Slice%zu",i), (Form("T2K_NuMu_CC0pi_2DPcos_MC_Slice%zu",i))); - - SetAutoProcessTH1(fDataHistNuMu_Slices[i],kCMD_Write); - SetAutoProcessTH1(fMCHistNuMu_Slices[i]); - - } - else if(NuPDG==-14) { - // Make slices for data - fDataHistAntiNuMu_Slices.push_back((TH1D*)fInputFile->Get(Form("hXsecAntiNuMuCC0piDataSlice_%zu",i))->Clone()); - fDataHistAntiNuMu_Slices[i]->SetNameTitle(Form("T2K_AntiNuMu_CC0pi_2DPcos_data_Slice%zu",i), - (Form("T2K_AntiNuMu_CC0pi_2DPcos_data_Slice%zu",i))); - - //Loop over nbins and set errors from covar - for (int j = 0; j < fDataHistAntiNuMu_Slices[i]->GetNbinsX(); j++){ - fDataHistAntiNuMu_Slices[i]->SetBinError(j+1, sqrt((*fFullCovar)(bincount,bincount))*1E-38); - fDataHist->SetBinContent(bincount+1, fDataHistAntiNuMu_Slices[i]->GetBinContent(j+1)); - fDataHist->SetBinError(bincount+1, fDataHistAntiNuMu_Slices[i]->GetBinError(j+1)); - bincount++; - } - - // Save MC slices - fMCHistAntiNuMu_Slices.push_back((TH1D*) fDataHistAntiNuMu_Slices[i]->Clone()); - fMCHistAntiNuMu_Slices[i]->SetNameTitle(Form("T2K_AntiNuMu_CC0pi_2DPcos_MC_Slice%zu",i), (Form("T2K_AntiNuMu_CC0pi_2DPcos_MC_Slice%zu",i))); - - SetAutoProcessTH1(fDataHistAntiNuMu_Slices[i],kCMD_Write); - SetAutoProcessTH1(fMCHistAntiNuMu_Slices[i]); + // Make slices for data + fDataHist_Slices.push_back((TH1D*)fInputFile->Get(Form("hXsec%sCC0piDataSlice_%zu",nuType.c_str(),i))->Clone()); + fDataHist_Slices[i]->SetNameTitle(Form("%s_data_Slice%zu",name.c_str(), i), + Form("%s_data_Slice%zu%s",name.c_str(), i, titles.c_str())); + + // Loop over nbins and set errors from covar + for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++){ + fDataHist_Slices[i]->SetBinError(j+1, sqrt((*fFullCovar)(bincount,bincount))*1E-38); + fDataHist->SetBinContent(bincount+1, fDataHist_Slices[i]->GetBinContent(j+1)); + fDataHist->SetBinError(bincount+1, fDataHist_Slices[i]->GetBinError(j+1)); + bincount++; } - } + + // Save MC slices + fMCHist_Slices.push_back((TH1D*) fDataHist_Slices[i]->Clone()); + fMCHist_Slices[i]->SetNameTitle(Form("%s_MC_Slice%zu",name.c_str(), i), + Form("%s_MC_Slice%zu%s",name.c_str(),i,titles.c_str())); + + SetAutoProcessTH1(fDataHist_Slices[i],kCMD_Write); + SetAutoProcessTH1(fMCHist_Slices[i]); + } return; }; diff --git a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h index 0469715..7eb38d2 100644 --- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h +++ b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h @@ -1,68 +1,66 @@ // Copyright 2016-2021 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef T2K_NUMUANTINUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN #define T2K_NUMUANTINUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN #include "Measurement1D.h" #include "TH2Poly.h" class T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos : public Measurement1D { public: /// Basic Constructor. /// /brief Parses two different measurements. /// T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey); /// Virtual Destructor ~T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos() {}; /// Signal definition bool isSignal(FitEvent *nvect); /// Read histograms void SetHistograms(); /// Bin Tmu CosThetaMu void FillEventVariables(FitEvent* customEvent); // Fill Histograms void FillHistograms(); /// Event scaling void ConvertEventRates(); private: TFile* fInputFile; - std::vector fMCHistNuMu_Slices; - std::vector fDataHistNuMu_Slices; - std::vector fMCHistAntiNuMu_Slices; - std::vector fDataHistAntiNuMu_Slices; + std::vector fMCHist_Slices; + std::vector fDataHist_Slices; double pmu, CosThetaMu; int NuPDG; int LepPDG; void FillMCSlice(double x, double y, double w); }; #endif diff --git a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx index f01e6a5..b169826 100644 --- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx +++ b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx @@ -1,155 +1,156 @@ #include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h" //******************************************************************** T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint(nuiskey samplekey){ //******************************************************************** fSettings = LoadSampleSettings(samplekey); std::string descrip = "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint. \n" "Target: CH \n" "Flux: T2K 2.5 degree off-axis (ND280) \n" "Signal: CC0pi\n" "DOI:10.1103/PhysRevD.101.112001"; fSettings.SetTitle("T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint"); fSettings.DefineAllowedSpecies("numu, numub"); fSettings.SetDescription(descrip); fSettings.SetXTitle("p_{#mu}-cos#theta_{#mu}"); - fSettings.SetYTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)"); + fSettings.SetYTitle("d^{2}#sigma/dp_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)"); fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX"); fSettings.SetEnuRange(0.0, 30.0); fSettings.DefineAllowedTargets("C,H"); FinaliseSampleSettings(); if (fSubInFiles.size() != 2) { NUIS_ABORT("T2K NuMu-AntiNuMu joint requires input files in format: NuMu and AntiNuMu"); } std::string inFileNuMu = fSubInFiles.at(0); std::string inFileAntiNuMu = fSubInFiles.at(1); // Create some config keys nuiskey NuMuKey = Config::CreateKey("sample"); NuMuKey.SetS("input", inFileNuMu); NuMuKey.SetS("type", fSettings.GetS("type")); NuMuKey.SetS("name", "T2K_NuMu_CC0pi_CH_XSec_2DPcos"); NuMuCC0pi = new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(NuMuKey); nuiskey AntiNuMuKey = Config::CreateKey("sample"); AntiNuMuKey.SetS("input", inFileAntiNuMu); AntiNuMuKey.SetS("type", fSettings.GetS("type")); AntiNuMuKey.SetS("name", "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos"); AntiNuMuCC0pi = new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(AntiNuMuKey); // Sort out the data hist this->CombineDataHists(); // Set the covariance SetCovariance(); // Add to chain for processing fSubChain.clear(); fSubChain.push_back(NuMuCC0pi); fSubChain.push_back(AntiNuMuCC0pi); // This saves information from the sub-measurements fSaveSubMeas = true; + fSaveFine = false; FinaliseMeasurement(); }; //******************************************************************** void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::SetCovariance(){ //******************************************************************** fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ"); TMatrixDSym* tmpcovstat = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixStat"); TMatrixDSym* tmpcovsyst = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixSyst"); fFullCovar = new TMatrixDSym(*tmpcovstat); (*fFullCovar)+=(*tmpcovsyst); covar = StatUtils::GetInvert(fFullCovar); fDecomp = StatUtils::GetDecomp(fFullCovar); ScaleCovar(1E76); return; } //******************************************************************** void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::CombineDataHists(){ //******************************************************************** TH1D *hNuMuData = (TH1D*)NuMuCC0pi->GetDataHistogram(); TH1D *hAntiNuMuData = (TH1D*)AntiNuMuCC0pi->GetDataHistogram(); int nbins = hNuMuData->GetNbinsX() + hAntiNuMuData->GetNbinsX(); fDataHist = new TH1D((fSettings.GetName() + "_data").c_str(), (fSettings.GetFullTitles()).c_str(), nbins, 0, nbins); fDataHist->SetDirectory(0); int count = 0; for (int x=0; xGetNbinsX(); ++x){ fDataHist->SetBinContent(count+1, hNuMuData->GetBinContent(x+1)); fDataHist->SetBinError(count+1, hNuMuData->GetBinError(x+1)); fDataHist->GetXaxis()->SetBinLabel(count+1, Form("NuMu CC0pi %.1f-%.1f", hNuMuData->GetXaxis()->GetBinLowEdge(x+1), hNuMuData->GetXaxis()->GetBinUpEdge(x+1))); count++; } for (int x=0; xGetNbinsX(); ++x){ fDataHist->SetBinContent(count+1, hAntiNuMuData->GetBinContent(x+1)); fDataHist->SetBinError(count+1, hAntiNuMuData->GetBinError(x+1)); fDataHist->GetXaxis()->SetBinLabel(count+1, Form("AntiNuMu CC0pi %.1f-%.1f", hAntiNuMuData->GetXaxis()->GetBinLowEdge(x+1), hAntiNuMuData->GetXaxis()->GetBinUpEdge(x+1))); count++; } } //******************************************************************** void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::SetHistograms() { //******************************************************************** NuMuCC0pi->SetHistograms(); AntiNuMuCC0pi->SetHistograms(); return; } //******************************************************************** void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::FillHistograms() { //******************************************************************** NuMuCC0pi->FillHistograms(); AntiNuMuCC0pi->FillHistograms(); return; } //******************************************************************** void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::ConvertEventRates() { //******************************************************************** NuMuCC0pi->ConvertEventRates(); AntiNuMuCC0pi->ConvertEventRates(); TH1D* hNuMuCC0pi = (TH1D*)NuMuCC0pi->GetMCHistogram(); TH1D* hAntiNuMuCC0pi = (TH1D*)AntiNuMuCC0pi->GetMCHistogram(); int count = 0; for (int i = 0; i < hNuMuCC0pi->GetNbinsX(); ++i) { fMCHist->SetBinContent(count + 1, hNuMuCC0pi->GetBinContent(i + 1)); fMCHist->SetBinError(count + 1, hNuMuCC0pi->GetBinError(i + 1)); count++; } for (int i = 0; i < hAntiNuMuCC0pi->GetNbinsX(); ++i) { fMCHist->SetBinContent(count + 1, hAntiNuMuCC0pi->GetBinContent(i + 1)); fMCHist->SetBinError(count + 1, hAntiNuMuCC0pi->GetBinError(i + 1)); count++; } return; }