Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F7878981
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
130 KB
Subscribers
None
View Options
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
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Nov 19, 7:10 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805771
Default Alt Text
(130 KB)
Attached To
rNUISANCEGIT nuisancegit
Event Timeline
Log In to Comment