diff --git a/src/FCN/SampleList.cxx b/src/FCN/SampleList.cxx
index 7bd0d68..613736e 100644
--- a/src/FCN/SampleList.cxx
+++ b/src/FCN/SampleList.cxx
@@ -1,1466 +1,1470 @@
 #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:2004.05434
 #include "T2K_NuMu_CC0pi_OC_XSec_2DPcos.h"
+#include "T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h"
 
 // T2K CC0pi 2020 arXiv:2002.09323
 #include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h"
-#include "T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h"
+#include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.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_O_XSec_2DPcos") ||
              !name.compare("T2K_NuMu_CC0pi_C_XSec_2DPcos")) {
     return (new T2K_NuMu_CC0pi_OC_XSec_2DPcos(samplekey));
 
+  } else if (!name.compare("T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint")) {
+    return (new T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint(samplekey));
+    
   } else if (!name.compare("T2K_NuMu_CC0pi_CH_XSec_2DPcos") ||
              !name.compare("T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos")) {
     return (new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(samplekey));
 
-  } else if (!name.compare("T2K_NuMuAntiNuMu_CC0pi_XSec_joint")) {
-    return (new T2K_NuMuAntiNuMu_CC0pi_XSec_joint(samplekey));
+  } else if (!name.compare("T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint")) {
+    return (new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint(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 7d2f2ef..9431bac 100644
--- a/src/FCN/sample_list.xml
+++ b/src/FCN/sample_list.xml
@@ -1,424 +1,425 @@
 <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_NUMU_CH" />
   <input sample="T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos" type="TYPE:T2K_ANTINUMU_CH" />
-  <input sample="T2K_NuMuAntiNuMu_CC0pi_XSec_joint" type="TYPE:T2K_NUMU_ANTINUMU_JOINT_CH" />
+  <input sample="T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint" type="TYPE:T2K_NUMU_ANTINUMU_JOINT_CH" />
   
   <input sample="T2K_NuMu_CC0pi_O_XSec_2DPcos" type="TYPE:T2K_NUMU_O" />
   <input sample="T2K_NuMu_CC0pi_C_XSec_2DPcos" type="TYPE:T2K_NUMU_C" />
+  <input sample="T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint" type="TYPE:T2K_NUMU_OC_JOINT" />
 
 
   <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 a075662..c44edf1 100644
--- a/src/T2K/CMakeLists.txt
+++ b/src/T2K/CMakeLists.txt
@@ -1,112 +1,114 @@
 # 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_NuMu_CC0pi_OC_XSec_2DPcos.cxx
+T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.cxx
 T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.cxx
-T2K_NuMuAntiNuMu_CC0pi_XSec_joint.cxx
+T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx
 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_SignalDef.cxx
 )
 
 set(HEADERFILES
 T2K_NuMu_CC0pi_OC_XSec_2DPcos.h
+T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h
 T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h
-T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h
+T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h
 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_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_NuMuAntiNuMu_CC0pi_XSec_joint.cxx b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx
similarity index 79%
rename from src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.cxx
rename to src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx
index fe669f0..e6b2f71 100644
--- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.cxx
+++ b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.cxx
@@ -1,156 +1,155 @@
-#include "T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h"
+#include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h"
 
 //********************************************************************
-T2K_NuMuAntiNuMu_CC0pi_XSec_joint::T2K_NuMuAntiNuMu_CC0pi_XSec_joint(nuiskey samplekey){
+T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint(nuiskey samplekey){
 //********************************************************************
 
   fSettings = LoadSampleSettings(samplekey);
-  std::string descrip = "T2K_NuMuAntiNuMu_CC0pi_XSec_joint. \n"
+  std::string descrip = "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint. \n"
                         "Target: CH \n"
                         "Flux: T2K 2.5 degree off-axis (ND280)  \n"
                         "Signal: CC0pi\n"
                         "arXiv:2002.09323";
-  fSettings.SetTitle("T2K_NuMuAntiNuMu_CC0pi_XSec_joint");
+  fSettings.SetTitle("T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint");
   fSettings.DefineAllowedSpecies("numu, numub");
   fSettings.SetDescription(descrip);
   fSettings.SetXTitle("p_{#mu}-cos#theta_{#mu}");
   fSettings.SetYTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)");
   fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX");
   fSettings.SetEnuRange(0.0, 30.0);
   fSettings.DefineAllowedTargets("C,H");
   FinaliseSampleSettings();
 
 
   if (fSubInFiles.size() != 2) {
     NUIS_ABORT("T2K NuMu-AntiNuMu joint requires input files in format: NuMu and AntiNuMu");
   }
 
   std::string inFileNuMu     = fSubInFiles.at(0);
   std::string inFileAntiNuMu = fSubInFiles.at(1);
 
   // Create some config keys
   nuiskey NuMuKey = Config::CreateKey("sample");
   NuMuKey.SetS("input", inFileNuMu);
   NuMuKey.SetS("type",  fSettings.GetS("type"));
   NuMuKey.SetS("name", "T2K_NuMu_CC0pi_CH_XSec_2DPcos");
   NuMuCC0pi = new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(NuMuKey);
 
   nuiskey AntiNuMuKey = Config::CreateKey("sample");
   AntiNuMuKey.SetS("input", inFileAntiNuMu);
   AntiNuMuKey.SetS("type",  fSettings.GetS("type"));
   AntiNuMuKey.SetS("name", "T2K_AntiNuMu_CC0pi_CH_XSec_2DPcos");
   AntiNuMuCC0pi = new T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos(AntiNuMuKey);
 
   // Sort out the data hist
   this->CombineDataHists();
 
   // Set the covariance
   SetCovariance();
   
   // Add to chain for processing
   fSubChain.clear();
   fSubChain.push_back(NuMuCC0pi);
   fSubChain.push_back(AntiNuMuCC0pi);
 
   // This saves information from the sub-measurements
   fSaveSubMeas = true;
   FinaliseMeasurement();
 };
 
 //********************************************************************
-void T2K_NuMuAntiNuMu_CC0pi_XSec_joint::SetCovariance(){
+void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::SetCovariance(){
 //********************************************************************
 
   fInputFile = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointNuMu-AntiNuMu/JointNuMuAntiNuMuCC0piXsecDataRelease.root").c_str(),"READ");
 
   TMatrixDSym* tmpcovstat = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixStat");
   TMatrixDSym* tmpcovsyst = (TMatrixDSym*) fInputFile->Get("JointNuMuAntiNuMuCC0piXsecCovMatrixSyst");
   
   fFullCovar = new TMatrixDSym(*tmpcovstat);
   (*fFullCovar)+=(*tmpcovsyst);
   covar = StatUtils::GetInvert(fFullCovar);
   fDecomp = StatUtils::GetDecomp(fFullCovar);
   ScaleCovar(1E76);
 
   return;
 }
 
 
 //********************************************************************
-void T2K_NuMuAntiNuMu_CC0pi_XSec_joint::CombineDataHists(){
+void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::CombineDataHists(){
 //********************************************************************
 
   TH1D *hNuMuData     = (TH1D*)NuMuCC0pi->GetDataHistogram();
   TH1D *hAntiNuMuData = (TH1D*)AntiNuMuCC0pi->GetDataHistogram();
 
   int nbins = hNuMuData->GetNbinsX() + hAntiNuMuData->GetNbinsX();
 
   fDataHist = new TH1D((fSettings.GetName() + "_data").c_str(),
                        (fSettings.GetFullTitles()).c_str(), nbins, 0, nbins);
   fDataHist->SetDirectory(0);
   
-  // Bit ugly, but...
   int count = 0;
   for (int x=0; x<hNuMuData->GetNbinsX(); ++x){
     fDataHist->SetBinContent(count+1, hNuMuData->GetBinContent(x+1));
     fDataHist->SetBinError(count+1,   hNuMuData->GetBinError(x+1));
     fDataHist->GetXaxis()->SetBinLabel(count+1, Form("NuMu CC0pi %.1f-%.1f", hNuMuData->GetXaxis()->GetBinLowEdge(x+1), hNuMuData->GetXaxis()->GetBinUpEdge(x+1)));
     count++;
   }
   for (int x=0; x<hAntiNuMuData->GetNbinsX(); ++x){
     fDataHist->SetBinContent(count+1, hAntiNuMuData->GetBinContent(x+1));
     fDataHist->SetBinError(count+1,   hAntiNuMuData->GetBinError(x+1));
     fDataHist->GetXaxis()->SetBinLabel(count+1, Form("AntiNuMu CC0pi %.1f-%.1f", hAntiNuMuData->GetXaxis()->GetBinLowEdge(x+1), hAntiNuMuData->GetXaxis()->GetBinUpEdge(x+1)));
     count++;
   }
 }
 
 //********************************************************************
-void T2K_NuMuAntiNuMu_CC0pi_XSec_joint::SetHistograms() {
+void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::SetHistograms() {
 //********************************************************************
 
   NuMuCC0pi->SetHistograms();
   AntiNuMuCC0pi->SetHistograms();
 
   return;
 }
 
 //********************************************************************
-void T2K_NuMuAntiNuMu_CC0pi_XSec_joint::FillHistograms() {
+void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::FillHistograms() {
 //********************************************************************
 
   NuMuCC0pi->FillHistograms();
   AntiNuMuCC0pi->FillHistograms();
 
   return;
 }
 
 //********************************************************************
-void T2K_NuMuAntiNuMu_CC0pi_XSec_joint::ConvertEventRates() {
+void T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint::ConvertEventRates() {
 //********************************************************************
   
   NuMuCC0pi->ConvertEventRates();
   AntiNuMuCC0pi->ConvertEventRates();
 
-  TH1D* hNuMuMC = (TH1D*)NuMuCC0pi->GetMCHistogram();
-  TH1D* hAntiNuMuMC = (TH1D*)AntiNuMuCC0pi->GetMCHistogram();
+  TH1D* hNuMuCC0pi     = (TH1D*)NuMuCC0pi->GetMCHistogram();
+  TH1D* hAntiNuMuCC0pi = (TH1D*)AntiNuMuCC0pi->GetMCHistogram();
   
   int count = 0;
-  for (int i = 0; i < hNuMuMC->GetNbinsX(); ++i) {
-    fMCHist->SetBinContent(count + 1, hNuMuMC->GetBinContent(i + 1));
-    fMCHist->SetBinError(count + 1, hNuMuMC->GetBinError(i + 1));
+  for (int i = 0; i < hNuMuCC0pi->GetNbinsX(); ++i) {
+    fMCHist->SetBinContent(count + 1, hNuMuCC0pi->GetBinContent(i + 1));
+    fMCHist->SetBinError(count + 1, hNuMuCC0pi->GetBinError(i + 1));
     count++;
   }
-  for (int i = 0; i < hAntiNuMuMC->GetNbinsX(); ++i) {
-    fMCHist->SetBinContent(count + 1, hAntiNuMuMC->GetBinContent(i + 1));
-    fMCHist->SetBinError(count + 1, hAntiNuMuMC->GetBinError(i + 1));
+  for (int i = 0; i < hAntiNuMuCC0pi->GetNbinsX(); ++i) {
+    fMCHist->SetBinContent(count + 1, hAntiNuMuCC0pi->GetBinContent(i + 1));
+    fMCHist->SetBinError(count + 1, hAntiNuMuCC0pi->GetBinError(i + 1));
     count++;
   }
 
   return;  
 }
 
 
 
 
 
diff --git a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h
similarity index 69%
copy from src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h
copy to src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h
index bd84226..8c88c0c 100644
--- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h
+++ b/src/T2K/T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint.h
@@ -1,41 +1,41 @@
-#ifndef T2K_NUMUANTINUMU_CC0PI_XSEC_JOINT_H_SEEN
-#define T2K_NUMUANTINUMU_CC0PI_XSEC_JOINT_H_SEEN
+#ifndef T2K_NUMUANTINUMU_CC0PI_CH_XSEC_2DPCOS_JOINT_H_SEEN
+#define T2K_NUMUANTINUMU_CC0PI_CH_XSEC_2DPCOS_JOINT_H_SEEN
 
 #include "JointMeas1D.h"
 #include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h"
 
-class T2K_NuMuAntiNuMu_CC0pi_XSec_joint : public JointMeas1D {
+class T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint : public JointMeas1D {
 public:
 
-  T2K_NuMuAntiNuMu_CC0pi_XSec_joint(nuiskey samplekey);
-  virtual ~T2K_NuMuAntiNuMu_CC0pi_XSec_joint() {};
+  T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint(nuiskey samplekey);
+  virtual ~T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos_joint() {};
 
   // Makes a data hist from all the smaller ones
   void CombineDataHists();
 
   // Signal already defined in the single measurement class  
   bool isSignal(){return false;};
 
   // Variables already defined in the single measurement class  
   void FillEventVariables(){return;};
 
   // Read covariace
   void SetCovariance();
 
   // Read histograms
   void SetHistograms();
   
   // Fill Histograms
   void FillHistograms();
   
   // Event scaling 
   void ConvertEventRates();
  
  private:
   T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos* NuMuCC0pi;
   T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos* AntiNuMuCC0pi;
   TFile* fInputFile;
 
 };
 
 #endif
diff --git a/src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.cxx b/src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.cxx
new file mode 100644
index 0000000..dea7a47
--- /dev/null
+++ b/src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.cxx
@@ -0,0 +1,159 @@
+#include "T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h"
+
+//********************************************************************
+T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint(nuiskey samplekey){
+//********************************************************************
+
+  fSettings = LoadSampleSettings(samplekey);
+  std::string descrip = "T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint. \n"
+                        "Target: O-C \n"
+                        "Flux: T2K 2.5 degree off-axis (ND280)  \n"
+                        "Signal: CC0pi\n"
+                        "arXiv:2004.05434";
+  fSettings.SetTitle("T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint");
+  fSettings.DefineAllowedSpecies("numu");
+  fSettings.SetDescription(descrip);
+  fSettings.SetXTitle("p_{#mu}-cos#theta_{#mu}");
+  fSettings.SetYTitle("d^{2}#sigma/dP_{#mu}dcos#theta_{#mu} (cm^{2}/GeV)");
+  fSettings.SetAllowedTypes("DIAG,FULL/FREE,SHAPE,FIX/SYSTCOV/STATCOV","FIX");
+  fSettings.SetEnuRange(0.0, 30.0);
+  fSettings.DefineAllowedTargets("O,C");
+  FinaliseSampleSettings();
+
+
+  if (fSubInFiles.size() != 2) {
+    NUIS_ABORT("T2K NuMuCC0pi O-C joint requires input files in format: NuMuCC0pi on O and NuMuCC0pi on C");
+  }
+
+  std::string inFileNuMuO = fSubInFiles.at(0);
+  std::string inFileNuMuC = fSubInFiles.at(1);
+
+  // Create some config keys
+  nuiskey NuMuCC0piOKey = Config::CreateKey("sample");
+  NuMuCC0piOKey.SetS("input", inFileNuMuO);
+  NuMuCC0piOKey.SetS("type",  fSettings.GetS("type"));
+  NuMuCC0piOKey.SetS("name", "T2K_NuMu_CC0pi_O_XSec_2DPcos");
+  NuMuCC0piO = new T2K_NuMu_CC0pi_O_XSec_2DPcos(NuMuCC0piOKey);
+
+  nuiskey NuMuCC0piCKey = Config::CreateKey("sample");
+  NuMuCC0piCKey.SetS("input", inFileNuMuC);
+  NuMuCC0piCKey.SetS("type",  fSettings.GetS("type"));
+  NuMuCC0piCKey.SetS("name", "T2K_NuMu_CC0pi_C_XSec_2DPcos");
+  NuMuCC0piC = new T2K_NuMu_CC0pi_C_XSec_2DPcos(NuMuCC0piCKey);
+
+  // Sort out the data hist
+  this->CombineDataHists();
+
+  // Set the covariance
+  SetCovariance();
+  
+  // Add to chain for processing
+  fSubChain.clear();
+  fSubChain.push_back(NuMuCC0piO);
+  fSubChain.push_back(NuMuCC0piC);
+
+  // This saves information from the sub-measurements
+  fSaveSubMeas = true;
+  FinaliseMeasurement();
+};
+
+//********************************************************************
+void T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::SetCovariance(){
+//********************************************************************
+
+  // Read covariance matrix
+  fInputFileCov = new TFile( (FitPar::GetDataBase() + "/T2K/CC0pi/JointO-C/covmatrix_noreg.root").c_str(),"READ");
+
+  TMatrixDSym* tempcov = (TMatrixDSym*) fInputFileCov->Get("covmatrixOeCbin");
+
+  for(int ibin=0; ibin<Nbins; ibin++) {  
+    for(int jbin=0; jbin<Nbins; jbin++) {
+      // The factor 1E-2 needed since the covariance matrix in the 
+      // data release is divided by 1E-78
+      (*fFullCovar)(ibin,jbin) = (*tempcov)(ibin,jbin)*1E-2;
+    }
+  }
+  covar = StatUtils::GetInvert(fFullCovar);
+  fDecomp = StatUtils::GetDecomp(fFullCovar);
+
+  return;
+}
+
+
+//********************************************************************
+void T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::CombineDataHists(){
+//********************************************************************
+
+  TH1D *hNuMuOData = (TH1D*)NuMuCC0piO->GetDataHistogram();
+  TH1D *hNuMuCData = (TH1D*)NuMuCC0piC->GetDataHistogram();
+
+  int nbins = hNuMuOData->GetNbinsX() + hNuMuCData->GetNbinsX();
+
+  fDataHist = new TH1D((fSettings.GetName() + "_data").c_str(),
+                       (fSettings.GetFullTitles()).c_str(), nbins, 0, nbins);
+  fDataHist->SetDirectory(0);
+  
+  int count = 0;
+  for (int x=0; x<hNuMuOData->GetNbinsX(); ++x){
+    fDataHist->SetBinContent(count+1, hNuMuOData->GetBinContent(x+1));
+    fDataHist->SetBinError(count+1,   hNuMuOData->GetBinError(x+1));
+    fDataHist->GetXaxis()->SetBinLabel(count+1, Form("NuMu CC0pi %.1f-%.1f", hNuMuOData->GetXaxis()->GetBinLowEdge(x+1), hNuMuOData->GetXaxis()->GetBinUpEdge(x+1)));
+    count++;
+  }
+  for (int x=0; x<hNuMuCData->GetNbinsX(); ++x){
+    fDataHist->SetBinContent(count+1, hNuMuCData->GetBinContent(x+1));
+    fDataHist->SetBinError(count+1,   hNuMuCData->GetBinError(x+1));
+    fDataHist->GetXaxis()->SetBinLabel(count+1, Form("AntiNuMu CC0pi %.1f-%.1f", hNuMuCData->GetXaxis()->GetBinLowEdge(x+1), hNuMuCData->GetXaxis()->GetBinUpEdge(x+1)));
+    count++;
+  }
+}
+
+//********************************************************************
+void T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::SetHistograms() {
+//********************************************************************
+
+  NuMuCC0piO->SetHistograms();
+  NuMuCC0piC->SetHistograms();
+
+  return;
+}
+
+//********************************************************************
+void T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::FillHistograms() {
+//********************************************************************
+
+  NuMuCC0piO->FillHistograms();
+  NuMuCC0piC->FillHistograms();
+
+  return;
+}
+
+//********************************************************************
+void T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint::ConvertEventRates() {
+//********************************************************************
+  
+  NuMuCC0piO->ConvertEventRates();
+  NuMuCC0piC->ConvertEventRates();
+
+  TH1D* hNuMuCC0piO = (TH1D*)NuMuCC0piO->GetMCHistogram();
+  TH1D* hNuMuCC0piC = (TH1D*)NuMuCC0piC->GetMCHistogram();
+  
+  int count = 0;
+  for (int i = 0; i < hNuMuCC0piO->GetNbinsX(); ++i) {
+    fMCHist->SetBinContent(count + 1, hNuMuCC0piO->GetBinContent(i + 1));
+    fMCHist->SetBinError(count + 1, hNuMuCC0piO->GetBinError(i + 1));
+    count++;
+  }
+  for (int i = 0; i < hNuMuCC0piC->GetNbinsX(); ++i) {
+    fMCHist->SetBinContent(count + 1, hNuMuCC0piC->GetBinContent(i + 1));
+    fMCHist->SetBinError(count + 1, hNuMuCC0piC->GetBinError(i + 1));
+    count++;
+  }
+
+  return;  
+}
+
+
+
+
+
diff --git a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h b/src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h
similarity index 54%
rename from src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h
rename to src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h
index bd84226..c9b3c23 100644
--- a/src/T2K/T2K_NuMuAntiNuMu_CC0pi_XSec_joint.h
+++ b/src/T2K/T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint.h
@@ -1,41 +1,40 @@
-#ifndef T2K_NUMUANTINUMU_CC0PI_XSEC_JOINT_H_SEEN
-#define T2K_NUMUANTINUMU_CC0PI_XSEC_JOINT_H_SEEN
+#ifndef T2K_NUMU_CC0PI_OC_XSEC_2DPCOS_JOINT_H_SEEN
+#define T2K_NUMU_CC0PI_OC_XSEC_2DPCOS_JOINT_H_SEEN
 
 #include "JointMeas1D.h"
-#include "T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos.h"
+#include "T2K_NuMu_CC0pi_OC_XSec_2DPcos.h"
 
-class T2K_NuMuAntiNuMu_CC0pi_XSec_joint : public JointMeas1D {
+class T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint : public JointMeas1D {
 public:
 
-  T2K_NuMuAntiNuMu_CC0pi_XSec_joint(nuiskey samplekey);
-  virtual ~T2K_NuMuAntiNuMu_CC0pi_XSec_joint() {};
+  T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint(nuiskey samplekey);
+  virtual ~T2K_NuMu_CC0pi_OC_XSec_2DPcos_joint() {};
 
   // Makes a data hist from all the smaller ones
   void CombineDataHists();
 
   // Signal already defined in the single measurement class  
   bool isSignal(){return false;};
 
   // Variables already defined in the single measurement class  
   void FillEventVariables(){return;};
 
   // Read covariace
   void SetCovariance();
 
   // Read histograms
   void SetHistograms();
   
   // Fill Histograms
   void FillHistograms();
   
   // Event scaling 
   void ConvertEventRates();
  
  private:
-  T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos* NuMuCC0pi;
-  T2K_NuMuAntiNuMu_CC0pi_CH_XSec_2DPcos* AntiNuMuCC0pi;
-  TFile* fInputFile;
-
+  T2K_NuMu_CC0pi_O_XSec_2DPcos* NuMuCC0piO;
+  T2K_NuMu_CC0pi_C_XSec_2DPcos* NuMuCC0piC;
+  TFile* fInputFileCov;
 };
 
 #endif