15 if(!fdmc_nonswap.empty())
18 if(!fdmc_fluxswap.empty())
21 if(!fdmc_tauswap.empty())
40 prefix+
"fluxswap_"+suffix);
43 prefix+
"fluxswap_"+suffix,
44 prefix+
"tau_"+suffix);
56 const std::map<ECAFType, std::string> mapStringECAFType {
64 auto it = mapStringECAFType.find(type);
65 if(
it == mapStringECAFType.end()) {
76 bool flatCAFsExist)
const 78 if(flat ==
kFlatCAF && !flatCAFsExist){
79 std::cout <<
"\nWARNING: FlatCAFs not available (yet) for " <<
GetSystString() <<
", falling back to regular CAFs.\nIf they are in fact now available, please change the appropriate 'false' to 'true' in Prod5Loaders.cxx and commit." <<
std::endl;
86 std::cerr <<
"\nWARNING: FlatCAFs not available, using regular CAFs" 91 std::cerr <<
"\nWARNING: FlatDecafs not available, using regular decafs" 123 fluxType(flux==
kFHC?
"fhc":
"rhc")
126 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
132 if(flux ==
kFHC && !(WhichNDPeriod ==
"full"))
134 if(WhichNDPeriod ==
"period1")
136 else if((WhichNDPeriod ==
"period9") || (WhichNDPeriod ==
"period10"))
145 const bool isRHCPeriod = (
146 (WhichNDPeriod ==
"period4") || (WhichPeriod ==
"period4") ||
147 (WhichNDPeriod ==
"period6") || (WhichPeriod ==
"period6") ||
148 (WhichNDPeriod ==
"period7") || (WhichPeriod ==
"period7") ||
149 (WhichNDPeriod ==
"period8") || (WhichPeriod ==
"period8"));
152 if(isRHCPeriod && !isFull)
153 std::cerr <<
"\nWARNING: ND " << WhichNDPeriod <<
" and FD " 157 if(!isRHCPeriod && !isFull)
158 std::cerr <<
"\nWARNING: ND " << WhichNDPeriod <<
" and FD " 159 << WhichPeriod <<
" contains no RHC data" << std::endl <<
std::endl;
165 nddata =
"prod_"+
dataTier+
"_R19-11-18-prod5reco." + ndrel +
166 "_nd_numi_" +
fluxType +
"_" + WhichNDPeriod +
171 std::cerr <<
"\nWARNING: loaders not available for individual periods, only full sample" << std::endl <<
std::endl;
178 nddata =
"prod_"+
dataTier+
"_R19-11-18-prod5reco." + ndrel +
179 "_nd_numi_" +
fluxType +
"_" + WhichNDPeriod +
"_" +
182 std::cerr <<
"\nWARNING: " << cafType <<
" of definition " << nddata <<
" not available yet" << std::endl <<
std::endl;
187 nddata =
"prod_"+
dataTier+
"_R19-11-18-prod5reco." + ndrel +
188 "_nd_numi_" +
fluxType +
"_" + WhichNDPeriod +
191 if(!(WhichNDPeriod ==
"period10"))
192 nddata +=
"_goodruns";
210 if(flux ==
kFHC && !(WhichNDPeriod ==
"full"))
211 ndrel = (WhichNDPeriod==
"period5") ?
"l":
"d";
216 if(WhichPeriod ==
"full" && WhichNDPeriod ==
"full")
219 "prod_"+
dataTier+
"_R19-11-18-prod5reco." + rel +
220 "_fd_genie_N1810j0211a_",
223 "prod_"+
dataTier+
"_R19-11-18-prod5reco." + ndrel +
224 "_nd_genie_N1810j0211a_nonswap_" +
fluxType +
"_nova_v08_" + WhichNDPeriod +
237 std::cerr <<
"\nWARNING: decaf loaders not available, " 246 "prod_"+
dataTier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
247 fluxType +
"_nova_v08_" + WhichPeriod +
"_v1");
249 "prod_"+
dataTier+
"_R19-11-18-prod5reco." + ndrel +
250 "_nd_genie_N1810j0211a_nonswap_" +
fluxType +
"_nova_v08_" + WhichNDPeriod +
"_v1");
265 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
275 const std::string updown = (sign > 0) ?
"calibup" :
"calibdown";
285 if(WhichPeriod ==
"full" && WhichNDPeriod ==
"full")
288 "prod_" + tier +
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
289 fluxType +
"_nova_v08_" + WhichPeriod +
"_" +
290 updown +
"_v1_" +
cafType,
true);
292 "prod_" + tier +
"_R19-11-18-prod5reco." + ndrel +
293 "_nd_genie_N1810j0211a_nonswap_" +
fluxType +
"_nova_v08_" + WhichNDPeriod +
294 "_" + updown +
"_v1" + ndsuffix +
"_" +
cafType);
300 std::cerr <<
"\nWARNING: decaf loaders not available, " 308 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
309 fluxType +
"_nova_v08_" + WhichPeriod +
"_" + updown +
"_v1",
312 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
313 fluxType +
"_nova_v08_" + WhichNDPeriod +
"_" + updown +
"_v1" + ndsuffix);
328 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
338 const std::string updown = (sign == 1) ?
"llup" :
"lldown";
345 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
346 fluxType +
"_nova_v08_" + WhichPeriod +
"_" +
347 updown +
"_v1_" +
cafType,
true);
349 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
350 "_nd_genie_N1810j0211a_nonswap_" +
fluxType +
"_nova_v08_" + WhichNDPeriod +
351 "_" + updown +
"_v1_" +
cafType);
356 std::cerr <<
"\nWARNING: decaf loaders not available, " 364 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
365 fluxType +
"_nova_v08_" + WhichPeriod +
"_" + updown +
"_v1",
368 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
369 fluxType +
"_nova_v08_" + WhichNDPeriod +
"_" + updown +
"_v1");
381 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
396 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
397 fluxType +
"_nova_v08_" + WhichPeriod +
398 "_cherenkov_v1_" +
cafType,
true);
400 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
401 fluxType +
"_nova_v08_" + WhichNDPeriod +
407 std::cerr <<
"\nWARNING: decaf loaders not available, " 415 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
416 fluxType +
"_nova_v08_" + WhichPeriod +
"_cherenkov_v1",
419 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel+
"_nd_genie_N1810j0211a_nonswap_" +
420 fluxType +
"_nova_v08_" + WhichNDPeriod +
"_cherenkov_v1");
432 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
450 if(WhichPeriod ==
"full" && WhichNDPeriod ==
"full")
453 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
454 fluxType +
"_nova_v08_" + WhichPeriod +
"_calibshape_v1_" +
cafType,
true);
456 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
457 fluxType +
"_nova_v08_" + WhichNDPeriod +
458 "_calibshape_v1" + ndsuffix +
"_" +
cafType);
464 std::cerr <<
"\nWARNING: decaf loaders not available, " 472 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
473 fluxType +
"_nova_v08_" + WhichPeriod +
"_calibshape_v1",
476 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
477 fluxType +
"_nova_v08_" + WhichNDPeriod +
"_calibshape_v1");
488 const bool isFull = ((WhichNDPeriod ==
"full") && (WhichPeriod ==
"full"));
502 if(WhichPeriod ==
"full" && WhichNDPeriod ==
"full")
505 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
506 fluxType +
"_nova_v08_" + WhichPeriod +
"_detectoraging_v1_" +
cafType,
true);
508 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
509 fluxType +
"_nova_v08_" + WhichNDPeriod +
510 "_detectoraging_v1_" +
cafType);
516 std::cerr <<
"\nWARNING: decaf loaders not available, " 524 "prod_"+tier+
"_R19-11-18-prod5reco." + rel +
"_fd_genie_N1810j0211a_",
525 fluxType +
"_nova_v08_" + WhichPeriod +
"_detectoraging_v1",
528 "prod_"+tier+
"_R19-11-18-prod5reco." + ndrel +
"_nd_genie_N1810j0211a_nonswap_" +
529 fluxType +
"_nova_v08_" + WhichNDPeriod +
"_detectoraging_v1");
Near Detector underground.
Prod5DataLoaders(ECAFType type, FluxType flux, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
const std::string ECAFTypeToString(ECAFType type)
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
void SetLoaderNDMCPath(const std::string &ndmc)
std::string ECAFTypeFlatToTier(ECAFType type, EFlatness flat, bool flatCAFsExist) const
void SetLoaderFDMCPaths(const std::string &prefix, const std::string &suffix, const bool noTau=false)
Provide the data loaders only, base class for other loaders.
Prod5CherenkovLoaders(ECAFType type, FluxType flux, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
const std::string dataTier
from "caf" to "flatsumdecaf"
For nominal spectra and reweighting systs (xsec/flux)
Prod5CalibDriftLoaders(ECAFType type, FluxType flux, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
Prod5CalibShapeLoaders(ECAFType type, FluxType flux, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
void SetLoaderPaths(const std::string &fdmc_nonswap, const std::string &fdmc_fluxswap, const std::string &fdmc_tauswap="", const std::string &ndmc="", const std::string &nddata="")
Prod5LightLevelLoaders(ECAFType type, FluxType flux, int sign, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
virtual std::string GetSystString() const =0
const std::string cafType
Prod5AbsCalibLoaders(ECAFType type, FluxType flux, int sign, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)
assert(nhit_max >=nhit_nbins)
const std::string fluxType
void SetLoaderPath(const std::string &path, caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Configure loader via wildcard path.
Prod5NomLoaders(ECAFType type, FluxType flux, std::string WhichPeriod="full", std::string WhichNDPeriod="full", EFlatness flat=kNormalCAF)