Page MenuHomeHEPForge

No OneTemporary

diff --git a/data/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root b/data/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root
index c48259d..a733715 100644
Binary files a/data/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root and b/data/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root differ
diff --git a/src/FCN/SampleList.cxx b/src/FCN/SampleList.cxx
index 33eae20..608e022 100644
--- a/src/FCN/SampleList.cxx
+++ b/src/FCN/SampleList.cxx
@@ -1,1448 +1,1458 @@
#include "SampleList.h"
#ifndef __NO_ANL__
#include "ANL_CCQE_Evt_1DQ2_nu.h"
#include "ANL_CCQE_XSec_1DEnu_nu.h"
// ANL CC1ppip
#include "ANL_CC1ppip_Evt_1DQ2_nu.h"
#include "ANL_CC1ppip_Evt_1DcosmuStar_nu.h"
#include "ANL_CC1ppip_Evt_1DcosthAdler_nu.h"
#include "ANL_CC1ppip_Evt_1Dphi_nu.h"
#include "ANL_CC1ppip_Evt_1Dppi_nu.h"
#include "ANL_CC1ppip_Evt_1Dthpr_nu.h"
#include "ANL_CC1ppip_XSec_1DEnu_nu.h"
#include "ANL_CC1ppip_XSec_1DQ2_nu.h"
// ANL CC1npip
#include "ANL_CC1npip_Evt_1DQ2_nu.h"
#include "ANL_CC1npip_Evt_1DcosmuStar_nu.h"
#include "ANL_CC1npip_Evt_1Dppi_nu.h"
#include "ANL_CC1npip_XSec_1DEnu_nu.h"
// ANL CC1pi0
#include "ANL_CC1pi0_Evt_1DQ2_nu.h"
#include "ANL_CC1pi0_Evt_1DcosmuStar_nu.h"
#include "ANL_CC1pi0_XSec_1DEnu_nu.h"
// ANL NC1npip (mm, exotic!)
#include "ANL_NC1npip_Evt_1Dppi_nu.h"
// ANL NC1ppim (mm, exotic!)
#include "ANL_NC1ppim_Evt_1DcosmuStar_nu.h"
#include "ANL_NC1ppim_XSec_1DEnu_nu.h"
// ANL CC2pi 1pim1pip (mm, even more exotic!)
#include "ANL_CC2pi_1pim1pip_Evt_1Dpmu_nu.h"
#include "ANL_CC2pi_1pim1pip_Evt_1Dppim_nu.h"
#include "ANL_CC2pi_1pim1pip_Evt_1Dppip_nu.h"
#include "ANL_CC2pi_1pim1pip_Evt_1Dpprot_nu.h"
#include "ANL_CC2pi_1pim1pip_XSec_1DEnu_nu.h"
// ANL CC2pi 1pip1pip (mm, even more exotic!)
#include "ANL_CC2pi_1pip1pip_Evt_1Dpmu_nu.h"
#include "ANL_CC2pi_1pip1pip_Evt_1Dpneut_nu.h"
#include "ANL_CC2pi_1pip1pip_Evt_1DppipHigh_nu.h"
#include "ANL_CC2pi_1pip1pip_Evt_1DppipLow_nu.h"
#include "ANL_CC2pi_1pip1pip_XSec_1DEnu_nu.h"
// ANL CC2pi 1pip1pi0 (mm, even more exotic!)
#include "ANL_CC2pi_1pip1pi0_Evt_1Dpmu_nu.h"
#include "ANL_CC2pi_1pip1pi0_Evt_1Dppi0_nu.h"
#include "ANL_CC2pi_1pip1pi0_Evt_1Dppip_nu.h"
#include "ANL_CC2pi_1pip1pi0_Evt_1Dpprot_nu.h"
#include "ANL_CC2pi_1pip1pi0_XSec_1DEnu_nu.h"
#endif
#ifndef __NO_ArgoNeuT__
// ArgoNeuT CC1Pi
#include "ArgoNeuT_CC1Pi_XSec_1Dpmu_antinu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dpmu_nu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetamu_antinu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetamu_nu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetamupi_antinu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetamupi_nu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetapi_antinu.h"
#include "ArgoNeuT_CC1Pi_XSec_1Dthetapi_nu.h"
// ArgoNeuT CC-inclusive
#include "ArgoNeuT_CCInc_XSec_1Dpmu_antinu.h"
#include "ArgoNeuT_CCInc_XSec_1Dpmu_nu.h"
#include "ArgoNeuT_CCInc_XSec_1Dthetamu_antinu.h"
#include "ArgoNeuT_CCInc_XSec_1Dthetamu_nu.h"
#endif
#ifndef __NO_BNL__
// BNL CCQE
#include "BNL_CCQE_Evt_1DQ2_nu.h"
#include "BNL_CCQE_XSec_1DEnu_nu.h"
// BNL CC1ppip
#include "BNL_CC1ppip_Evt_1DQ2_nu.h"
#include "BNL_CC1ppip_Evt_1DcosthAdler_nu.h"
#include "BNL_CC1ppip_Evt_1Dphi_nu.h"
#include "BNL_CC1ppip_XSec_1DEnu_nu.h"
// BNL CC1npip
#include "BNL_CC1npip_Evt_1DQ2_nu.h"
#include "BNL_CC1npip_XSec_1DEnu_nu.h"
// BNL CC1pi0
#include "BNL_CC1pi0_Evt_1DQ2_nu.h"
#include "BNL_CC1pi0_XSec_1DEnu_nu.h"
#endif
#ifndef __NO_FNAL__
// FNAL CCQE
#include "FNAL_CCQE_Evt_1DQ2_nu.h"
// FNAL CC1ppip
#include "FNAL_CC1ppip_Evt_1DQ2_nu.h"
#include "FNAL_CC1ppip_XSec_1DEnu_nu.h"
#include "FNAL_CC1ppip_XSec_1DQ2_nu.h"
// FNAL CC1ppim
#include "FNAL_CC1ppim_XSec_1DEnu_antinu.h"
#endif
#ifndef __NO_BEBC__
// BEBC CCQE
#include "BEBC_CCQE_XSec_1DQ2_nu.h"
// BEBC CC1ppip
#include "BEBC_CC1ppip_XSec_1DEnu_nu.h"
#include "BEBC_CC1ppip_XSec_1DQ2_nu.h"
// BEBC CC1npip
#include "BEBC_CC1npip_XSec_1DEnu_nu.h"
#include "BEBC_CC1npip_XSec_1DQ2_nu.h"
// BEBC CC1pi0
#include "BEBC_CC1pi0_XSec_1DEnu_nu.h"
#include "BEBC_CC1pi0_XSec_1DQ2_nu.h"
// BEBC CC1npim
#include "BEBC_CC1npim_XSec_1DEnu_antinu.h"
#include "BEBC_CC1npim_XSec_1DQ2_antinu.h"
// BEBC CC1ppim
#include "BEBC_CC1ppim_XSec_1DEnu_antinu.h"
#include "BEBC_CC1ppim_XSec_1DQ2_antinu.h"
#endif
#ifndef __NO_GGM__
// GGM CC1ppip
#include "GGM_CC1ppip_Evt_1DQ2_nu.h"
#include "GGM_CC1ppip_XSec_1DEnu_nu.h"
#endif
#ifndef __NO_MiniBooNE__
// MiniBooNE CCQE
#include "MiniBooNE_CCQE_XSec_1DEnu_nu.h"
#include "MiniBooNE_CCQE_XSec_1DQ2_antinu.h"
#include "MiniBooNE_CCQE_XSec_1DQ2_nu.h"
#include "MiniBooNE_CCQE_XSec_2DTcos_antinu.h"
#include "MiniBooNE_CCQE_XSec_2DTcos_nu.h"
// MiniBooNE CC1pi+ 1D
#include "MiniBooNE_CC1pip_XSec_1DEnu_nu.h"
#include "MiniBooNE_CC1pip_XSec_1DQ2_nu.h"
#include "MiniBooNE_CC1pip_XSec_1DTpi_nu.h"
#include "MiniBooNE_CC1pip_XSec_1DTu_nu.h"
// MiniBooNE CC1pi+ 2D
#include "MiniBooNE_CC1pip_XSec_2DQ2Enu_nu.h"
#include "MiniBooNE_CC1pip_XSec_2DTpiCospi_nu.h"
#include "MiniBooNE_CC1pip_XSec_2DTpiEnu_nu.h"
#include "MiniBooNE_CC1pip_XSec_2DTuCosmu_nu.h"
#include "MiniBooNE_CC1pip_XSec_2DTuEnu_nu.h"
// MiniBooNE CC1pi0
#include "MiniBooNE_CC1pi0_XSec_1DEnu_nu.h"
#include "MiniBooNE_CC1pi0_XSec_1DQ2_nu.h"
#include "MiniBooNE_CC1pi0_XSec_1DTu_nu.h"
#include "MiniBooNE_CC1pi0_XSec_1Dcosmu_nu.h"
#include "MiniBooNE_CC1pi0_XSec_1Dcospi0_nu.h"
#include "MiniBooNE_CC1pi0_XSec_1Dppi0_nu.h"
#include "MiniBooNE_NC1pi0_XSec_1Dcospi0_antinu.h"
#include "MiniBooNE_NC1pi0_XSec_1Dcospi0_nu.h"
#include "MiniBooNE_NC1pi0_XSec_1Dppi0_antinu.h"
#include "MiniBooNE_NC1pi0_XSec_1Dppi0_nu.h"
// MiniBooNE NC1pi0
//#include "MiniBooNE_NCpi0_XSec_1Dppi0_nu.h"
// MiniBooNE NCEL
#include "MiniBooNE_NCEL_XSec_Treco_nu.h"
#endif
#ifndef __NO_MicroBooNE__
#include "MicroBooNE_CCInc_XSec_2DPcos_nu.h"
#endif
#ifndef __NO_MINERvA__
// MINERvA CCQE
#include "MINERvA_CCQE_XSec_1DQ2_antinu.h"
#include "MINERvA_CCQE_XSec_1DQ2_joint.h"
#include "MINERvA_CCQE_XSec_1DQ2_nu.h"
// MINERvA CC0pi
#include "MINERvA_CC0pi_XSec_1DEe_nue.h"
#include "MINERvA_CC0pi_XSec_1DQ2_nu_proton.h"
#include "MINERvA_CC0pi_XSec_1DQ2_nue.h"
#include "MINERvA_CC0pi_XSec_1DThetae_nue.h"
// 2018 MINERvA CC0pi STV
#include "MINERvA_CC0pinp_STV_XSec_1D_nu.h"
// 2018 MINERvA CC0pi 2D
#include "MINERvA_CC0pi_XSec_1D_2018_nu.h"
#include "MINERvA_CC0pi_XSec_2D_nu.h"
// #include "MINERvA_CC0pi_XSec_3DptpzTp_nu.h"
// 2018 MINERvA CC0pi 2D antinu
#include "MINERvA_CC0pi_XSec_2D_antinu.h"
// MINERvA CC1pi+
#include "MINERvA_CC1pip_XSec_1DTpi_20deg_nu.h"
#include "MINERvA_CC1pip_XSec_1DTpi_nu.h"
#include "MINERvA_CC1pip_XSec_1Dth_20deg_nu.h"
#include "MINERvA_CC1pip_XSec_1Dth_nu.h"
// 2017 data update
#include "MINERvA_CC1pip_XSec_1D_2017Update.h"
// MINERvA CCNpi+
#include "MINERvA_CCNpip_XSec_1DEnu_nu.h"
#include "MINERvA_CCNpip_XSec_1DQ2_nu.h"
#include "MINERvA_CCNpip_XSec_1DTpi_nu.h"
#include "MINERvA_CCNpip_XSec_1Dpmu_nu.h"
#include "MINERvA_CCNpip_XSec_1Dth_nu.h"
#include "MINERvA_CCNpip_XSec_1Dthmu_nu.h"
// MINERvA CC1pi0
#include "MINERvA_CC1pi0_XSec_1DEnu_antinu.h"
#include "MINERvA_CC1pi0_XSec_1DQ2_antinu.h"
#include "MINERvA_CC1pi0_XSec_1DTpi0_antinu.h"
#include "MINERvA_CC1pi0_XSec_1Dpmu_antinu.h"
#include "MINERvA_CC1pi0_XSec_1Dppi0_antinu.h"
#include "MINERvA_CC1pi0_XSec_1Dth_antinu.h"
#include "MINERvA_CC1pi0_XSec_1Dthmu_antinu.h"
// MINERvA CC1pi0 neutrino
#include "MINERvA_CC1pi0_XSec_1D_nu.h"
// MINERvA CCINC
#include "MINERvA_CCinc_XSec_1DEnu_ratio.h"
#include "MINERvA_CCinc_XSec_1Dx_ratio.h"
#include "MINERvA_CCinc_XSec_2DEavq3_nu.h"
// MINERvA CCDIS
#include "MINERvA_CCDIS_XSec_1DEnu_ratio.h"
#include "MINERvA_CCDIS_XSec_1Dx_ratio.h"
// MINERvA CCCOH pion
#include "MINERvA_CCCOHPI_XSec_1DEnu_antinu.h"
#include "MINERvA_CCCOHPI_XSec_1DEpi_antinu.h"
#include "MINERvA_CCCOHPI_XSec_1DQ2_antinu.h"
#include "MINERvA_CCCOHPI_XSec_1DEpi_nu.h"
#include "MINERvA_CCCOHPI_XSec_1DQ2_nu.h"
#include "MINERvA_CCCOHPI_XSec_1Dth_nu.h"
#include "MINERvA_CCCOHPI_XSec_joint.h"
#include "MINERvA_CC0pi_XSec_1DQ2_TgtRatio_nu.h"
#include "MINERvA_CC0pi_XSec_1DQ2_Tgt_nu.h"
#endif
#ifndef __NO_T2K__
// T2K CC0pi 2016
#include "T2K_CC0pi_XSec_2DPcos_nu_I.h"
#include "T2K_CC0pi_XSec_2DPcos_nu_II.h"
+// T2K CC0pi 2020 arXiv:2002.09323
+#include "T2K_NuMu_CC0pi_CH_XSec_2DPcos.h"
+#include "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h"
+
// T2K CC-inclusive with full acceptance 2018
#include "T2K_CCinc_XSec_2DPcos_nu_nonuniform.h"
// T2K nue CC-inclusive 2019
#include "T2K_nueCCinc_XSec_1Dpe.h"
#include "T2K_nueCCinc_XSec_joint.h"
// T2K STV CC0pi 2018
#include "T2K_CC0pi1p_XSec_3DPcoscos_nu_nonuniform.h"
#include "T2K_CC0pinp_STV_XSec_1Ddat_nu.h"
#include "T2K_CC0pinp_STV_XSec_1Ddphit_nu.h"
#include "T2K_CC0pinp_STV_XSec_1Ddpt_nu.h"
#include "T2K_CC0pinp_ifk_XSec_3Dinfa_nu.h"
#include "T2K_CC0pinp_ifk_XSec_3Dinfip_nu.h"
#include "T2K_CC0pinp_ifk_XSec_3Dinfp_nu.h"
// T2K CC1pi+ on CH
#include "T2K_CC1pip_CH_XSec_1DAdlerPhi_nu.h"
#include "T2K_CC1pip_CH_XSec_1DCosThAdler_nu.h"
#include "T2K_CC1pip_CH_XSec_1DQ2_nu.h"
#include "T2K_CC1pip_CH_XSec_1Dppi_nu.h"
#include "T2K_CC1pip_CH_XSec_1Dthmupi_nu.h"
#include "T2K_CC1pip_CH_XSec_1Dthpi_nu.h"
#include "T2K_CC1pip_CH_XSec_2Dpmucosmu_nu.h"
//#include "T2K_CC1pip_CH_XSec_1Dthq3pi_nu.h"
//#include "T2K_CC1pip_CH_XSec_1DWrec_nu.h"
//#include "T2K_CC1pip_CH_XSec_1Dq3_nu.h"
// T2K CC1pi+ on H2O
#include "T2K_CC1pip_H2O_XSec_1DEnuDelta_nu.h"
#include "T2K_CC1pip_H2O_XSec_1DEnuMB_nu.h"
#include "T2K_CC1pip_H2O_XSec_1Dcosmu_nu.h"
#include "T2K_CC1pip_H2O_XSec_1Dcosmupi_nu.h"
#include "T2K_CC1pip_H2O_XSec_1Dcospi_nu.h"
#include "T2K_CC1pip_H2O_XSec_1Dpmu_nu.h"
#include "T2K_CC1pip_H2O_XSec_1Dppi_nu.h"
#endif
#ifndef __NO_SciBooNE__
// SciBooNE COH studies
#include "SciBooNE_CCCOH_1TRK_1DQ2_nu.h"
#include "SciBooNE_CCCOH_1TRK_1Dpmu_nu.h"
#include "SciBooNE_CCCOH_1TRK_1Dthetamu_nu.h"
#include "SciBooNE_CCCOH_MuPiNoVA_1DQ2_nu.h"
#include "SciBooNE_CCCOH_MuPiNoVA_1Dpmu_nu.h"
#include "SciBooNE_CCCOH_MuPiNoVA_1Dthetamu_nu.h"
#include "SciBooNE_CCCOH_MuPiNoVA_1Dthetapi_nu.h"
#include "SciBooNE_CCCOH_MuPiNoVA_1Dthetapr_nu.h"
#include "SciBooNE_CCCOH_MuPiVA_1DQ2_nu.h"
#include "SciBooNE_CCCOH_MuPiVA_1Dpmu_nu.h"
#include "SciBooNE_CCCOH_MuPiVA_1Dthetamu_nu.h"
#include "SciBooNE_CCCOH_MuPr_1DQ2_nu.h"
#include "SciBooNE_CCCOH_MuPr_1Dpmu_nu.h"
#include "SciBooNE_CCCOH_MuPr_1Dthetamu_nu.h"
#include "SciBooNE_CCCOH_STOPFINAL_1DQ2_nu.h"
#include "SciBooNE_CCCOH_STOP_NTrks_nu.h"
#include "SciBooNE_CCInc_XSec_1DEnu_nu.h"
#endif
#ifndef __NO_K2K__
// K2K NC1pi0
#include "K2K_NC1pi0_Evt_1Dppi0_nu.h"
#endif
// MC Studies
#include "ExpMultDist_CCQE_XSec_1DVar_FakeStudy.h"
#include "ExpMultDist_CCQE_XSec_2DVar_FakeStudy.h"
#include "MCStudy_CCQEHistograms.h"
#include "GenericFlux_Tester.h"
#include "GenericFlux_Vectors.h"
#include "ElectronFlux_FlatTree.h"
#include "ElectronScattering_DurhamData.h"
#include "MCStudy_KaonPreSelection.h"
#include "MCStudy_MuonValidation.h"
#include "OfficialNIWGPlots.h"
#include "T2K2017_FakeData.h"
#include "SigmaEnuHists.h"
#include "Simple_Osc.h"
#include "Smear_SVDUnfold_Propagation_Osc.h"
#include "FitWeight.h"
#include "NuisConfig.h"
#include "NuisKey.h"
#ifdef __USE_DYNSAMPLES__
#include "TRegexp.h"
#include <dirent.h>
// linux
#include <dlfcn.h>
DynamicSampleFactory::DynamicSampleFactory() : NSamples(0), NManifests(0) {
LoadPlugins();
NUIS_LOG(FIT, "Loaded " << NSamples << " from " << NManifests
<< " shared object libraries.");
}
DynamicSampleFactory *DynamicSampleFactory::glblDSF = NULL;
DynamicSampleFactory::PluginManifest::~PluginManifest() {
for (size_t i_it = 0; i_it < Instances.size(); ++i_it) {
(*(DSF_DestroySample))(Instances[i_it]);
}
}
std::string EnsureTrailingSlash(std::string const &inp) {
if (!inp.length()) {
return "/";
}
if (inp[inp.length() - 1] == '/') {
return inp;
}
return inp + "/";
}
void DynamicSampleFactory::LoadPlugins() {
std::vector<std::string> SearchDirectories;
if (Config::HasPar("dynamic_sample.path")) {
SearchDirectories =
GeneralUtils::ParseToStr(Config::GetParS("dynamic_sample.path"), ":");
}
char const *envPath = getenv("NUISANCE_DS_PATH");
if (envPath) {
std::vector<std::string> envPaths = GeneralUtils::ParseToStr(envPath, ":");
for (size_t ep_it = 0; ep_it < envPaths.size(); ++ep_it) {
SearchDirectories.push_back(envPaths[ep_it]);
}
}
if (!SearchDirectories.size()) {
char const *pwdPath = getenv("PWD");
if (pwdPath) {
SearchDirectories.push_back(pwdPath);
}
}
for (size_t sp_it = 0; sp_it < SearchDirectories.size(); ++sp_it) {
std::string dirpath = EnsureTrailingSlash(SearchDirectories[sp_it]);
NUIS_LOG(FIT, "Searching for dynamic sample manifests in: " << dirpath);
Ssiz_t len = 0;
DIR *dir;
struct dirent *ent;
dir = opendir(dirpath.c_str());
if (dir != NULL) {
TRegexp matchExp("*.so", true);
while ((ent = readdir(dir)) != NULL) {
if (matchExp.Index(TString(ent->d_name), &len) != Ssiz_t(-1)) {
NUIS_LOG(FIT, "\tFound shared object: "
<< ent->d_name
<< " checking for relevant methods...");
void *dlobj =
dlopen((dirpath + ent->d_name).c_str(), RTLD_NOW | RTLD_GLOBAL);
char const *dlerr_cstr = dlerror();
std::string dlerr;
if (dlerr_cstr) {
dlerr = dlerr_cstr;
}
if (dlerr.length()) {
NUIS_ERR(WRN, "\tDL Load Error: " << dlerr);
continue;
}
PluginManifest plgManif;
plgManif.dllib = dlobj;
plgManif.soloc = (dirpath + ent->d_name);
plgManif.DSF_NSamples =
reinterpret_cast<DSF_NSamples_ptr>(dlsym(dlobj, "DSF_NSamples"));
dlerr = "";
dlerr_cstr = dlerror();
if (dlerr_cstr) {
dlerr = dlerr_cstr;
}
if (dlerr.length()) {
NUIS_ERR(WRN, "\tFailed to load symbol \"DSF_NSamples\" from "
<< (dirpath + ent->d_name) << ": " << dlerr);
dlclose(dlobj);
continue;
}
plgManif.DSF_GetSampleName = reinterpret_cast<DSF_GetSampleName_ptr>(
dlsym(dlobj, "DSF_GetSampleName"));
dlerr = "";
dlerr_cstr = dlerror();
if (dlerr_cstr) {
dlerr = dlerr_cstr;
}
if (dlerr.length()) {
NUIS_ERR(WRN, "\tFailed to load symbol \"DSF_GetSampleName\" from "
<< (dirpath + ent->d_name) << ": " << dlerr);
dlclose(dlobj);
continue;
}
plgManif.DSF_GetSample = reinterpret_cast<DSF_GetSample_ptr>(
dlsym(dlobj, "DSF_GetSample"));
dlerr = "";
dlerr_cstr = dlerror();
if (dlerr_cstr) {
dlerr = dlerr_cstr;
}
if (dlerr.length()) {
NUIS_ERR(WRN, "\tFailed to load symbol \"DSF_GetSample\" from "
<< (dirpath + ent->d_name) << ": " << dlerr);
dlclose(dlobj);
continue;
}
plgManif.DSF_DestroySample = reinterpret_cast<DSF_DestroySample_ptr>(
dlsym(dlobj, "DSF_DestroySample"));
dlerr = "";
dlerr_cstr = dlerror();
if (dlerr_cstr) {
dlerr = dlerr_cstr;
}
if (dlerr.length()) {
NUIS_ERR(WRN, "Failed to load symbol \"DSF_DestroySample\" from "
<< (dirpath + ent->d_name) << ": " << dlerr);
dlclose(dlobj);
continue;
}
plgManif.NSamples = (*(plgManif.DSF_NSamples))();
NUIS_LOG(FIT, "\tSuccessfully loaded dynamic sample manifest: "
<< plgManif.soloc << ". Contains "
<< plgManif.NSamples << " samples.");
for (size_t smp_it = 0; smp_it < plgManif.NSamples; ++smp_it) {
char const *smp_name = (*(plgManif.DSF_GetSampleName))(smp_it);
if (!smp_name) {
NUIS_ABORT("Could not load sample "
<< smp_it << " / " << plgManif.NSamples << " from "
<< plgManif.soloc);
}
if (Samples.count(smp_name)) {
NUIS_ERR(WRN, "Already loaded a sample named: \""
<< smp_name
<< "\". cannot load duplciates. This "
"sample will be skipped.");
continue;
}
plgManif.SamplesProvided.push_back(smp_name);
Samples[smp_name] = std::make_pair(plgManif.soloc, smp_it);
NUIS_LOG(FIT, "\t\t" << smp_name);
}
if (plgManif.SamplesProvided.size()) {
Manifests[plgManif.soloc] = plgManif;
NSamples += plgManif.SamplesProvided.size();
NManifests++;
} else {
dlclose(dlobj);
}
}
}
closedir(dir);
} else {
NUIS_ERR(WRN, "Tried to open non-existant directory.");
}
}
}
DynamicSampleFactory &DynamicSampleFactory::Get() {
if (!glblDSF) {
glblDSF = new DynamicSampleFactory();
}
return *glblDSF;
}
void DynamicSampleFactory::Print() {
std::map<std::string, std::vector<std::string> > ManifestSamples;
for (std::map<std::string, std::pair<std::string, int> >::iterator smp_it =
Samples.begin();
smp_it != Samples.end(); ++smp_it) {
if (!ManifestSamples.count(smp_it->second.first)) {
ManifestSamples[smp_it->second.first] = std::vector<std::string>();
}
ManifestSamples[smp_it->second.first].push_back(smp_it->first);
}
NUIS_LOG(FIT, "Dynamic sample manifest: ");
for (std::map<std::string, std::vector<std::string> >::iterator m_it =
ManifestSamples.begin();
m_it != ManifestSamples.end(); ++m_it) {
NUIS_LOG(FIT, "\tLibrary " << m_it->first << " contains: ");
for (size_t s_it = 0; s_it < m_it->second.size(); ++s_it) {
NUIS_LOG(FIT, "\t\t" << m_it->second[s_it]);
}
}
}
bool DynamicSampleFactory::HasSample(std::string const &name) {
return Samples.count(name);
}
bool DynamicSampleFactory::HasSample(nuiskey &samplekey) {
return HasSample(samplekey.GetS("name"));
}
MeasurementBase *DynamicSampleFactory::CreateSample(nuiskey &samplekey) {
if (!HasSample(samplekey)) {
NUIS_ERR(WRN, "Asked to load unknown sample: \"" << samplekey.GetS("name")
<< "\".");
return NULL;
}
std::pair<std::string, int> sample = Samples[samplekey.GetS("name")];
NUIS_LOG(SAM,
"\tLoading sample " << sample.second << " from " << sample.first);
return (*(Manifests[sample.first].DSF_GetSample))(sample.second, &samplekey);
}
DynamicSampleFactory::~DynamicSampleFactory() { Manifests.clear(); }
#endif
//! Functions to make it easier for samples to be created and handled.
namespace SampleUtils {
//! Create a given sample given its name, file, type, fakdata(fkdt) file and the
//! current rw engine and push it back into the list fChain.
MeasurementBase *CreateSample(std::string name, std::string file,
std::string type, std::string fkdt,
FitWeight *rw) {
nuiskey samplekey = Config::CreateKey("sample");
samplekey.Set("name", name);
samplekey.Set("input", file);
samplekey.Set("type", type);
return CreateSample(samplekey);
}
MeasurementBase *CreateSample(nuiskey samplekey) {
#ifdef __USE_DYNSAMPLES__
if (DynamicSampleFactory::Get().HasSample(samplekey)) {
NUIS_LOG(SAM, "Instantiating dynamic sample...");
MeasurementBase *ds = DynamicSampleFactory::Get().CreateSample(samplekey);
if (ds) {
NUIS_LOG(SAM, "Done.");
return ds;
}
NUIS_ABORT("Failed to instantiate dynamic sample.");
}
#endif
FitWeight *rw = FitBase::GetRW();
std::string name = samplekey.GetS("name");
std::string file = samplekey.GetS("input");
std::string type = samplekey.GetS("type");
std::string fkdt = "";
/*
ANL CCQE Samples
*/
#ifndef __NO_ANL__
if (!name.compare("ANL_CCQE_XSec_1DEnu_nu") ||
!name.compare("ANL_CCQE_XSec_1DEnu_nu_PRD26") ||
!name.compare("ANL_CCQE_XSec_1DEnu_nu_PRL31") ||
!name.compare("ANL_CCQE_XSec_1DEnu_nu_PRD16")) {
return (new ANL_CCQE_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CCQE_Evt_1DQ2_nu") ||
!name.compare("ANL_CCQE_Evt_1DQ2_nu_PRL31") ||
!name.compare("ANL_CCQE_Evt_1DQ2_nu_PRD26") ||
!name.compare("ANL_CCQE_Evt_1DQ2_nu_PRD16")) {
return (new ANL_CCQE_Evt_1DQ2_nu(samplekey));
/*
ANL CC1ppip samples
*/
} else if (!name.compare("ANL_CC1ppip_XSec_1DEnu_nu") ||
!name.compare("ANL_CC1ppip_XSec_1DEnu_nu_W14Cut") ||
!name.compare("ANL_CC1ppip_XSec_1DEnu_nu_Uncorr") ||
!name.compare("ANL_CC1ppip_XSec_1DEnu_nu_W14Cut_Uncorr") ||
!name.compare("ANL_CC1ppip_XSec_1DEnu_nu_W16Cut_Uncorr")) {
return (new ANL_CC1ppip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_XSec_1DQ2_nu")) {
return (new ANL_CC1ppip_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1DQ2_nu") ||
!name.compare("ANL_CC1ppip_Evt_1DQ2_nu_W14Cut")) {
return (new ANL_CC1ppip_Evt_1DQ2_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1Dppi_nu")) {
return (new ANL_CC1ppip_Evt_1Dppi_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1Dthpr_nu")) {
return (new ANL_CC1ppip_Evt_1Dthpr_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1DcosmuStar_nu")) {
return (new ANL_CC1ppip_Evt_1DcosmuStar_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1DcosthAdler_nu")) {
return (new ANL_CC1ppip_Evt_1DcosthAdler_nu(samplekey));
} else if (!name.compare("ANL_CC1ppip_Evt_1Dphi_nu")) {
return (new ANL_CC1ppip_Evt_1Dphi_nu(samplekey));
/*
ANL CC1npip sample
*/
} else if (!name.compare("ANL_CC1npip_XSec_1DEnu_nu") ||
!name.compare("ANL_CC1npip_XSec_1DEnu_nu_W14Cut") ||
!name.compare("ANL_CC1npip_XSec_1DEnu_nu_Uncorr") ||
!name.compare("ANL_CC1npip_XSec_1DEnu_nu_W14Cut_Uncorr") ||
!name.compare("ANL_CC1npip_XSec_1DEnu_nu_W16Cut_Uncorr")) {
return (new ANL_CC1npip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC1npip_Evt_1DQ2_nu") ||
!name.compare("ANL_CC1npip_Evt_1DQ2_nu_W14Cut")) {
return (new ANL_CC1npip_Evt_1DQ2_nu(samplekey));
} else if (!name.compare("ANL_CC1npip_Evt_1Dppi_nu")) {
return (new ANL_CC1npip_Evt_1Dppi_nu(samplekey));
} else if (!name.compare("ANL_CC1npip_Evt_1DcosmuStar_nu")) {
return (new ANL_CC1npip_Evt_1DcosmuStar_nu(samplekey));
/*
ANL CC1pi0 sample
*/
} else if (!name.compare("ANL_CC1pi0_XSec_1DEnu_nu") ||
!name.compare("ANL_CC1pi0_XSec_1DEnu_nu_W14Cut") ||
!name.compare("ANL_CC1pi0_XSec_1DEnu_nu_Uncorr") ||
!name.compare("ANL_CC1pi0_XSec_1DEnu_nu_W14Cut_Uncorr") ||
!name.compare("ANL_CC1pi0_XSec_1DEnu_nu_W16Cut_Uncorr")) {
return (new ANL_CC1pi0_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC1pi0_Evt_1DQ2_nu") ||
!name.compare("ANL_CC1pi0_Evt_1DQ2_nu_W14Cut")) {
return (new ANL_CC1pi0_Evt_1DQ2_nu(samplekey));
} else if (!name.compare("ANL_CC1pi0_Evt_1DcosmuStar_nu")) {
return (new ANL_CC1pi0_Evt_1DcosmuStar_nu(samplekey));
/*
ANL NC1npip sample
*/
} else if (!name.compare("ANL_NC1npip_Evt_1Dppi_nu")) {
return (new ANL_NC1npip_Evt_1Dppi_nu(samplekey));
/*
ANL NC1ppim sample
*/
} else if (!name.compare("ANL_NC1ppim_XSec_1DEnu_nu")) {
return (new ANL_NC1ppim_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_NC1ppim_Evt_1DcosmuStar_nu")) {
return (new ANL_NC1ppim_Evt_1DcosmuStar_nu(samplekey));
/*
ANL CC2pi sample
*/
} else if (!name.compare("ANL_CC2pi_1pim1pip_XSec_1DEnu_nu")) {
return (new ANL_CC2pi_1pim1pip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pim1pip_Evt_1Dpmu_nu")) {
return (new ANL_CC2pi_1pim1pip_Evt_1Dpmu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pim1pip_Evt_1Dppip_nu")) {
return (new ANL_CC2pi_1pim1pip_Evt_1Dppip_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pim1pip_Evt_1Dppim_nu")) {
return (new ANL_CC2pi_1pim1pip_Evt_1Dppim_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pim1pip_Evt_1Dpprot_nu")) {
return (new ANL_CC2pi_1pim1pip_Evt_1Dpprot_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pip_XSec_1DEnu_nu")) {
return (new ANL_CC2pi_1pip1pip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pip_Evt_1Dpmu_nu")) {
return (new ANL_CC2pi_1pip1pip_Evt_1Dpmu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pip_Evt_1Dpneut_nu")) {
return (new ANL_CC2pi_1pip1pip_Evt_1Dpneut_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pip_Evt_1DppipHigh_nu")) {
return (new ANL_CC2pi_1pip1pip_Evt_1DppipHigh_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pip_Evt_1DppipLow_nu")) {
return (new ANL_CC2pi_1pip1pip_Evt_1DppipLow_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pi0_XSec_1DEnu_nu")) {
return (new ANL_CC2pi_1pip1pi0_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pi0_Evt_1Dpmu_nu")) {
return (new ANL_CC2pi_1pip1pi0_Evt_1Dpmu_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pi0_Evt_1Dppip_nu")) {
return (new ANL_CC2pi_1pip1pi0_Evt_1Dppip_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pi0_Evt_1Dppi0_nu")) {
return (new ANL_CC2pi_1pip1pi0_Evt_1Dppi0_nu(samplekey));
} else if (!name.compare("ANL_CC2pi_1pip1pi0_Evt_1Dpprot_nu")) {
return (new ANL_CC2pi_1pip1pi0_Evt_1Dpprot_nu(samplekey));
/*
ArgoNeut Samples
*/
} else
#endif
#ifndef __NO_ArgoNeuT__
if (!name.compare("ArgoNeuT_CCInc_XSec_1Dpmu_antinu")) {
return (new ArgoNeuT_CCInc_XSec_1Dpmu_antinu(samplekey));
} else if (!name.compare("ArgoNeuT_CCInc_XSec_1Dpmu_nu")) {
return (new ArgoNeuT_CCInc_XSec_1Dpmu_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CCInc_XSec_1Dthetamu_antinu")) {
return (new ArgoNeuT_CCInc_XSec_1Dthetamu_antinu(samplekey));
} else if (!name.compare("ArgoNeuT_CCInc_XSec_1Dthetamu_nu")) {
return (new ArgoNeuT_CCInc_XSec_1Dthetamu_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dpmu_nu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dpmu_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetamu_nu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetamu_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetapi_nu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetapi_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetamupi_nu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetamupi_nu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dpmu_antinu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dpmu_antinu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetamu_antinu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetamu_antinu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetapi_antinu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetapi_antinu(samplekey));
} else if (!name.compare("ArgoNeuT_CC1Pi_XSec_1Dthetamupi_antinu")) {
return (new ArgoNeuT_CC1Pi_XSec_1Dthetamupi_antinu(samplekey));
/*
BNL Samples
*/
} else
#endif
#ifndef __NO_BNL__
if (!name.compare("BNL_CCQE_XSec_1DEnu_nu")) {
return (new BNL_CCQE_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BNL_CCQE_Evt_1DQ2_nu")) {
return (new BNL_CCQE_Evt_1DQ2_nu(samplekey));
/*
BNL CC1ppip samples
*/
} else if (!name.compare("BNL_CC1ppip_XSec_1DEnu_nu") ||
!name.compare("BNL_CC1ppip_XSec_1DEnu_nu_Uncorr") ||
!name.compare("BNL_CC1ppip_XSec_1DEnu_nu_W14Cut") ||
!name.compare("BNL_CC1ppip_XSec_1DEnu_nu_W14Cut_Uncorr")) {
return (new BNL_CC1ppip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BNL_CC1ppip_Evt_1DQ2_nu") ||
!name.compare("BNL_CC1ppip_Evt_1DQ2_nu_W14Cut")) {
return (new BNL_CC1ppip_Evt_1DQ2_nu(samplekey));
} else if (!name.compare("BNL_CC1ppip_Evt_1DcosthAdler_nu")) {
return (new BNL_CC1ppip_Evt_1DcosthAdler_nu(samplekey));
} else if (!name.compare("BNL_CC1ppip_Evt_1Dphi_nu")) {
return (new BNL_CC1ppip_Evt_1Dphi_nu(samplekey));
/*
BNL CC1npip samples
*/
} else if (!name.compare("BNL_CC1npip_XSec_1DEnu_nu") ||
!name.compare("BNL_CC1npip_XSec_1DEnu_nu_Uncorr")) {
return (new BNL_CC1npip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BNL_CC1npip_Evt_1DQ2_nu")) {
return (new BNL_CC1npip_Evt_1DQ2_nu(samplekey));
/*
BNL CC1pi0 samples
*/
} else if (!name.compare("BNL_CC1pi0_XSec_1DEnu_nu")) {
return (new BNL_CC1pi0_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BNL_CC1pi0_Evt_1DQ2_nu")) {
return (new BNL_CC1pi0_Evt_1DQ2_nu(samplekey));
/*
FNAL Samples
*/
} else
#endif
#ifndef __NO_FNAL__
if (!name.compare("FNAL_CCQE_Evt_1DQ2_nu")) {
return (new FNAL_CCQE_Evt_1DQ2_nu(samplekey));
/*
FNAL CC1ppip
*/
} else if (!name.compare("FNAL_CC1ppip_XSec_1DEnu_nu")) {
return (new FNAL_CC1ppip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("FNAL_CC1ppip_XSec_1DQ2_nu")) {
return (new FNAL_CC1ppip_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("FNAL_CC1ppip_Evt_1DQ2_nu")) {
return (new FNAL_CC1ppip_Evt_1DQ2_nu(samplekey));
/*
FNAL CC1ppim
*/
} else if (!name.compare("FNAL_CC1ppim_XSec_1DEnu_antinu")) {
return (new FNAL_CC1ppim_XSec_1DEnu_antinu(samplekey));
/*
BEBC Samples
*/
} else
#endif
#ifndef __NO_BEBC__
if (!name.compare("BEBC_CCQE_XSec_1DQ2_nu")) {
return (new BEBC_CCQE_XSec_1DQ2_nu(samplekey));
/*
BEBC CC1ppip samples
*/
} else if (!name.compare("BEBC_CC1ppip_XSec_1DEnu_nu")) {
return (new BEBC_CC1ppip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BEBC_CC1ppip_XSec_1DQ2_nu")) {
return (new BEBC_CC1ppip_XSec_1DQ2_nu(samplekey));
/*
BEBC CC1npip samples
*/
} else if (!name.compare("BEBC_CC1npip_XSec_1DEnu_nu")) {
return (new BEBC_CC1npip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BEBC_CC1npip_XSec_1DQ2_nu")) {
return (new BEBC_CC1npip_XSec_1DQ2_nu(samplekey));
/*
BEBC CC1pi0 samples
*/
} else if (!name.compare("BEBC_CC1pi0_XSec_1DEnu_nu")) {
return (new BEBC_CC1pi0_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("BEBC_CC1pi0_XSec_1DQ2_nu")) {
return (new BEBC_CC1pi0_XSec_1DQ2_nu(samplekey));
/*
BEBC CC1npim samples
*/
} else if (!name.compare("BEBC_CC1npim_XSec_1DEnu_antinu")) {
return (new BEBC_CC1npim_XSec_1DEnu_antinu(samplekey));
} else if (!name.compare("BEBC_CC1npim_XSec_1DQ2_antinu")) {
return (new BEBC_CC1npim_XSec_1DQ2_antinu(samplekey));
/*
BEBC CC1ppim samples
*/
} else if (!name.compare("BEBC_CC1ppim_XSec_1DEnu_antinu")) {
return (new BEBC_CC1ppim_XSec_1DEnu_antinu(samplekey));
} else if (!name.compare("BEBC_CC1ppim_XSec_1DQ2_antinu")) {
return (new BEBC_CC1ppim_XSec_1DQ2_antinu(samplekey));
/*
GGM CC1ppip samples
*/
} else
#endif
#ifndef __NO_GGM__
if (!name.compare("GGM_CC1ppip_XSec_1DEnu_nu")) {
return (new GGM_CC1ppip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("GGM_CC1ppip_Evt_1DQ2_nu")) {
return (new GGM_CC1ppip_Evt_1DQ2_nu(samplekey));
/*
MiniBooNE Samples
*/
/*
CCQE
*/
} else
#endif
#ifndef __NO_MiniBooNE__
if (!name.compare("MiniBooNE_CCQE_XSec_1DQ2_nu") ||
!name.compare("MiniBooNE_CCQELike_XSec_1DQ2_nu")) {
return (new MiniBooNE_CCQE_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MiniBooNE_CCQE_XSec_1DEnu_nu") ||
!name.compare("MiniBooNE_CCQELike_XSec_1DEnu_nu")) {
return (new MiniBooNE_CCQE_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CCQE_XSec_1DQ2_antinu") ||
!name.compare("MiniBooNE_CCQELike_XSec_1DQ2_antinu") ||
!name.compare("MiniBooNE_CCQE_CTarg_XSec_1DQ2_antinu")) {
return (new MiniBooNE_CCQE_XSec_1DQ2_antinu(samplekey));
} else if (!name.compare("MiniBooNE_CCQE_XSec_2DTcos_nu") ||
!name.compare("MiniBooNE_CCQELike_XSec_2DTcos_nu")) {
return (new MiniBooNE_CCQE_XSec_2DTcos_nu(samplekey));
} else if (!name.compare("MiniBooNE_CCQE_XSec_2DTcos_antinu") ||
!name.compare("MiniBooNE_CCQELike_XSec_2DTcos_antinu")) {
return (new MiniBooNE_CCQE_XSec_2DTcos_antinu(samplekey));
/*
MiniBooNE CC1pi+
*/
// 1D
} else if (!name.compare("MiniBooNE_CC1pip_XSec_1DEnu_nu")) {
return (new MiniBooNE_CC1pip_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_1DQ2_nu")) {
return (new MiniBooNE_CC1pip_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_1DTpi_nu")) {
return (new MiniBooNE_CC1pip_XSec_1DTpi_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_1DTu_nu")) {
return (new MiniBooNE_CC1pip_XSec_1DTu_nu(samplekey));
// 2D
} else if (!name.compare("MiniBooNE_CC1pip_XSec_2DQ2Enu_nu")) {
return (new MiniBooNE_CC1pip_XSec_2DQ2Enu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_2DTpiCospi_nu")) {
return (new MiniBooNE_CC1pip_XSec_2DTpiCospi_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_2DTpiEnu_nu")) {
return (new MiniBooNE_CC1pip_XSec_2DTpiEnu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_2DTuCosmu_nu")) {
return (new MiniBooNE_CC1pip_XSec_2DTuCosmu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pip_XSec_2DTuEnu_nu")) {
return (new MiniBooNE_CC1pip_XSec_2DTuEnu_nu(samplekey));
/*
MiniBooNE CC1pi0
*/
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1DEnu_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1DQ2_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1DTu_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1DTu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1Dcosmu_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1Dcosmu_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1Dcospi0_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1Dcospi0_nu(samplekey));
} else if (!name.compare("MiniBooNE_CC1pi0_XSec_1Dppi0_nu")) {
return (new MiniBooNE_CC1pi0_XSec_1Dppi0_nu(samplekey));
} else if (!name.compare("MiniBooNE_NC1pi0_XSec_1Dcospi0_antinu") ||
!name.compare("MiniBooNE_NC1pi0_XSec_1Dcospi0_rhc")) {
return (new MiniBooNE_NC1pi0_XSec_1Dcospi0_antinu(samplekey));
} else if (!name.compare("MiniBooNE_NC1pi0_XSec_1Dcospi0_nu") ||
!name.compare("MiniBooNE_NC1pi0_XSec_1Dcospi0_fhc")) {
return (new MiniBooNE_NC1pi0_XSec_1Dcospi0_nu(samplekey));
} else if (!name.compare("MiniBooNE_NC1pi0_XSec_1Dppi0_antinu") ||
!name.compare("MiniBooNE_NC1pi0_XSec_1Dppi0_rhc")) {
return (new MiniBooNE_NC1pi0_XSec_1Dppi0_antinu(samplekey));
} else if (!name.compare("MiniBooNE_NC1pi0_XSec_1Dppi0_nu") ||
!name.compare("MiniBooNE_NC1pi0_XSec_1Dppi0_fhc")) {
return (new MiniBooNE_NC1pi0_XSec_1Dppi0_nu(samplekey));
/*
MiniBooNE NCEL
*/
} else if (!name.compare("MiniBooNE_NCEL_XSec_Treco_nu")) {
return (new MiniBooNE_NCEL_XSec_Treco_nu(samplekey));
} else
#endif
#ifndef __NO_MicroBooNE__
/*
MicroBooNE Samples
*/
/*
MicroBooNE CCinclusive
*/
if (!name.compare("MicroBooNE_CCInc_XSec_2DPcos_nu")) {
return (new MicroBooNE_CCInc_XSec_2DPcos_nu(samplekey));
} else
#endif
#ifndef __NO_MINERvA__
/*
MINERvA Samples
*/
if (!name.compare("MINERvA_CCQE_XSec_1DQ2_nu") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_nu_20deg") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_nu_oldflux") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_nu_20deg_oldflux")) {
return (new MINERvA_CCQE_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MINERvA_CCQE_XSec_1DQ2_antinu") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_antinu_20deg") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_antinu_oldflux") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_antinu_20deg_oldflux")) {
return (new MINERvA_CCQE_XSec_1DQ2_antinu(samplekey));
} else if (!name.compare("MINERvA_CCQE_XSec_1DQ2_joint_oldflux") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_joint_20deg_oldflux") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_joint") ||
!name.compare("MINERvA_CCQE_XSec_1DQ2_joint_20deg")) {
return (new MINERvA_CCQE_XSec_1DQ2_joint(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DEe_nue")) {
return (new MINERvA_CC0pi_XSec_1DEe_nue(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DQ2_nue")) {
return (new MINERvA_CC0pi_XSec_1DQ2_nue(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DThetae_nue")) {
return (new MINERvA_CC0pi_XSec_1DThetae_nue(samplekey));
} else if (!name.compare("MINERvA_CC0pinp_STV_XSec_1Dpmu_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Dthmu_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Dpprot_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Dthprot_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Dpnreco_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Ddalphat_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Ddpt_nu") ||
!name.compare("MINERvA_CC0pinp_STV_XSec_1Ddphit_nu")) {
return (new MINERvA_CC0pinp_STV_XSec_1D_nu(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DQ2_nu_proton")) {
return (new MINERvA_CC0pi_XSec_1DQ2_nu_proton(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtC_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtCH_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtFe_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtPb_nu")) {
return (new MINERvA_CC0pi_XSec_1DQ2_Tgt_nu(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtRatioC_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtRatioFe_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2_TgtRatioPb_nu")) {
return (new MINERvA_CC0pi_XSec_1DQ2_TgtRatio_nu(samplekey));
// Dan Ruterbories measurements of late 2018
} else if (!name.compare("MINERvA_CC0pi_XSec_2Dptpz_nu")) {
return (new MINERvA_CC0pi_XSec_2D_nu(samplekey));
// } else if (!name.compare("MINERvA_CC0pi_XSec_3DptpzTp_nu")) {
// return (new MINERvA_CC0pi_XSec_3DptpzTp_nu(samplekey));
} else if (!name.compare("MINERvA_CC0pi_XSec_1Dpt_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1Dpz_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DQ2QE_nu") ||
!name.compare("MINERvA_CC0pi_XSec_1DEnuQE_nu")) {
return (new MINERvA_CC0pi_XSec_1D_2018_nu(samplekey));
// C. Patrick's early 2018 measurements
} else if (!name.compare("MINERvA_CC0pi_XSec_2Dptpz_antinu") ||
!name.compare("MINERvA_CC0pi_XSec_2DQ2QEEnuQE_antinu") ||
!name.compare("MINERvA_CC0pi_XSec_2DQ2QEEnuTrue_antinu")) {
return (new MINERvA_CC0pi_XSec_2D_antinu(samplekey));
/*
CC1pi+
*/
// DONE
} else if (!name.compare("MINERvA_CC1pip_XSec_1DTpi_nu") ||
!name.compare("MINERvA_CC1pip_XSec_1DTpi_nu_20deg") ||
!name.compare("MINERvA_CC1pip_XSec_1DTpi_nu_fluxcorr") ||
!name.compare("MINERvA_CC1pip_XSec_1DTpi_nu_20deg_fluxcorr")) {
return (new MINERvA_CC1pip_XSec_1DTpi_nu(samplekey));
// DONE
} else if (!name.compare("MINERvA_CC1pip_XSec_1Dth_nu") ||
!name.compare("MINERvA_CC1pip_XSec_1Dth_nu_20deg") ||
!name.compare("MINERvA_CC1pip_XSec_1Dth_nu_fluxcorr") ||
!name.compare("MINERvA_CC1pip_XSec_1Dth_nu_20deg_fluxcorr")) {
return (new MINERvA_CC1pip_XSec_1Dth_nu(samplekey));
} else if (!name.compare("MINERvA_CC1pip_XSec_1DTpi_nu_2017") ||
!name.compare("MINERvA_CC1pip_XSec_1Dth_nu_2017") ||
!name.compare("MINERvA_CC1pip_XSec_1Dpmu_nu_2017") ||
!name.compare("MINERvA_CC1pip_XSec_1Dthmu_nu_2017") ||
!name.compare("MINERvA_CC1pip_XSec_1DQ2_nu_2017") ||
!name.compare("MINERvA_CC1pip_XSec_1DEnu_nu_2017")) {
return (new MINERvA_CC1pip_XSec_1D_2017Update(samplekey));
/*
CCNpi+
*/
} else if (!name.compare("MINERvA_CCNpip_XSec_1Dth_nu") ||
!name.compare("MINERvA_CCNpip_XSec_1Dth_nu_2015") ||
!name.compare("MINERvA_CCNpip_XSec_1Dth_nu_2016") ||
!name.compare("MINERvA_CCNpip_XSec_1Dth_nu_2015_20deg") ||
!name.compare("MINERvA_CCNpip_XSec_1Dth_nu_2015_fluxcorr") ||
!name.compare("MINERvA_CCNpip_XSec_1Dth_nu_2015_20deg_fluxcorr")) {
return (new MINERvA_CCNpip_XSec_1Dth_nu(samplekey));
} else if (!name.compare("MINERvA_CCNpip_XSec_1DTpi_nu") ||
!name.compare("MINERvA_CCNpip_XSec_1DTpi_nu_2015") ||
!name.compare("MINERvA_CCNpip_XSec_1DTpi_nu_2016") ||
!name.compare("MINERvA_CCNpip_XSec_1DTpi_nu_2015_20deg") ||
!name.compare("MINERvA_CCNpip_XSec_1DTpi_nu_2015_fluxcorr") ||
!name.compare(
"MINERvA_CCNpip_XSec_1DTpi_nu_2015_20deg_fluxcorr")) {
return (new MINERvA_CCNpip_XSec_1DTpi_nu(samplekey));
} else if (!name.compare("MINERvA_CCNpip_XSec_1Dthmu_nu")) {
return (new MINERvA_CCNpip_XSec_1Dthmu_nu(samplekey));
} else if (!name.compare("MINERvA_CCNpip_XSec_1Dpmu_nu")) {
return (new MINERvA_CCNpip_XSec_1Dpmu_nu(samplekey));
} else if (!name.compare("MINERvA_CCNpip_XSec_1DQ2_nu")) {
return (new MINERvA_CCNpip_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MINERvA_CCNpip_XSec_1DEnu_nu")) {
return (new MINERvA_CCNpip_XSec_1DEnu_nu(samplekey));
/*
MINERvA CC1pi0 anti-nu
*/
// Done
} else if (!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu_2015") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu_2016") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu_fluxcorr") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu_2015_fluxcorr") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_antinu_2016_fluxcorr")) {
return (new MINERvA_CC1pi0_XSec_1Dth_antinu(samplekey));
} else if (!name.compare("MINERvA_CC1pi0_XSec_1Dppi0_antinu") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dppi0_antinu_fluxcorr")) {
return (new MINERvA_CC1pi0_XSec_1Dppi0_antinu(samplekey));
} else if (!name.compare("MINERvA_CC1pi0_XSec_1DTpi0_antinu")) {
return (new MINERvA_CC1pi0_XSec_1DTpi0_antinu(samplekey));
// Done
} else if (!name.compare("MINERvA_CC1pi0_XSec_1DQ2_antinu")) {
return (new MINERvA_CC1pi0_XSec_1DQ2_antinu(samplekey));
// Done
} else if (!name.compare("MINERvA_CC1pi0_XSec_1Dthmu_antinu")) {
return (new MINERvA_CC1pi0_XSec_1Dthmu_antinu(samplekey));
// Done
} else if (!name.compare("MINERvA_CC1pi0_XSec_1Dpmu_antinu")) {
return (new MINERvA_CC1pi0_XSec_1Dpmu_antinu(samplekey));
// Done
} else if (!name.compare("MINERvA_CC1pi0_XSec_1DEnu_antinu")) {
return (new MINERvA_CC1pi0_XSec_1DEnu_antinu(samplekey));
// MINERvA CC1pi0 nu
} else if (!name.compare("MINERvA_CC1pi0_XSec_1DTpi_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dth_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dpmu_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1Dthmu_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DQ2_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DEnu_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DWexp_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DPPi0Mass_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DPPi0MassDelta_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DCosAdler_nu") ||
!name.compare("MINERvA_CC1pi0_XSec_1DPhiAdler_nu")) {
return (new MINERvA_CC1pi0_XSec_1D_nu(samplekey));
/*
CCINC
*/
} else if (!name.compare("MINERvA_CCinc_XSec_2DEavq3_nu")) {
return (new MINERvA_CCinc_XSec_2DEavq3_nu(samplekey));
} else if (!name.compare("MINERvA_CCinc_XSec_1Dx_ratio_C12_CH") ||
!name.compare("MINERvA_CCinc_XSec_1Dx_ratio_Fe56_CH") ||
!name.compare("MINERvA_CCinc_XSec_1Dx_ratio_Pb208_CH")) {
return (new MINERvA_CCinc_XSec_1Dx_ratio(samplekey));
} else if (!name.compare("MINERvA_CCinc_XSec_1DEnu_ratio_C12_CH") ||
!name.compare("MINERvA_CCinc_XSec_1DEnu_ratio_Fe56_CH") ||
!name.compare("MINERvA_CCinc_XSec_1DEnu_ratio_Pb208_CH")) {
return (new MINERvA_CCinc_XSec_1DEnu_ratio(samplekey));
/*
CCDIS
*/
} else if (!name.compare("MINERvA_CCDIS_XSec_1Dx_ratio_C12_CH") ||
!name.compare("MINERvA_CCDIS_XSec_1Dx_ratio_Fe56_CH") ||
!name.compare("MINERvA_CCDIS_XSec_1Dx_ratio_Pb208_CH")) {
return (new MINERvA_CCDIS_XSec_1Dx_ratio(samplekey));
} else if (!name.compare("MINERvA_CCDIS_XSec_1DEnu_ratio_C12_CH") ||
!name.compare("MINERvA_CCDIS_XSec_1DEnu_ratio_Fe56_CH") ||
!name.compare("MINERvA_CCDIS_XSec_1DEnu_ratio_Pb208_CH")) {
return (new MINERvA_CCDIS_XSec_1DEnu_ratio(samplekey));
/*
CC-COH
*/
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEnu_nu")) {
return (new MINERvA_CCCOHPI_XSec_1DEnu_nu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEpi_nu")) {
return (new MINERvA_CCCOHPI_XSec_1DEpi_nu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1Dth_nu")) {
return (new MINERvA_CCCOHPI_XSec_1Dth_nu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DQ2_nu")) {
return (new MINERvA_CCCOHPI_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEnu_antinu")) {
return (new MINERvA_CCCOHPI_XSec_1DEnu_antinu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEpi_antinu")) {
return (new MINERvA_CCCOHPI_XSec_1DEpi_antinu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1Dth_antinu")) {
return (new MINERvA_CCCOHPI_XSec_1Dth_antinu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DQ2_antinu")) {
return (new MINERvA_CCCOHPI_XSec_1DQ2_antinu(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEnu_joint")) {
return (new MINERvA_CCCOHPI_XSec_joint(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DEpi_joint")) {
return (new MINERvA_CCCOHPI_XSec_joint(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1Dth_joint")) {
return (new MINERvA_CCCOHPI_XSec_joint(samplekey));
} else if (!name.compare("MINERvA_CCCOHPI_XSec_1DQ2_joint")) {
return (new MINERvA_CCCOHPI_XSec_joint(samplekey));
/*
T2K Samples
*/
} else
#endif
#ifndef __NO_T2K__
if (!name.compare("T2K_CC0pi_XSec_2DPcos_nu_I")) {
return (new T2K_CC0pi_XSec_2DPcos_nu_I(samplekey));
} else if (!name.compare("T2K_CC0pi_XSec_2DPcos_nu_II")) {
return (new T2K_CC0pi_XSec_2DPcos_nu_II(samplekey));
} else if (!name.compare("T2K_CCinc_XSec_2DPcos_nu_nonuniform")) {
return (new T2K_CCinc_XSec_2DPcos_nu_nonuniform(samplekey));
+ } else if (!name.compare("T2K_NuMu_CC0pi_CH_XSec_2DPcos")) {
+ return (new T2K_NuMu_CC0pi_CH_XSec_2DPcos(samplekey));
+
+ } else if (!name.compare("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos")) {
+ return (new T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos(samplekey));
+
} else if (!name.compare("T2K_nueCCinc_XSec_1Dpe_FHC") ||
!name.compare("T2K_nueCCinc_XSec_1Dpe_RHC") ||
!name.compare("T2K_nuebarCCinc_XSec_1Dpe_RHC")) {
return (new T2K_nueCCinc_XSec_1Dpe(samplekey));
} else if (!name.compare("T2K_nueCCinc_XSec_joint")) {
return (new T2K_nueCCinc_XSec_joint(samplekey));
/*
T2K CC1pi+ CH samples
*/
// Comment these out for now because we don't have the proper data
} else if (!name.compare("T2K_CC1pip_CH_XSec_2Dpmucosmu_nu")) {
return (new T2K_CC1pip_CH_XSec_2Dpmucosmu_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1Dppi_nu")) {
return (new T2K_CC1pip_CH_XSec_1Dppi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1Dthpi_nu")) {
return (new T2K_CC1pip_CH_XSec_1Dthpi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1Dthmupi_nu")) {
return (new T2K_CC1pip_CH_XSec_1Dthmupi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1DQ2_nu")) {
return (new T2K_CC1pip_CH_XSec_1DQ2_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1DAdlerPhi_nu")) {
return (new T2K_CC1pip_CH_XSec_1DAdlerPhi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_CH_XSec_1DCosThAdler_nu")) {
return (new T2K_CC1pip_CH_XSec_1DCosThAdler_nu(samplekey));
// Maybe something for the future: were in Raquel's thesis
//} else if (!name.compare("T2K_CC1pip_CH_XSec_1Dq3_nu")) {
// return (new T2K_CC1pip_CH_XSec_1Dq3_nu(file, rw, type, fkdt));
//} else if (!name.compare("T2K_CC1pip_CH_XSec_1Dthq3pi_nu")) {
// return (new T2K_CC1pip_CH_XSec_1Dthq3pi_nu(file, rw, type, fkdt));
//} else if (!name.compare("T2K_CC1pip_CH_XSec_1DWrec_nu")) {
// return (new T2K_CC1pip_CH_XSec_1DWrec_nu(file, rw, type, fkdt));
/*
T2K CC1pi+ H2O samples
*/
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1DEnuDelta_nu")) {
return (new T2K_CC1pip_H2O_XSec_1DEnuDelta_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1DEnuMB_nu")) {
return (new T2K_CC1pip_H2O_XSec_1DEnuMB_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1Dcosmu_nu")) {
return (new T2K_CC1pip_H2O_XSec_1Dcosmu_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1Dcosmupi_nu")) {
return (new T2K_CC1pip_H2O_XSec_1Dcosmupi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1Dcospi_nu")) {
return (new T2K_CC1pip_H2O_XSec_1Dcospi_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1Dpmu_nu")) {
return (new T2K_CC1pip_H2O_XSec_1Dpmu_nu(samplekey));
} else if (!name.compare("T2K_CC1pip_H2O_XSec_1Dppi_nu")) {
return (new T2K_CC1pip_H2O_XSec_1Dppi_nu(samplekey));
/*
T2K CC0pi + np CH samples
*/
} else if (!name.compare("T2K_CC0pinp_STV_XSec_1Ddpt_nu")) {
return (new T2K_CC0pinp_STV_XSec_1Ddpt_nu(samplekey));
} else if (!name.compare("T2K_CC0pinp_STV_XSec_1Ddphit_nu")) {
return (new T2K_CC0pinp_STV_XSec_1Ddphit_nu(samplekey));
} else if (!name.compare("T2K_CC0pinp_STV_XSec_1Ddat_nu")) {
return (new T2K_CC0pinp_STV_XSec_1Ddat_nu(samplekey));
} else if (!name.compare("T2K_CC0pi1p_XSec_3DPcoscos_nu_nonuniform")) {
return (new T2K_CC0pi1p_XSec_3DPcoscos_nu_nonuniform(samplekey));
} else if (!name.compare("T2K_CC0pinp_ifk_XSec_3Dinfp_nu")) {
return (new T2K_CC0pinp_ifk_XSec_3Dinfp_nu(samplekey));
} else if (!name.compare("T2K_CC0pinp_ifk_XSec_3Dinfa_nu")) {
return (new T2K_CC0pinp_ifk_XSec_3Dinfa_nu(samplekey));
} else if (!name.compare("T2K_CC0pinp_ifk_XSec_3Dinfip_nu")) {
return (new T2K_CC0pinp_ifk_XSec_3Dinfip_nu(samplekey));
// SciBooNE COH studies
} else
#endif
#ifndef __NO_SciBooNE__
if (!name.compare("SciBooNE_CCCOH_STOP_NTrks_nu")) {
return (new SciBooNE_CCCOH_STOP_NTrks_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_1TRK_1DQ2_nu")) {
return (new SciBooNE_CCCOH_1TRK_1DQ2_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_1TRK_1Dpmu_nu")) {
return (new SciBooNE_CCCOH_1TRK_1Dpmu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_1TRK_1Dthetamu_nu")) {
return (new SciBooNE_CCCOH_1TRK_1Dthetamu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPr_1DQ2_nu")) {
return (new SciBooNE_CCCOH_MuPr_1DQ2_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPr_1Dpmu_nu")) {
return (new SciBooNE_CCCOH_MuPr_1Dpmu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPr_1Dthetamu_nu")) {
return (new SciBooNE_CCCOH_MuPr_1Dthetamu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiVA_1DQ2_nu")) {
return (new SciBooNE_CCCOH_MuPiVA_1DQ2_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiVA_1Dpmu_nu")) {
return (new SciBooNE_CCCOH_MuPiVA_1Dpmu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiVA_1Dthetamu_nu")) {
return (new SciBooNE_CCCOH_MuPiVA_1Dthetamu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiNoVA_1DQ2_nu")) {
return (new SciBooNE_CCCOH_MuPiNoVA_1DQ2_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiNoVA_1Dthetapr_nu")) {
return (new SciBooNE_CCCOH_MuPiNoVA_1Dthetapr_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiNoVA_1Dthetapi_nu")) {
return (new SciBooNE_CCCOH_MuPiNoVA_1Dthetapi_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiNoVA_1Dthetamu_nu")) {
return (new SciBooNE_CCCOH_MuPiNoVA_1Dthetamu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_MuPiNoVA_1Dpmu_nu")) {
return (new SciBooNE_CCCOH_MuPiNoVA_1Dpmu_nu(samplekey));
} else if (!name.compare("SciBooNE_CCCOH_STOPFINAL_1DQ2_nu")) {
return (new SciBooNE_CCCOH_STOPFINAL_1DQ2_nu(samplekey));
} else if (!name.compare("SciBooNE_CCInc_XSec_1DEnu_nu") ||
!name.compare("SciBooNE_CCInc_XSec_1DEnu_nu_NEUT") ||
!name.compare("SciBooNE_CCInc_XSec_1DEnu_nu_NUANCE")) {
return (new SciBooNE_CCInc_XSec_1DEnu_nu(samplekey));
/*
K2K Samples
*/
/*
NC1pi0
*/
} else
#endif
#ifndef __NO_K2K__
if (!name.compare("K2K_NC1pi0_Evt_1Dppi0_nu")) {
return (new K2K_NC1pi0_Evt_1Dppi0_nu(samplekey));
/*
Fake Studies
*/
} else
#endif
if (name.find("ExpMultDist_CCQE_XSec_1D") != std::string::npos &&
name.find("_FakeStudy") != std::string::npos) {
return (
new ExpMultDist_CCQE_XSec_1DVar_FakeStudy(name, file, rw, type, fkdt));
} else if (name.find("ExpMultDist_CCQE_XSec_2D") != std::string::npos &&
name.find("_FakeStudy") != std::string::npos) {
return (
new ExpMultDist_CCQE_XSec_2DVar_FakeStudy(name, file, rw, type, fkdt));
} else if (name.find("GenericFlux_") != std::string::npos) {
return (new GenericFlux_Tester(name, file, rw, type, fkdt));
} else if (name.find("GenericVectors_") != std::string::npos) {
return (new GenericFlux_Vectors(name, file, rw, type, fkdt));
} else if (!name.compare("T2K2017_FakeData")) {
return (new T2K2017_FakeData(samplekey));
} else if (!name.compare("MCStudy_CCQE")) {
return (new MCStudy_CCQEHistograms(name, file, rw, type, fkdt));
} else if (!name.compare("ElectronFlux_FlatTree")) {
return (new ElectronFlux_FlatTree(name, file, rw, type, fkdt));
} else if (name.find("ElectronData_") != std::string::npos) {
return new ElectronScattering_DurhamData(samplekey);
} else if (name.find("MuonValidation_") != std::string::npos) {
return (new MCStudy_MuonValidation(name, file, rw, type, fkdt));
} else if (!name.compare("NIWGOfficialPlots")) {
return (new OfficialNIWGPlots(samplekey));
} else if ((name.find("SigmaEnuHists") != std::string::npos) ||
(name.find("SigmaEnuPerEHists") != std::string::npos)) {
return (new SigmaEnuHists(name, file, rw, type, fkdt));
} else if (!name.compare("Simple_Osc")) {
return (new Simple_Osc(samplekey));
} else if (!name.compare("Smear_SVDUnfold_Propagation_Osc")) {
return (new Smear_SVDUnfold_Propagation_Osc(samplekey));
} else {
NUIS_ABORT("Error: No such sample: " << name << std::endl);
}
// Return NULL if no sample loaded.
return NULL;
} // namespace SampleUtils
} // namespace SampleUtils
diff --git a/src/FCN/sample_list.xml b/src/FCN/sample_list.xml
index a9e7e6f..e8a4cd8 100644
--- a/src/FCN/sample_list.xml
+++ b/src/FCN/sample_list.xml
@@ -1,416 +1,419 @@
<sample_list>
<input eventcomment=' #### ' />
<input eventcomment='Replace the following file paths to point to your MC files of interest.' />
<input eventcomment='If you dont care about a specific set, then just remove that
input line, or leave the file path blank' />
<input eventcomment='Replace TYPE: with your generator type, e.g. "GENIE:"" ' />
<input eventcomment=' #### ' />
<input action='SKIP' />
<input comment='ANL SAMPLES' check='ANL'/>
<input eventcomment='ANL_FHC_NUMU_D2 : events generated with ANL forward horn current
flux in muon neutrino mode on a deuterium target.' />
<input comment='ANL CCQE' check='ANL_CCQE' />
<input sample="ANL_CCQE_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_XSec_1DEnu_nu_PRD26" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_XSec_1DEnu_nu_PRL31" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_XSec_1DEnu_nu_PRD16" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_Evt_1DQ2_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_Evt_1DQ2_nu_PRL31" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_Evt_1DQ2_nu_PRD26" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CCQE_Evt_1DQ2_nu_PRD16" type="TYPE:ANL_FHC_NUMU_D2" />
<input comment=' ANL CC1PPIP' check='ANL_CC1ppip' />
<input sample="ANL_CC1ppip_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_XSec_1DEnu_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_XSec_1DEnu_nu_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_XSec_1DEnu_nu_W14Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_XSec_1DEnu_nu_W16Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_XSec_1DQ2_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1DQ2_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1DQ2_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1Dppi_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1Dthpr_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1DcosmuStar_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1DcosthAdler_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1ppip_Evt_1Dphi_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input comment=' ANL CC1NPIP' check='ANL_CC1npip' />
<input sample="ANL_CC1npip_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_XSec_1DEnu_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_XSec_1DEnu_nu_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_XSec_1DEnu_nu_W14Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_XSec_1DEnu_nu_W16Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_Evt_1DQ2_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_Evt_1DQ2_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_Evt_1Dppi_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1npip_Evt_1DcosmuStar_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input comment=' ANL CC1PI0' check='ANL_CC1ppi0' />
<input sample="ANL_CC1pi0_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_XSec_1DEnu_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_XSec_1DEnu_nu_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_XSec_1DEnu_nu_W14Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_XSec_1DEnu_nu_W16Cut_Uncorr" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_Evt_1DQ2_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_Evt_1DQ2_nu_W14Cut" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC1pi0_Evt_1DcosmuStar_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input comment=' ANL NC' check='ANL_NC' />
<input sample="ANL_NC1npip_Evt_1Dppi_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_NC1ppim_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_NC1ppim_Evt_1DcosmuStar_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input comment=' ANL CC2PI' check='ANL_CC2pi' />
<input sample="ANL_CC2pi_1pim1pip_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pim1pip_Evt_1Dpmu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pim1pip_Evt_1Dppip_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pim1pip_Evt_1Dppim_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pim1pip_Evt_1Dpprot_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pip_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pip_Evt_1Dpmu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pip_Evt_1Dpneut_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pip_Evt_1DppipHigh_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pip_Evt_1DppipLow_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pi0_XSec_1DEnu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pi0_Evt_1Dpmu_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pi0_Evt_1Dppip_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pi0_Evt_1Dppi0_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input sample="ANL_CC2pi_1pip1pi0_Evt_1Dpprot_nu" type="TYPE:ANL_FHC_NUMU_D2" />
<input action='SKIP' />
<input comment='ArgoNeuT SAMPLES' check='ArgoNeuT'/>
<input eventcomment='ArgoNeuT_FHC_NUMU_AR : events generated with ArgoNeuT forward horn current
flux in muon neutrino mode on Argon 40 target.' />
<input eventcomment='ArgoNeuT_RHC_NUMUB_AR : events generated with ArgoNeuT reverse horn current
flux in muon antineutrino mode on Argon 40 target.' />
<input comment=' ArgoNeuT Neutrino' check='ArgoNeuT+_nu' />
<input sample="ArgoNeuT_CCInc_XSec_1Dpmu_nu" type="TYPE:ArgoNeuT_FHC_NUMU_AR" />
<input sample="ArgoNeuT_CCInc_XSec_1Dthetamu_nu" type="TYPE:ArgoNeuT_FHC_NUMU_AR" />
<input comment=' ArgoNeuT AntiNeutrino' check='ArgoNeuT+_antinu' />
<input sample="ArgoNeuT_CCInc_XSec_1Dpmu_antinu" type="TYPE:ArgoNeuT_RHC_NUMUB_AR" />
<input sample="ArgoNeuT_CCInc_XSec_1Dthetamu_antinu" type="TYPE:ArgoNeuT_RHC_NUMUB_AR" />
<input action='SKIP' />
<input comment='BNL SAMPLES' check='BNL'/>
<input eventcomment='BNL_FHC_NUMU_D2 : events generated with BNL forward horn current
flux in muon neutrino mode on a deuterium target.' />
<input comment=' BNL CCQE' check='BNL+_CCQE' />
<input sample="BNL_CCQE_XSec_1DEnu_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CCQE_Evt_1DQ2_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input comment=' BNL CC1ppip' check='BNL+_CC1ppip' />
<input sample="BNL_CC1ppip_XSec_1DEnu_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_XSec_1DEnu_nu_Uncorr" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_XSec_1DEnu_nu_W14Cut" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_XSec_1DEnu_nu_W14Cut_Uncorr" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_Evt_1DQ2_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_Evt_1DQ2_nu_W14Cut" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_Evt_1DcosthAdler_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1ppip_Evt_1Dphi_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input comment=' BNL CC1npip' check='BNL+_CC1npip' />
<input sample="BNL_CC1npip_XSec_1DEnu_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1npip_XSec_1DEnu_nu_Uncorr" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1npip_Evt_1DQ2_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input comment=' BNL CC1ppip' check='BNL+_CC1pi0' />
<input sample="BNL_CC1pi0_XSec_1DEnu_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input sample="BNL_CC1pi0_Evt_1DQ2_nu" type="TYPE:BNL_FHC_NUMU_D2" />
<input action='SKIP' />
<input comment='FNAL SAMPLES' check='FNAL'/>
<input eventcomment='FNAL_FHC_NUMU_D2 : events generated with FNAL forward horn current
flux in muon neutrino mode on a deuterium target.' />
<input comment=' FNAL CCQE' check='FNAL+_CCQE' />
<input sample="FNAL_CCQE_Evt_1DQ2_nu" type="TYPE:FNAL_FHC_NUMU_D2" />
<input comment=' FNAL CC1ppip' check='FNAL+_CC1ppip' />
<input sample="FNAL_CC1ppip_XSec_1DEnu_nu" type="TYPE:FNAL_FHC_NUMU_D2" />
<input sample="FNAL_CC1ppip_XSec_1DQ2_nu" type="TYPE:FNAL_FHC_NUMU_D2" />
<input sample="FNAL_CC1ppip_Evt_1DQ2_nu" type="TYPE:FNAL_FHC_NUMU_D2" />
<input comment=' FNAL CC1ppim Antineutrino' check='FNAL+_CC1ppim+_antinu' />
<input sample="FNAL_CC1ppim_XSec_1DEnu_antinu" type="TYPE:FNAL_RHC_NUMUB_D2" />
<input action='SKIP' />
<input comment='BEBC SAMPLES' check='BEBC'/>
<input eventcomment='BEBC_FHC_NUMU_D2 : events generated with BEBC forward horn current
flux in muon neutrino mode on a deuterium target.' />
<input eventcomment='BEBC_RHC_NUMUB_D2 : events generated with BEBC reverse horn current
flux in muon antineutrino mode on a deuterium target.' />
<input comment=' BEBC CCQE' check='BEBC+_CCQE' />
<input sample="BEBC_CCQE_XSec_1DQ2_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input comment=' BEBC CC1ppip' check='BEBC+_CC1ppip' />
<input sample="BEBC_CC1ppip_XSec_1DEnu_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input sample="BEBC_CC1ppip_XSec_1DQ2_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input comment=' BEBC CC1npip' check='BEBC+_CC1npip' />
<input sample="BEBC_CC1npip_XSec_1DEnu_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input sample="BEBC_CC1npip_XSec_1DQ2_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input comment=' BEBC CC1pi0' check='BEBC+_CC1pi0' />
<input sample="BEBC_CC1pi0_XSec_1DEnu_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input sample="BEBC_CC1pi0_XSec_1DQ2_nu" type="TYPE:BEBC_FHC_NUMU_D2" />
<input comment=' BEBC CC1npim Antineutrino' check='BEBC+_CC1npim+_antinu' />
<input sample="BEBC_CC1npim_XSec_1DEnu_antinu" type="TYPE:BEBC_RHC_NUMUB_D2" />
<input sample="BEBC_CC1npim_XSec_1DQ2_antinu" type="TYPE:BEBC_RHC_NUMUB_D2" />
<input sample="BEBC_CC1ppim_XSec_1DEnu_antinu" type="TYPE:BEBC_RHC_NUMUB_D2" />
<input sample="BEBC_CC1ppim_XSec_1DQ2_antinu" type="TYPE:BEBC_RHC_NUMUB_D2" />
<input action='SKIP' />
<input comment='GGM SAMPLES' check='GGM'/>
<input eventcomment='GGM_FHC_NUMU_D2 : events generated with GGM forward horn current
flux in muon neutrino mode on a deuterium target.' />
<input comment=' GGM CC1ppip' check='GGM+_CC1ppip' />
<input sample="GGM_CC1ppip_XSec_1DEnu_nu" type="TYPE:GGM_FHC_NUMU_D2" />
<input sample="GGM_CC1ppip_Evt_1DQ2_nu" type="TYPE:GGM_FHC_NUMU_D2" />
<input action='SKIP' />
<input comment='MiniBooNE SAMPLES' check='MiniBooNE'/>
<input eventcomment='MB_FHC_NUMU_CH2 : events generated with MiniBooNE forward horn current
flux in muon neutrino mode on a CH2 target.' />
<input eventcomment='MB_FHC_NUMUB_CH2 : events generated with MiniBooNE forward horn current
flux in muon antineutrino mode on a CH2 target.' />
<input eventcomment='MB_RHC_NUMUB_CH2 : events generated with MiniBooNE reverse horn current
flux in muon antineutrino mode on a CH2 target.' />
<input eventcomment='MB_RHC_NUMU_CH2 : events generated with MiniBooNE reverse horn current
flux in muon neutrino mode on a CH2 target.' />
<input eventcomment='MB_FHC_NUMUandNUMUBAR_CH2 : events generated with MiniBooNE forward horn current
flux in muon neutrino mode AND muon antineutrino mode on a CH2 target. '/>
<input eventcomment=' Can be a single file with both in it or can be given as a joint file like
TYPE:(MB_FHC_NUMU_CH2,MB_FHC_NUMUB_CH2)' />
<input eventcomment='MB_RHC_NUMUBARandNUMU_CH2 : events generated with MiniBooNE reverse horn current
flux in muon antineutrino mode AND muon neutrino mode on a CH2 target. '/>
<input eventcomment=' Can be a single file with both in it or can be given as a joint file like
TYPE:(MB_RHC_NUMUB_CH2,MB_RHC_NUMU_CH2)' />
<input comment=' MiniBooNE CCQELike NuMu' check='MiniBooNE+_CCQE' />
<input sample="MiniBooNE_CCQE_XSec_1DQ2_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CCQE_XSec_2DTcos_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CCQE_XSec_1DEnu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input comment=' MiniBooNE CC0PI NuMu' check='MiniBooNE+_CCQELike' />
<input sample="MiniBooNE_CCQELike_XSec_2DTcos_nu" type="TYPE:MB_FHC_NUMUandNUMUBAR_CH2" />
<input sample="MiniBooNE_CCQELike_XSec_1DQ2_nu" type="TYPE:MB_FHC_NUMUandNUMUBAR_CH2" />
<input comment=' MiniBooNE CCQELike AntiNuMu' check='MiniBooNE+_CCQE+_antinu' />
<input sample="MiniBooNE_CCQE_XSec_1DQ2_antinu" type="TYPE:MB_RHC_NUMUB_CH2" />
<input sample="MiniBooNE_CCQE_CTarg_XSec_1DQ2_antinu" type="TYPE:MB_RHC_NUMUB_CH2" />
<input sample="MiniBooNE_CCQE_XSec_2DTcos_antinu" type="TYPE:MB_RHC_NUMUB_CH2" />
<input comment=' MiniBooNE CC0PI AntiNuMu' check='MiniBooNE+_CCQELike+_antinu' />
<input sample="MiniBooNE_CCQELike_XSec_2DTcos_antinu" type="TYPE:MB_RHC_NUMUBARandNUMU_CH2" />
<input sample="MiniBooNE_CCQELike_XSec_1DQ2_antinu" type="TYPE:MB_RHC_NUMUBARandNUMU_CH2" />
<input comment=' MiniBooNE CC1PIP ' check='MiniBooNE+_CC1pip' />
<input sample="MiniBooNE_CC1pip_XSec_1DEnu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_1DQ2_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_1DTpi_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_1DTu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_2DQ2Enu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_2DTpiCospi_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_2DTpiEnu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_2DTuCosmu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pip_XSec_2DTuEnu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input comment=' MiniBooNE CC1PI0 ' check='MiniBooNE+_CC1pi0' />
<input sample="MiniBooNE_CC1pi0_XSec_1DEnu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pi0_XSec_1DQ2_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pi0_XSec_1DTu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pi0_XSec_1Dcosmu_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pi0_XSec_1Dcospi0_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_CC1pi0_XSec_1Dppi0_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input comment=' MiniBooNE NC1pi0 Neutrino ' check='MiniBooNE+_NC1pi0+_nu' />
<input sample="MiniBooNE_NC1pi0_XSec_1Dcospi0_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input sample="MiniBooNE_NC1pi0_XSec_1Dppi0_nu" type="TYPE:MB_FHC_NUMU_CH2" />
<input comment=' MiniBooNE NC1pi0 Antineutrino ' check='MiniBooNE+_NC1pi0+_antinu' />
<input sample="MiniBooNE_NC1pi0_XSec_1Dcospi0_antinu" type="TYPE:MB_RHC_NUMUB_CH2" />
<input sample="MiniBooNE_NC1pi0_XSec_1Dppi0_antinu" type="TYPE:MB_RHC_NUMUB_CH2" />
<input comment=' MiniBooNE NC1pi0 FHC ' check='MiniBooNE+_NC1pi0+_fhc' />
<input sample="MiniBooNE_NC1pi0_XSec_1Dcospi0_fhc" type="TYPE:MB_FHC_NUMUandNUMUBAR_CH2" />
<input sample="MiniBooNE_NC1pi0_XSec_1Dppi0_fhc" type="TYPE:MB_FHC_NUMUandNUMUBAR_CH2" />
<input comment=' MiniBooNE NC1pi0 RHC ' check='MiniBooNE+_NC1pi0+_rhc' />
<input sample="MiniBooNE_NC1pi0_XSec_1Dcospi0_rhc" type="TYPE:MB_RHC_NUMUBARandNUMU_CH2" />
<input sample="MiniBooNE_NC1pi0_XSec_1Dppi0_rhc" type="TYPE:MB_RHC_NUMUBARandNUMU_CH2" />
<input comment=' MiniBooNE NCEL ' check='MiniBooNE+_NC1pi0+_NCEL' />
<input sample="MiniBooNE_NCEL_XSec_Treco_nu" type="TYPE:MB_FHC_NUMUandNUMUBAR_CH2" />
<input action='SKIP' />
<input comment='MINERvA SAMPLES' check='MINERvA'/>
<input eventcomment='MIN_FHC_NUMU_CH : events generated with MINERvA forward horn current
flux in muon neutrino mode on a CH target.' />
<input eventcomment='MIN_FHC_NUMU_C : events generated with MINERvA forward horn current
flux in muon neutrino mode on a C target.' />
<input eventcomment='MIN_FHC_NUMU_Fe : events generated with MINERvA forward horn current
flux in muon neutrino mode on a Fe target.' />
<input eventcomment='MIN_FHC_NUMU_Pb : events generated with MINERvA forward horn current
flux in muon neutrino mode on a Pb target.' />
<input eventcomment='MIN_RHC_NUMUB_CH : events generated with MINERvA reverse horn current
flux in muon antineutrino mode on a CH target.' />
<input eventcomment='MIN_FHC_NUEandNUEB_CH : events generated with MINERvA forward horn current
flux in electorn neutrino mode AND electorn antineutrino mode on a CH target.' />
<input eventcomment=' Can be a single file with both in it or can be given as a joint file like
TYPE:(MB_FHC_NUE_CH,MB_FHC_NUEB_CH)' />
<input comment=' MINERvA CCQELike NUMU ' check='MINERvA+_CCQE+_nu' />
<input sample="MINERvA_CCQE_XSec_1DQ2_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_nu_20deg" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_nu_oldflux" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_nu_20deg_oldflux" type="TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA CCQELike NUMUBAR ' check='MINERvA+_CCQE+_antinu' />
<input sample="MINERvA_CCQE_XSec_1DQ2_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_antinu_20deg" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_antinu_oldflux" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_antinu_20deg_oldflux" type="TYPE:MIN_RHC_NUMUB_CH" />
<input comment=' MINERvA CCQELike JOINT ' check='MINERvA+_CCQE+_joint' />
<input sample="MINERvA_CCQE_XSec_1DQ2_joint_oldflux" type="TYPE:MIN_RHC_NUMUB_CH;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_joint_20deg_oldflux" type="TYPE:MIN_RHC_NUMUB_CH;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_joint" type="TYPE:MIN_RHC_NUMUB_CH;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCQE_XSec_1DQ2_joint_20deg" type="TYPE:MIN_RHC_NUMUB_CH;TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA CC0PI JOINT ' check='MINERvA+_CC0pi+_nue' />
<input sample="MINERvA_CC0pi_XSec_1DEe_nue" type="TYPE:MIN_FHC_NUEandNUEB_CH" />
<input sample="MINERvA_CC0pi_XSec_1DQ2_nue" type="TYPE:MIN_FHC_NUEandNUEB_CH" />
<input sample="MINERvA_CC0pi_XSec_1DThetae_nue" type="TYPE:MIN_FHC_NUEandNUEB_CH" />
<input comment=' MINERvA CC0PI1p ' check='MINERvA+_CC0pi+_nu_proton' />
<input sample="MINERvA_CC0pi_XSec_1DQ2_nu_proton" type="TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA CC1ppip ' check='MINERvA+_CC1ppip' />
<input sample="MINERvA_CC1pip_XSec_1DTpi_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1DTpi_nu_20deg" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1DTpi_nu_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1DTpi_nu_20deg_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1Dth_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1Dth_nu_20deg" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1Dth_nu_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CC1pip_XSec_1Dth_nu_20deg_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA CCNpip ' check='MINERvA+_CCNpip' />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu_2015" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu_2016" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu_2015_20deg" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu_2015_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dth_nu_2015_20deg_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu_2015" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu_2016" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu_2015_20deg" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu_2015_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DTpi_nu_2015_20deg_fluxcorr" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dthmu_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1Dpmu_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DQ2_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCNpip_XSec_1DEnu_nu" type="TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA CC1pi0 Antineutrino ' check='MINERvA+_CC1pi0+_antinu' />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu_2015" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu_2016" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu_fluxcorr" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu_2015_fluxcorr" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dth_antinu_2016_fluxcorr" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dppi0_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dppi0_antinu_fluxcorr" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1DTpi0_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1DQ2_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dthmu_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1Dpmu_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CC1pi0_XSec_1DEnu_antinu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input sample="MINERvA_CCinc_XSec_2DEavq3_nu" type="TYPE:MIN_RHC_NUMUB_CH" />
<input comment=' MINERvA Carbon targets ' check='MINERvA+_TgtC/MINERvA+_C12/MINERvA+_TgtRatioC' />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtC_nu" type="TYPE:MIN_FHC_NUMU_C" />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtRatioC_nu" type="TYPE:MIN_FHC_NUMU_C;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1Dx_ratio_C12_CH" type="TYPE:MIN_FHC_NUMU_C;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1DEnu_ratio_C12_CH" type="TYPE:MIN_FHC_NUMU_C;TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA Iron targets ' check='MINERvA+_TgtFe/MINERvA+_Fe56/MINERvA+_TgtRatioFe' />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtFe_nu" type="TYPE:MIN_FHC_NUMU_Fe" />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtRatioFe_nu" type="TYPE:MIN_FHC_NUMU_Fe;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1Dx_ratio_Fe56_CH" type="TYPE:MIN_FHC_NUMU_Fe;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1DEnu_ratio_Fe56_CH" type="TYPE:MIN_FHC_NUMU_Fe;TYPE:MIN_FHC_NUMU_CH" />
<input comment=' MINERvA Lead targets ' check='MINERvA+_TgtPb/MINERvA+_Pb208/MINERvA+_TgtRatioPb' />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtPb_nu" type="TYPE:MIN_FHC_NUMU_Pb" />
<input sample="MINERvA_CC0pi_XSec_1DQ2_TgtRatioPb_nu" type="TYPE:MIN_FHC_NUMU_Pb;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1Dx_ratio_Pb208_CH" type="TYPE:MIN_FHC_NUMU_Pb;TYPE:MIN_FHC_NUMU_CH" />
<input sample="MINERvA_CCinc_XSec_1DEnu_ratio_Pb208_CH" type="TYPE:MIN_FHC_NUMU_Pb;TYPE:MIN_FHC_NUMU_CH" />
<input action='SKIP' />
<input comment='T2K SAMPLES' check='T2K'/>
<input eventcomment='T2K_FHC_NUMU_CH : events generated with T2K forward horn current
flux in muon neutrino mode on a CH target.' />
<input eventcomment='T2K_FHC_NUMU_H2O : events generated with T2K forward horn current
flux in muon neutrino mode on a H2O target.' />
<input comment=' T2K CC0pi ' check='T2K+_CC0pi' />
<input sample="T2K_CC0pi_XSec_2DPcos_nu_II" type="TYPE:T2K_FHC_NUMU_CH" />
<input sample="T2K_CC0pi_XSec_2DPcos_nu_I" type="TYPE:T2K_FHC_NUMU_CH" />
+
+ <input sample="T2K_NuMu_CC0pi_CH_XSec_2DPcos" type="TYPE:T2K_FHC_NUMU_CH" />
+ <input sample="T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos" type="TYPE:T2K_RHC_NUMU_CH" />
<input comment=' T2K CC1pi H2O ' check='T2K+_CC1pip+H2O' />
<input sample="T2K_CC1pip_H2O_XSec_1DEnuDelta_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1DEnuMB_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1Dcosmu_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1Dcosmupi_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1Dcospi_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1Dpmu_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input sample="T2K_CC1pip_H2O_XSec_1Dppi_nu" type="TYPE:T2K_FHC_NUMU_H2O" />
<input action='SKIP' />
<input comment='K2K SAMPLES' check='K2K'/>
<input eventcomment='K2K_FHC_NUMU_H2O : events generated with K2K forward horn current
flux in muon neutrino mode on a H2O target.' />
<input comment=' K2K NC1pi0 H2O ' check='K2K+_NC1pi0+H2O' />
<input sample="K2K_NC1pi0_Evt_1Dppi0_nu" type="TYPE:K2K_FHC_NUMU_H2O" />
</sample_list>
diff --git a/src/T2K/CMakeLists.txt b/src/T2K/CMakeLists.txt
index b706840..2608d0a 100644
--- a/src/T2K/CMakeLists.txt
+++ b/src/T2K/CMakeLists.txt
@@ -1,106 +1,110 @@
# Copyright 2016 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 <http://www.gnu.org/licenses/>.
################################################################################
set(IMPLFILES
T2K_CC0pi_XSec_2DPcos_nu_I.cxx
T2K_CC0pi_XSec_2DPcos_nu_II.cxx
T2K_CCinc_XSec_2DPcos_nu_nonuniform.cxx
T2K_nueCCinc_XSec_1Dpe.cxx
T2K_nueCCinc_XSec_joint.cxx
T2K_CC1pip_CH_XSec_2Dpmucosmu_nu.cxx
T2K_CC1pip_CH_XSec_1Dppi_nu.cxx
T2K_CC1pip_CH_XSec_1Dthpi_nu.cxx
T2K_CC1pip_CH_XSec_1Dthmupi_nu.cxx
T2K_CC1pip_CH_XSec_1DQ2_nu.cxx
T2K_CC1pip_CH_XSec_1DAdlerPhi_nu.cxx
T2K_CC1pip_CH_XSec_1DCosThAdler_nu.cxx
T2K_CC1pip_H2O_XSec_1DEnuDelta_nu.cxx
T2K_CC1pip_H2O_XSec_1DEnuMB_nu.cxx
T2K_CC1pip_H2O_XSec_1Dcosmu_nu.cxx
T2K_CC1pip_H2O_XSec_1Dcosmupi_nu.cxx
T2K_CC1pip_H2O_XSec_1Dcospi_nu.cxx
T2K_CC1pip_H2O_XSec_1Dpmu_nu.cxx
T2K_CC1pip_H2O_XSec_1Dppi_nu.cxx
T2K_CC0pinp_STV_XSec_1Ddpt_nu.cxx
T2K_CC0pinp_STV_XSec_1Ddphit_nu.cxx
T2K_CC0pinp_STV_XSec_1Ddat_nu.cxx
T2K_CC0pi1p_XSec_3DPcoscos_nu_nonuniform.cxx
T2K_CC0pinp_ifk_XSec_3Dinfp_nu.cxx
T2K_CC0pinp_ifk_XSec_3Dinfa_nu.cxx
T2K_CC0pinp_ifk_XSec_3Dinfip_nu.cxx
+T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.cxx
+T2K_NuMu_CC0pi_CH_XSec_2DPcos.cxx
T2K_SignalDef.cxx
)
set(HEADERFILES
T2K_CC0pi_XSec_2DPcos_nu_I.h
T2K_CC0pi_XSec_2DPcos_nu_II.h
T2K_CCinc_XSec_2DPcos_nu_nonuniform.h
T2K_nueCCinc_XSec_1Dpe.h
T2K_nueCCinc_XSec_joint.h
T2K_CC1pip_CH_XSec_2Dpmucosmu_nu.h
T2K_CC1pip_CH_XSec_1Dppi_nu.h
T2K_CC1pip_CH_XSec_1Dthpi_nu.h
T2K_CC1pip_CH_XSec_1Dthmupi_nu.h
T2K_CC1pip_CH_XSec_1DQ2_nu.h
T2K_CC1pip_CH_XSec_1DAdlerPhi_nu.h
T2K_CC1pip_CH_XSec_1DCosThAdler_nu.h
T2K_CC1pip_H2O_XSec_1DEnuDelta_nu.h
T2K_CC1pip_H2O_XSec_1DEnuMB_nu.h
T2K_CC1pip_H2O_XSec_1Dcosmu_nu.h
T2K_CC1pip_H2O_XSec_1Dcosmupi_nu.h
T2K_CC1pip_H2O_XSec_1Dcospi_nu.h
T2K_CC1pip_H2O_XSec_1Dpmu_nu.h
T2K_CC1pip_H2O_XSec_1Dppi_nu.h
T2K_CC0pinp_STV_XSec_1Ddpt_nu.h
T2K_CC0pinp_STV_XSec_1Ddphit_nu.h
T2K_CC0pinp_STV_XSec_1Ddat_nu.h
T2K_CC0pi1p_XSec_3DPcoscos_nu_nonuniform.h
T2K_CC0pinp_ifk_XSec_3Dinfp_nu.h
T2K_CC0pinp_ifk_XSec_3Dinfa_nu.h
T2K_CC0pinp_ifk_XSec_3Dinfip_nu.h
+T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h
+T2K_NuMu_CC0pi_CH_XSec_2DPcos.h
T2K_SignalDef.h
)
set(LIBNAME expT2K)
if(CMAKE_BUILD_TYPE MATCHES DEBUG)
add_library(${LIBNAME} STATIC ${IMPLFILES})
else(CMAKE_BUILD_TYPE MATCHES RELEASE)
add_library(${LIBNAME} SHARED ${IMPLFILES})
endif()
include_directories(${MINIMUM_INCLUDE_DIRECTORIES})
set_target_properties(${LIBNAME} PROPERTIES VERSION
"${NUISANCE_VERSION_MAJOR}.${NUISANCE_VERSION_MINOR}.${NUISANCE_VERSION_REVISION}")
#set_target_properties(${LIBNAME} PROPERTIES LINK_FLAGS ${ROOT_LD_FLAGS})
if(DEFINED PROJECTWIDE_EXTRA_DEPENDENCIES)
add_dependencies(${LIBNAME} ${PROJECTWIDE_EXTRA_DEPENDENCIES})
endif()
install(TARGETS ${LIBNAME} DESTINATION lib)
#Can uncomment this to install the headers... but is it really neccessary?
install(FILES ${HEADERFILES} DESTINATION include/T2K)
set(MODULETargets ${MODULETargets} ${LIBNAME} PARENT_SCOPE)
diff --git a/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.cxx b/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.cxx
index c822c86..2ea91d5 100644
--- a/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.cxx
+++ b/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.cxx
@@ -1,327 +1,189 @@
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
*******************************************************************************/
#include "T2K_SignalDef.h"
#include "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h"
static size_t nangbins = 9;
-static double angular_binning_costheta[] = {-1, 0, 0.6, 0.7, 0.8,
- 0.85, 0.9, 0.94, 0.98, 1};
+static double angular_binning_costheta[] = {-1, 0.2, 0.6, 0.7, 0.8,
+ 0.85, 0.9, 0.94, 0.98, 1 };
//********************************************************************
T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey) {
//********************************************************************
// Sample overview ---------------------------------------------------
- std::string descrip = "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos sample. \n"
+ std::string descrip = "T2K_AntiNuMu_CC0pi_2DPcos sample. \n"
"Target: CH \n"
"Flux: T2K 2.5 degree off-axis (ND280) \n"
"Signal: CC0pi\n"
- "arXiv";
+ "arXiv:2002.09323";
// Setup common settings
fSettings = LoadSampleSettings(samplekey);
fSettings.SetDescription(descrip);
fSettings.SetXTitle("P_{#mu} (GeV)");
fSettings.SetYTitle("cos#theta_{#mu}");
fSettings.SetZTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)");
- fSettings.SetAllowedTypes("FULL,DIAG/FREE,SHAPE,FIX/SYSTCOV/STATCOV",
- "FIX/FULL");
+ fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX");
+ fSettings.SetEnuRange(0.0, 30.0);
fSettings.DefineAllowedTargets("C,H");
- fSettings.SetEnuRangeFromFlux(fFluxHist);
// CCQELike plot information
fSettings.SetTitle("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos");
fSettings.DefineAllowedSpecies("numub");
FinaliseSampleSettings();
- fMaskMomOverflow = false;
- if (samplekey.Has("mask_mom_overflow")) {
- fMaskMomOverflow = samplekey.GetB("mask_mom_overflow");
- }
-
// Scaling Setup ---------------------------------------------------
// ScaleFactor automatically setup for DiffXSec/cm2/Nucleon
- fScaleFactor = ((GetEventHistogram()->Integral("width") / (fNEvents + 0.)) *
- 1E-38 / (TotalIntegratedFlux()));
+ fScaleFactor = ((GetEventHistogram()->Integral("width")/(fNEvents+0.)) * 1E-38 / (TotalIntegratedFlux()));
assert(std::isnormal(fScaleFactor));
// Setup Histograms
SetHistograms();
// Final setup ---------------------------------------------------
FinaliseMeasurement();
};
bool T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::isSignal(FitEvent *event) {
return SignalDef::isT2K_CC0pi(event, EnuMin, EnuMax);
};
void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::FillEventVariables(FitEvent *event) {
- if (event->NumFSParticle(13) == 0)
+ if (event->NumFSParticle(-13) == 0)
return;
TLorentzVector Pnu = event->GetNeutrinoIn()->fP;
- TLorentzVector Pmu = event->GetHMFSParticle(13)->fP;
+ TLorentzVector Pmu = event->GetHMFSParticle(-13)->fP;
double pmu = Pmu.Vect().Mag() / 1000.;
double CosThetaMu = cos(Pnu.Vect().Angle(Pmu.Vect()));
fXVar = pmu;
fYVar = CosThetaMu;
return;
};
void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::FillHistograms() {
Measurement1D::FillHistograms();
if (Signal) {
- fMCHist_Fine2D->Fill(fXVar, fYVar, Weight);
FillMCSlice(fXVar, fYVar, Weight);
}
}
// Modification is needed after the full reconfigure to move bins around
// Otherwise this would need to be replaced by a TH2Poly which is too awkward.
void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::ConvertEventRates() {
// Do standard conversion.
Measurement1D::ConvertEventRates();
// Scale MC slices by their bin area
for (size_t i = 0; i < nangbins; ++i) {
- fMCHist_Slices[i]->Scale(fScaleFactor / (angular_binning_costheta[i + 1] -
- angular_binning_costheta[i]),
- "width");
+ fMCHist_Slices[i]->Scale(fScaleFactor / (angular_binning_costheta[i + 1] - angular_binning_costheta[i]), "width");
}
// Now Convert into 1D list
fMCHist->Reset();
int bincount = 0;
for (size_t i = 0; i < nangbins; i++) {
for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++) {
fMCHist->SetBinContent(bincount + 1,
fMCHist_Slices[i]->GetBinContent(j + 1));
fMCHist->SetBinError(bincount + 1, fMCHist_Slices[i]->GetBinError(j + 1));
bincount++;
}
}
return;
}
void T2K_AntiNuMu_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])) {
fMCHist_Slices[i]->Fill(x, w);
}
}
}
void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::SetHistograms() {
// Read in 1D Data Histograms
- TFile input(
- (FitPar::GetDataBase() + "/T2K/CC0pi/T2K_CC0PI_2DPmuCosmu_Data.root")
- .c_str(),
- "READ");
- fMCHist_Fine2D = new TH2D("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_Fine2D",
- "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_Fine2D", 400, 0.0, 30.0,
- 100, -1.0, 1.0);
- fMCHist_Fine2D->SetDirectory(NULL);
- SetAutoProcessTH1(fMCHist_Fine2D);
-
- TH2D *tempcov = (TH2D *)input.Get("analysis1_totcov");
-
- fFullCovar = new TMatrixDSym(tempcov->GetNbinsX());
- for (int i = 0; i < tempcov->GetNbinsX(); i++) {
- for (int j = 0; j < tempcov->GetNbinsX(); j++) {
- (*fFullCovar)(i, j) = tempcov->GetBinContent(i + 1, j + 1);
- }
- }
-
- // Read in 2D Data Slices and Make MC Slices
- int bincount = 0;
- for (size_t i = 0; i < nangbins; i++) {
-
- fDataHist_Slices.push_back(
- (TH1D *)input.Get(Form("dataslice_%lu", i))->Clone());
+ fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ");
- fDataHist_Slices[i]->SetNameTitle(
- Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_data_Slice%lu", i),
- (Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_data_Slice%lu, cos(#theta) [%f,%f] ",
- i, angular_binning_costheta[i],
- angular_binning_costheta[i + 1])));
- fDataHist_Slices.back()->SetDirectory(NULL);
+ TH1D* hLinearResult = (TH1D*) fInputFile->Get("hAntiNuMuCC0piXsecLinearResult");
- // 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);
- bincount++;
- }
+ int Nbins = hLinearResult->GetNbinsX();
+ // Now Convert into 1D list
+ fDataHist = new TH1D("LinarResult","LinarResult",Nbins,0,Nbins);
+ for (int bin = 0; bin < Nbins; bin++){
+ fDataHist->SetBinContent(bin+1, hLinearResult->GetBinContent(bin+1));
}
+
+ fFullCovar = new TMatrixDSym(Nbins);
- assert(bincount == tempcov->GetNbinsX());
+ TMatrixDSym* tmpcovstat = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixStat");
+ TMatrixDSym* tmpcovsyst = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixSyst");
- if (fMaskMomOverflow) {
- MaskMomOverflow();
- bincount = fFullCovar->GetNcols();
- }
-
- std::vector<std::pair<double, double> > data_slice_bcbes;
- for (size_t i = 0; i < nangbins; i++) {
- for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++) {
- data_slice_bcbes.push_back(
- std::make_pair(fDataHist_Slices[i]->GetBinContent(j + 1),
- fDataHist_Slices[i]->GetBinError(j + 1)));
+ for(int ibin=0; ibin<Nbins; ibin++){
+ for(int jbin=0; jbin<Nbins; jbin++){
+ (*fFullCovar)(ibin,jbin) = ( (*tmpcovstat)(ibin+Nbins,jbin+Nbins) + (*tmpcovsyst)(ibin+Nbins,jbin+Nbins))*1E38*1E38;
}
}
-
- for (size_t i = 0; i < nangbins; i++) {
- fMCHist_Slices.push_back((TH1D *)fDataHist_Slices[i]->Clone());
- fMCHist_Slices.back()->SetDirectory(NULL);
- fMCHist_Slices.back()->Reset();
- fMCHist_Slices.back()->SetLineColor(kRed);
- fMCHist_Slices[i]->SetNameTitle(
- Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_MC_Slice%lu", i),
- (Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_MC_Slice%lu, cos(#theta) [%f,%f] ", i,
- angular_binning_costheta[i], angular_binning_costheta[i + 1])));
- }
-
covar = StatUtils::GetInvert(fFullCovar);
fDecomp = StatUtils::GetDecomp(fFullCovar);
-
- fDataHist =
- new TH1D("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_DATA_1D",
- "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_DATA_1D", bincount, 0, bincount);
- fDataHist->SetDirectory(NULL);
- for (size_t i = 0; i < data_slice_bcbes.size(); ++i) {
- fDataHist->SetBinContent(i + 1, data_slice_bcbes[i].first);
- fDataHist->SetBinError(i + 1, data_slice_bcbes[i].second);
- }
-
- fMCHist = (TH1D *)fDataHist->Clone("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_MC_1D");
- fMCHist->SetDirectory(NULL);
- return;
-}
-
-void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::MaskMomOverflow() {
-
- std::vector<int> bins_to_cut;
- size_t nallbins = 0;
- for (size_t i = 0; i < nangbins; i++) {
-
- std::vector<double> slice_bin_edges;
- slice_bin_edges.push_back(
- fDataHist_Slices[i]->GetXaxis()->GetBinLowEdge(1));
- for (int j = 0; j < (fDataHist_Slices[i]->GetNbinsX() - 1); j++) {
- slice_bin_edges.push_back(
- fDataHist_Slices[i]->GetXaxis()->GetBinUpEdge(j + 1));
- nallbins++;
+
+ fDataHist->Reset();
+ // Read in 1D Data Slices and Make MC Slices NuMu CC0pi Xsec
+ int bincount = 0;
+ for (int i = 0; i < nangbins; i++){
+ //Get Data Histogram
+ fDataHist_Slices.push_back((TH1D*)fInputFile->Get(Form("hXsecAntiNuMuCC0piDataSlice_%i",i))->Clone());
+ fDataHist_Slices[i]->SetNameTitle(Form("T2K_AntiNuMu_CC0pi_2DPcos_data_Slice%i",i),
+ (Form("T2K_AntiNuMu_CC0pi_2DPcos_data_Slice%i",i)));
+
+ //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++;
}
- bins_to_cut.push_back(nallbins++);
- TH1D *tmp = new TH1D(fDataHist_Slices[i]->GetName(),
- fDataHist_Slices[i]->GetTitle(),
- slice_bin_edges.size() - 1, slice_bin_edges.data());
- tmp->SetDirectory(NULL);
- for (int j = 0; j < (fDataHist_Slices[i]->GetNbinsX() - 1); j++) {
- tmp->SetBinContent(j + 1, fDataHist_Slices[i]->GetBinContent(j + 1));
- tmp->SetBinError(j + 1, fDataHist_Slices[i]->GetBinError(j + 1));
- }
+ //Make MC Clones
+ fMCHist_Slices.push_back((TH1D*) fDataHist_Slices[i]->Clone());
+ fMCHist_Slices[i]->SetNameTitle(Form("T2K_AntiNuMu_CC0pi_2DPcos_MC_Slice%i",i), (Form("T2K_AntiNuMu_CC0pi_2DPcos_MC_Slice%i",i)));
- delete fDataHist_Slices[i];
- fDataHist_Slices[i] = tmp;
- }
+ SetAutoProcessTH1(fMCHist_Slices[i],kCMD_Write);
+ SetAutoProcessTH1(fMCHist_Slices[i]);
- TMatrixDSym *tmpcovar = new TMatrixDSym(nallbins - bins_to_cut.size());
- int icut = 0;
- for (int ifull = 0; ifull < fFullCovar->GetNcols(); ifull++) {
- if (std::find(bins_to_cut.begin(), bins_to_cut.end(), ifull) !=
- bins_to_cut.end()) {
- continue;
- }
- int jcut = 0;
- for (int jfull = 0; jfull < fFullCovar->GetNcols(); jfull++) {
- if (std::find(bins_to_cut.begin(), bins_to_cut.end(), jfull) !=
- bins_to_cut.end()) {
- continue;
- }
- (*tmpcovar)[icut][jcut] = (*fFullCovar)[ifull][jfull];
- jcut++;
- }
- icut++;
- }
- delete fFullCovar;
- fFullCovar = tmpcovar;
-}
-
-void T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos::Write(std::string drawopt) {
- this->Measurement1D::Write(drawopt);
-
- for (size_t i = 0; i < nangbins; i++) {
- fMCHist_Slices[i]->Write();
- fDataHist_Slices[i]->Write();
}
- if (fResidualHist) {
- std::vector<TH1D *> MCResidual_Slices;
- size_t tb_it = 0;
- for (size_t i = 0; i < fMCHist_Slices.size(); ++i) {
- std::string name =
- Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_RESIDUAL_Slice%lu", i);
- MCResidual_Slices.push_back(
- static_cast<TH1D *>(fMCHist_Slices[i]->Clone(name.c_str())));
- MCResidual_Slices.back()->Reset();
-
- for (int j = 0; j < fMCHist_Slices[i]->GetXaxis()->GetNbins(); ++j) {
- double bc = fResidualHist->GetBinContent(tb_it + 1);
- MCResidual_Slices.back()->SetBinContent(j + 1, bc);
- tb_it++;
- }
- MCResidual_Slices.back()->Write();
- }
- }
+ return;
- if (fChi2LessBinHist) {
- std::vector<TH1D *> MCChi2LessBin_Slices;
- size_t tb_it = 0;
- for (size_t i = 0; i < fMCHist_Slices.size(); ++i) {
- std::string name =
- Form("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos_Chi2NMinusOne_Slice%lu", i);
- MCChi2LessBin_Slices.push_back(
- static_cast<TH1D *>(fMCHist_Slices[i]->Clone(name.c_str())));
- MCChi2LessBin_Slices.back()->Reset();
-
- for (int j = 0; j < fMCHist_Slices[i]->GetXaxis()->GetNbins(); ++j) {
- double bc = fChi2LessBinHist->GetBinContent(tb_it + 1);
- MCChi2LessBin_Slices.back()->SetBinContent(j + 1, bc);
- tb_it++;
- }
- MCChi2LessBin_Slices.back()->Write();
- }
- }
}
+
diff --git a/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h b/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h
index 384fd58..03345f6 100644
--- a/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h
+++ b/src/T2K/T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos.h
@@ -1,71 +1,63 @@
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
*******************************************************************************/
#ifndef T2K_ANTINUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN
#define T2K_ANTINUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN
#include "Measurement1D.h"
#include "TH2Poly.h"
#include "MeasurementVariableBox2D.h"
class T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos : public Measurement1D {
public:
T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey);
/// Virtual Destructor
~T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos() {};
/// Numu CC0PI Signal Definition
///
/// /item
bool isSignal(FitEvent *nvect);
/// Read histograms in a special way because format is different.
/// Read from FitPar::GetDataBase()+"/T2K/CC0pi/T2K_CC0PI_2DPmuCosmu_Data.root"
void SetHistograms();
/// Bin Tmu CosThetaMu
void FillEventVariables(FitEvent* customEvent);
// Fill Histograms
void FillHistograms();
void ConvertEventRates();
- void Write(std::string drawopt);
-
- /// \brief Create Q2 Box to save correction info
- inline MeasurementVariableBox* CreateBox(){ return new MeasurementVariableBox2D(); };
-
private:
- bool fIsSystCov, fIsStatCov, fIsNormCov;
- bool fMaskMomOverflow;
-
- TH2D* fMCHist_Fine2D;
-
+ TFile* fInputFile;
std::vector<TH1D*> fMCHist_Slices;
std::vector<TH1D*> fDataHist_Slices;
- void FillMCSlice(double x, double y, double w);
- void MaskMomOverflow();
+ double pmu, CosThetaMu;
+
+ void FillMCSlice(double x, double y, int z, double w);
};
#endif
diff --git a/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.cxx b/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.cxx
index 1604f5b..c20a964 100644
--- a/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.cxx
+++ b/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.cxx
@@ -1,327 +1,185 @@
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
*******************************************************************************/
#include "T2K_SignalDef.h"
#include "T2K_NuMu_CC0pi_CH_XSec_2DPcos.h"
static size_t nangbins = 9;
-static double angular_binning_costheta[] = {-1, 0, 0.6, 0.7, 0.8,
- 0.85, 0.9, 0.94, 0.98, 1};
-
+static double angular_binning_costheta[] = {-1, 0.2, 0.6, 0.7, 0.8,
+ 0.85, 0.9, 0.94, 0.98, 1 };
//********************************************************************
T2K_NuMu_CC0pi_CH_XSec_2DPcos::T2K_NuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey) {
//********************************************************************
// Sample overview ---------------------------------------------------
- std::string descrip = "T2K_NuMu_CC0pi_CH_XSec_2DPcos sample. \n"
+ std::string descrip = "T2K_NuMu_CC0pi_2DPcos sample. \n"
"Target: CH \n"
"Flux: T2K 2.5 degree off-axis (ND280) \n"
"Signal: CC0pi\n"
- "arXiv";
+ "arXiv:2002.09323";
// Setup common settings
fSettings = LoadSampleSettings(samplekey);
fSettings.SetDescription(descrip);
fSettings.SetXTitle("P_{#mu} (GeV)");
fSettings.SetYTitle("cos#theta_{#mu}");
fSettings.SetZTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)");
- fSettings.SetAllowedTypes("FULL,DIAG/FREE,SHAPE,FIX/SYSTCOV/STATCOV",
- "FIX/FULL");
+ fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX");
+ fSettings.SetEnuRange(0.0, 30.0);
fSettings.DefineAllowedTargets("C,H");
- fSettings.SetEnuRangeFromFlux(fFluxHist);
// CCQELike plot information
fSettings.SetTitle("T2K_NuMu_CC0pi_CH_XSec_2DPcos");
fSettings.DefineAllowedSpecies("numu");
FinaliseSampleSettings();
- fMaskMomOverflow = false;
- if (samplekey.Has("mask_mom_overflow")) {
- fMaskMomOverflow = samplekey.GetB("mask_mom_overflow");
- }
-
// Scaling Setup ---------------------------------------------------
// ScaleFactor automatically setup for DiffXSec/cm2/Nucleon
- fScaleFactor = ((GetEventHistogram()->Integral("width") / (fNEvents + 0.)) *
- 1E-38 / (TotalIntegratedFlux()));
-
- assert(std::isnormal(fScaleFactor));
+ fScaleFactor = ((GetEventHistogram()->Integral("width")/(fNEvents+0.)) * 1E-38 / (TotalIntegratedFlux()));
// Setup Histograms
SetHistograms();
// Final setup ---------------------------------------------------
FinaliseMeasurement();
};
bool T2K_NuMu_CC0pi_CH_XSec_2DPcos::isSignal(FitEvent *event) {
return SignalDef::isT2K_CC0pi(event, EnuMin, EnuMax);
};
void T2K_NuMu_CC0pi_CH_XSec_2DPcos::FillEventVariables(FitEvent *event) {
if (event->NumFSParticle(13) == 0)
return;
TLorentzVector Pnu = event->GetNeutrinoIn()->fP;
TLorentzVector Pmu = event->GetHMFSParticle(13)->fP;
double pmu = Pmu.Vect().Mag() / 1000.;
double CosThetaMu = cos(Pnu.Vect().Angle(Pmu.Vect()));
fXVar = pmu;
fYVar = CosThetaMu;
return;
};
void T2K_NuMu_CC0pi_CH_XSec_2DPcos::FillHistograms() {
Measurement1D::FillHistograms();
if (Signal) {
fMCHist_Fine2D->Fill(fXVar, fYVar, Weight);
FillMCSlice(fXVar, fYVar, Weight);
}
}
// Modification is needed after the full reconfigure to move bins around
// Otherwise this would need to be replaced by a TH2Poly which is too awkward.
void T2K_NuMu_CC0pi_CH_XSec_2DPcos::ConvertEventRates() {
// Do standard conversion.
Measurement1D::ConvertEventRates();
// Scale MC slices by their bin area
for (size_t i = 0; i < nangbins; ++i) {
- fMCHist_Slices[i]->Scale(fScaleFactor / (angular_binning_costheta[i + 1] -
- angular_binning_costheta[i]),
- "width");
+ fMCHist_Slices[i]->Scale(fScaleFactor / (angular_binning_costheta[i + 1] - angular_binning_costheta[i]), "width");
}
// Now Convert into 1D list
fMCHist->Reset();
int bincount = 0;
for (size_t i = 0; i < nangbins; i++) {
for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++) {
- fMCHist->SetBinContent(bincount + 1,
- fMCHist_Slices[i]->GetBinContent(j + 1));
+ fMCHist->SetBinContent(bincount + 1, fMCHist_Slices[i]->GetBinContent(j + 1));
fMCHist->SetBinError(bincount + 1, fMCHist_Slices[i]->GetBinError(j + 1));
bincount++;
}
}
return;
}
void T2K_NuMu_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])) {
fMCHist_Slices[i]->Fill(x, w);
}
}
}
void T2K_NuMu_CC0pi_CH_XSec_2DPcos::SetHistograms() {
// Read in 1D Data Histograms
- TFile input(
- (FitPar::GetDataBase() + "/T2K/CC0pi/T2K_CC0PI_2DPmuCosmu_Data.root")
- .c_str(),
- "READ");
- fMCHist_Fine2D = new TH2D("T2K_NuMu_CC0pi_CH_XSec_2DPcos_Fine2D",
- "T2K_NuMu_CC0pi_CH_XSec_2DPcos_Fine2D", 400, 0.0, 30.0,
- 100, -1.0, 1.0);
- fMCHist_Fine2D->SetDirectory(NULL);
- SetAutoProcessTH1(fMCHist_Fine2D);
-
- TH2D *tempcov = (TH2D *)input.Get("analysis1_totcov");
-
- fFullCovar = new TMatrixDSym(tempcov->GetNbinsX());
- for (int i = 0; i < tempcov->GetNbinsX(); i++) {
- for (int j = 0; j < tempcov->GetNbinsX(); j++) {
- (*fFullCovar)(i, j) = tempcov->GetBinContent(i + 1, j + 1);
- }
- }
+ fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ");
- // Read in 2D Data Slices and Make MC Slices
- int bincount = 0;
- for (size_t i = 0; i < nangbins; i++) {
-
- fDataHist_Slices.push_back(
- (TH1D *)input.Get(Form("dataslice_%lu", i))->Clone());
+ TH1D* hLinearResult = (TH1D*) fInputFile->Get("hNuMuCC0piXsecLinearResult");
- fDataHist_Slices[i]->SetNameTitle(
- Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_data_Slice%lu", i),
- (Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_data_Slice%lu, cos(#theta) [%f,%f] ",
- i, angular_binning_costheta[i],
- angular_binning_costheta[i + 1])));
- fDataHist_Slices.back()->SetDirectory(NULL);
-
- // 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);
- bincount++;
- }
+ int Nbins = hLinearResult->GetNbinsX();
+ // Now Convert into 1D list
+ fDataHist = new TH1D("LinarResult","LinarResult",Nbins,0,Nbins);
+ for (int bin = 0; bin < Nbins; bin++){
+ fDataHist->SetBinContent(bin+1, hLinearResult->GetBinContent(bin+1));
}
+
+ fFullCovar = new TMatrixDSym(Nbins);
- assert(bincount == tempcov->GetNbinsX());
-
- if (fMaskMomOverflow) {
- MaskMomOverflow();
- bincount = fFullCovar->GetNcols();
- }
+ TMatrixDSym* tmpcovstat = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixStat");
+ TMatrixDSym* tmpcovsyst = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixSyst");
- std::vector<std::pair<double, double> > data_slice_bcbes;
- for (size_t i = 0; i < nangbins; i++) {
- for (int j = 0; j < fDataHist_Slices[i]->GetNbinsX(); j++) {
- data_slice_bcbes.push_back(
- std::make_pair(fDataHist_Slices[i]->GetBinContent(j + 1),
- fDataHist_Slices[i]->GetBinError(j + 1)));
+ for(int ibin=0; ibin<Nbins; ibin++){
+ for(int jbin=0; jbin<Nbins; jbin++){
+ (*fFullCovar)(ibin,jbin) = ( (*tmpcovstat)(ibin,jbin) + (*tmpcovsyst)(ibin,jbin))*1E38*1E38;
}
}
-
- for (size_t i = 0; i < nangbins; i++) {
- fMCHist_Slices.push_back((TH1D *)fDataHist_Slices[i]->Clone());
- fMCHist_Slices.back()->SetDirectory(NULL);
- fMCHist_Slices.back()->Reset();
- fMCHist_Slices.back()->SetLineColor(kRed);
- fMCHist_Slices[i]->SetNameTitle(
- Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_MC_Slice%lu", i),
- (Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_MC_Slice%lu, cos(#theta) [%f,%f] ", i,
- angular_binning_costheta[i], angular_binning_costheta[i + 1])));
- }
-
covar = StatUtils::GetInvert(fFullCovar);
fDecomp = StatUtils::GetDecomp(fFullCovar);
-
- fDataHist =
- new TH1D("T2K_NuMu_CC0pi_CH_XSec_2DPcos_DATA_1D",
- "T2K_NuMu_CC0pi_CH_XSec_2DPcos_DATA_1D", bincount, 0, bincount);
- fDataHist->SetDirectory(NULL);
- for (size_t i = 0; i < data_slice_bcbes.size(); ++i) {
- fDataHist->SetBinContent(i + 1, data_slice_bcbes[i].first);
- fDataHist->SetBinError(i + 1, data_slice_bcbes[i].second);
- }
-
- fMCHist = (TH1D *)fDataHist->Clone("T2K_NuMu_CC0pi_CH_XSec_2DPcos_MC_1D");
- fMCHist->SetDirectory(NULL);
- return;
-}
-
-void T2K_NuMu_CC0pi_CH_XSec_2DPcos::MaskMomOverflow() {
-
- std::vector<int> bins_to_cut;
- size_t nallbins = 0;
- for (size_t i = 0; i < nangbins; i++) {
-
- std::vector<double> slice_bin_edges;
- slice_bin_edges.push_back(
- fDataHist_Slices[i]->GetXaxis()->GetBinLowEdge(1));
- for (int j = 0; j < (fDataHist_Slices[i]->GetNbinsX() - 1); j++) {
- slice_bin_edges.push_back(
- fDataHist_Slices[i]->GetXaxis()->GetBinUpEdge(j + 1));
- nallbins++;
+
+ fDataHist->Reset();
+ // Read in 1D Data Slices and Make MC Slices NuMu CC0pi Xsec
+ int bincount = 0;
+ for (int i = 0; i < nangbins; i++){
+ //Get Data Histogram
+ fDataHist_Slices.push_back((TH1D*)fInputFile->Get(Form("hXsecNuMuCC0piDataSlice_%i",i))->Clone());
+ fDataHist_Slices[i]->SetNameTitle(Form("T2K_NuMu_CC0pi_2DPcos_data_Slice%i",i),
+ (Form("T2K_NuMu_CC0pi_2DPcos_data_Slice%i",i)));
+
+ //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++;
}
- bins_to_cut.push_back(nallbins++);
- TH1D *tmp = new TH1D(fDataHist_Slices[i]->GetName(),
- fDataHist_Slices[i]->GetTitle(),
- slice_bin_edges.size() - 1, slice_bin_edges.data());
- tmp->SetDirectory(NULL);
- for (int j = 0; j < (fDataHist_Slices[i]->GetNbinsX() - 1); j++) {
- tmp->SetBinContent(j + 1, fDataHist_Slices[i]->GetBinContent(j + 1));
- tmp->SetBinError(j + 1, fDataHist_Slices[i]->GetBinError(j + 1));
- }
+ //Make MC Clones
+ fMCHist_Slices.push_back((TH1D*) fDataHist_Slices[i]->Clone());
+ fMCHist_Slices[i]->SetNameTitle(Form("T2K_NuMu_CC0pi_2DPcos_MC_Slice%i",i), (Form("T2K_NuMu_CC0pi_2DPcos_MC_Slice%i",i)));
- delete fDataHist_Slices[i];
- fDataHist_Slices[i] = tmp;
- }
+ SetAutoProcessTH1(fMCHist_Slices[i],kCMD_Write);
+ SetAutoProcessTH1(fMCHist_Slices[i]);
- TMatrixDSym *tmpcovar = new TMatrixDSym(nallbins - bins_to_cut.size());
- int icut = 0;
- for (int ifull = 0; ifull < fFullCovar->GetNcols(); ifull++) {
- if (std::find(bins_to_cut.begin(), bins_to_cut.end(), ifull) !=
- bins_to_cut.end()) {
- continue;
- }
- int jcut = 0;
- for (int jfull = 0; jfull < fFullCovar->GetNcols(); jfull++) {
- if (std::find(bins_to_cut.begin(), bins_to_cut.end(), jfull) !=
- bins_to_cut.end()) {
- continue;
- }
- (*tmpcovar)[icut][jcut] = (*fFullCovar)[ifull][jfull];
- jcut++;
- }
- icut++;
- }
- delete fFullCovar;
- fFullCovar = tmpcovar;
-}
-
-void T2K_NuMu_CC0pi_CH_XSec_2DPcos::Write(std::string drawopt) {
- this->Measurement1D::Write(drawopt);
-
- for (size_t i = 0; i < nangbins; i++) {
- fMCHist_Slices[i]->Write();
- fDataHist_Slices[i]->Write();
}
- if (fResidualHist) {
- std::vector<TH1D *> MCResidual_Slices;
- size_t tb_it = 0;
- for (size_t i = 0; i < fMCHist_Slices.size(); ++i) {
- std::string name =
- Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_RESIDUAL_Slice%lu", i);
- MCResidual_Slices.push_back(
- static_cast<TH1D *>(fMCHist_Slices[i]->Clone(name.c_str())));
- MCResidual_Slices.back()->Reset();
-
- for (int j = 0; j < fMCHist_Slices[i]->GetXaxis()->GetNbins(); ++j) {
- double bc = fResidualHist->GetBinContent(tb_it + 1);
- MCResidual_Slices.back()->SetBinContent(j + 1, bc);
- tb_it++;
- }
- MCResidual_Slices.back()->Write();
- }
- }
+ return;
- if (fChi2LessBinHist) {
- std::vector<TH1D *> MCChi2LessBin_Slices;
- size_t tb_it = 0;
- for (size_t i = 0; i < fMCHist_Slices.size(); ++i) {
- std::string name =
- Form("T2K_NuMu_CC0pi_CH_XSec_2DPcos_Chi2NMinusOne_Slice%lu", i);
- MCChi2LessBin_Slices.push_back(
- static_cast<TH1D *>(fMCHist_Slices[i]->Clone(name.c_str())));
- MCChi2LessBin_Slices.back()->Reset();
-
- for (int j = 0; j < fMCHist_Slices[i]->GetXaxis()->GetNbins(); ++j) {
- double bc = fChi2LessBinHist->GetBinContent(tb_it + 1);
- MCChi2LessBin_Slices.back()->SetBinContent(j + 1, bc);
- tb_it++;
- }
- MCChi2LessBin_Slices.back()->Write();
- }
- }
}
diff --git a/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.h b/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.h
index 0f806dd..9f11980 100644
--- a/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.h
+++ b/src/T2K/T2K_NuMu_CC0pi_CH_XSec_2DPcos.h
@@ -1,71 +1,65 @@
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
*******************************************************************************/
#ifndef T2K_NUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN
#define T2K_NUMU_CC0PI_CH_XSEC_2DPCOS_H_SEEN
#include "Measurement1D.h"
#include "TH2Poly.h"
#include "MeasurementVariableBox2D.h"
class T2K_NuMu_CC0pi_CH_XSec_2DPcos : public Measurement1D {
public:
T2K_NuMu_CC0pi_CH_XSec_2DPcos(nuiskey samplekey);
/// Virtual Destructor
~T2K_NuMu_CC0pi_CH_XSec_2DPcos() {};
/// Numu CC0PI Signal Definition
///
/// /item
bool isSignal(FitEvent *nvect);
/// Read histograms in a special way because format is different.
/// Read from FitPar::GetDataBase()+"/T2K/CC0pi/T2K_CC0PI_2DPmuCosmu_Data.root"
void SetHistograms();
/// Bin Tmu CosThetaMu
void FillEventVariables(FitEvent* customEvent);
// Fill Histograms
void FillHistograms();
void ConvertEventRates();
- void Write(std::string drawopt);
-
- /// \brief Create Q2 Box to save correction info
- inline MeasurementVariableBox* CreateBox(){ return new MeasurementVariableBox2D(); };
private:
- bool fIsSystCov, fIsStatCov, fIsNormCov;
- bool fMaskMomOverflow;
-
- TH2D* fMCHist_Fine2D;
-
+ TFile* fInputFile;
std::vector<TH1D*> fMCHist_Slices;
std::vector<TH1D*> fDataHist_Slices;
- void FillMCSlice(double x, double y, double w);
- void MaskMomOverflow();
+ double pmu, CosThetaMu;
+
+ void FillMCSlice(double x, double y, int z, double w);
+
};
#endif
diff --git a/src/T2K/T2K_SignalDef.cxx b/src/T2K/T2K_SignalDef.cxx
index 24edfa1..f48e18c 100644
--- a/src/T2K/T2K_SignalDef.cxx
+++ b/src/T2K/T2K_SignalDef.cxx
@@ -1,342 +1,348 @@
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
*******************************************************************************/
#include "T2K_SignalDef.h"
#include "FitUtils.h"
namespace SignalDef {
// T2K H2O signal definition
// https://doi.org/10.1103/PhysRevD.97.012001
bool isCC1pip_T2K_PRD97_012001(FitEvent *event, double EnuMin, double EnuMax) {
if (!isCC1pi(event, 14, 211, EnuMin, EnuMax))
return false;
TLorentzVector Pnu = event->GetHMISParticle(14)->fP;
TLorentzVector Pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector Ppip = event->GetHMFSParticle(211)->fP;
double p_mu = FitUtils::p(Pmu) * 1000;
double p_pi = FitUtils::p(Ppip) * 1000;
double cos_th_mu = cos(FitUtils::th(Pnu, Pmu));
double cos_th_pi = cos(FitUtils::th(Pnu, Ppip));
if (p_mu <= 200 || p_pi <= 200 || cos_th_mu <= 0.3 || cos_th_pi <= 0.3) {
return false;
}
return true;
};
// ******************************************************
// T2K CC1pi+ CH analysis (Raquel's thesis)
// Has different phase space cuts depending on if using Michel tag or not
//
// Essentially consists of two samples: one sample which has Michel e (which we
// can't get pion direction from); this covers backwards angles quite well.
// Measurements including this sample does not have include pion kinematics cuts
// one sample which has PID in FGD and TPC
// and no Michel e. These are mostly
// forward-going so require a pion
// kinematics cut
//
// Essentially, cuts are:
// 1 negative muon
// 1 positive pion
// Any number of nucleons
// No other particles in the final state
//
// https://arxiv.org/abs/1909.03936
bool isCC1pip_T2K_arxiv1909_03936(FitEvent *event, double EnuMin, double EnuMax,
int pscuts) {
// ******************************************************
if (!isCC1pi(event, 14, 211, EnuMin, EnuMax)) {
return false;
}
TLorentzVector Pnu = event->GetHMISParticle(14)->fP;
TLorentzVector Pmu = event->GetHMFSParticle(13)->fP;
double cos_th_mu = cos(FitUtils::th(Pnu, Pmu));
if (pscuts == kMuonFwd) {
return (cos_th_mu > 0);
}
double p_mu = FitUtils::p(Pmu) * 1000;
if (pscuts & kMuonHighEff) {
if ((cos_th_mu <= 0.2) || (p_mu <= 200)) {
return false;
}
}
int npicuts = 0;
npicuts += bool(pscuts & kPionFwdHighMom);
npicuts += bool(pscuts & kPionHighMom);
npicuts += bool(pscuts & kPionHighEff);
if (npicuts != 1) {
NUIS_ABORT(
"isCC1pip_T2K_arxiv1909_03936 signal definition passed incompatible "
"pion phase space cuts. Should be either kMuonHighEff, or one of "
"kPionFwdHighMom,kPionHighMom, or kPionHighEff");
}
TLorentzVector Ppip = event->GetHMFSParticle(211)->fP;
double cos_th_pi = cos(FitUtils::th(Pnu, Ppip));
double p_pi = FitUtils::p(Ppip) * 1000;
if (pscuts & kPionFwdHighMom) {
return ((cos_th_pi > 0) && (p_pi > 200));
}
if (pscuts & kPionHighMom) {
return (p_pi > 200);
}
if (pscuts & kMuonHighEff) {
return ((cos_th_pi > 0.0) && (p_pi > 200));
}
return false;
};
bool isT2K_CC0pi(FitEvent *event, double EnuMin, double EnuMax, int ana) {
- // Require a numu CC0pi event
- if (!isCC0pi(event, 14, EnuMin, EnuMax))
+ int NuPDG = event->PDGnu();
+ // Require a numu (or antinumu) CC0pi event
+ if (!isCC0pi(event, NuPDG, EnuMin, EnuMax))
return false;
- TLorentzVector Pnu = event->GetHMISParticle(14)->fP;
- TLorentzVector Pmu = event->GetHMFSParticle(13)->fP;
+ TLorentzVector Pnu = event->GetHMISParticle(NuPDG)->fP;
+
+ int MuonPDG;
+ if(NuPDG==14) MuonPDG=13;
+ else MuonPDG=-13;
+
+ TLorentzVector Pmu = event->GetHMFSParticle(MuonPDG)->fP;
double CosThetaMu = cos(Pnu.Vect().Angle(Pmu.Vect()));
double p_mu = Pmu.Vect().Mag();
// If we're doing a restricted phase space, Analysis II asks for:
// Cos(theta_mu) > 0.0 and p_mu > 200 MeV
if (ana == kAnalysis_II) {
if ((CosThetaMu < 0.0) || (p_mu < 200)) {
return false;
}
}
return true;
}
bool isT2K_CC0pi1p(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Proton phase space
if (pp.Vect().Mag() < 500) {
return false;
}
// Need exactly one proton with 500 MeV or more momentum
std::vector<FitParticle *> protons = event->GetAllFSProton();
int nProtonsAboveThresh = 0;
for (size_t i = 0; i < protons.size(); i++) {
if (protons[i]->p() > 500)
nProtonsAboveThresh++;
}
if (nProtonsAboveThresh != 1)
return false;
return true;
}
-// CC0pi antinu in the P0D - TN328
+// CC0pi antinu in the P0D https://arxiv.org/abs/1908.10249
bool isT2K_CC0piAnuP0D(FitEvent *event, double EnuMin, double EnuMax) {
// Require a anumu CC0pi event
if (!isCC0pi(event, -14, EnuMin, EnuMax))
return false;
TLorentzVector pnu = event->GetHMISParticle(-14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(-13)->fP;
double Pmu = pmu.Vect().Mag();
double CosThetaMu = cos(pnu.Vect().Angle(pmu.Vect()));
// Muon phase space
if (Pmu < 400 || Pmu > 3410)
return false;
if (Pmu < 530 && CosThetaMu < 0.85)
return false;
if (Pmu < 670 && CosThetaMu < 0.88)
return false;
if (Pmu < 800 && CosThetaMu < 0.9)
return false;
if (Pmu < 1000 && CosThetaMu < 0.91)
return false;
if (Pmu < 1380 && CosThetaMu < 0.92)
return false;
if (Pmu < 2010 && CosThetaMu < 0.95)
return false;
return true;
}
bool isT2K_CC0piNp(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Proton phase space
if (pp.Vect().Mag() < 500) {
return false;
}
// Need exactly one proton with 500 MeV or more momentum
std::vector<FitParticle *> protons = event->GetAllFSProton();
int nProtonsAboveThresh = 0;
for (size_t i = 0; i < protons.size(); i++) {
if (protons[i]->p() > 500)
nProtonsAboveThresh++;
}
if (nProtonsAboveThresh < 2)
return false;
return true;
}
bool isT2K_CC0pi0p(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Proton phase space
if (pp.Vect().Mag() > 500) {
return false;
}
return true;
}
bool isT2K_CC0pi_STV(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Muon phase space
// Pmu > 250 MeV, cos(theta_mu) > -0.6 (Sweet phase space!)
if ((pmu.Vect().Mag() < 250) || cos(pnu.Vect().Angle(pmu.Vect())) < -0.6) {
return false;
}
// Proton phase space
// Pprot > 450 MeV, cos(theta_proton) > 0.4
if ((pp.Vect().Mag() < 450) || (pp.Vect().Mag() > 1E3) ||
(cos(pnu.Vect().Angle(pp.Vect())) < 0.4)) {
return false;
}
return true;
}
bool isT2K_CC0pi_ifk(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Proton phase space
// Pprot > 450 MeV, cos(theta_proton) > 0.4
if ((pp.Vect().Mag() < 450) || (cos(pnu.Vect().Angle(pp.Vect())) < 0.4)) {
return false;
}
return true;
}
bool isT2K_CC0pi_1bin(FitEvent *event, double EnuMin, double EnuMax) {
// Require a numu CC0pi event
if (!isCC0pi(event, 14, EnuMin, EnuMax))
return false;
// Require at least one FS proton
if (event->NumFSParticle(2212) == 0)
return false;
TLorentzVector pnu = event->GetHMISParticle(14)->fP;
TLorentzVector pmu = event->GetHMFSParticle(13)->fP;
TLorentzVector pp = event->GetHMFSParticle(2212)->fP;
// Muon phase space
// if ((pmu.Vect().Mag() < 250) || cos(pnu.Vect().Angle(pmu.Vect())) < -0.6) {
// return false;
//}
// Proton phase space
if ((pp.Vect().Mag() < 450) || (cos(pnu.Vect().Angle(pp.Vect())) < 0.4)) {
return false;
}
return true;
}
} // namespace SignalDef

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 7:10 PM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805771
Default Alt Text
(130 KB)

Event Timeline