8 #include "3FlavorAna/Cuts/NueCutsSecondAna.h" 27 return (sr->
sel.cvn2017.nueid);
31 return (sr->
sel.cvnProd3Train.nueid);
40 if (sr->
vtx.nelastic < 1)
return -1000.f;
44 float maxProngCVNe = -5.;
45 for(
int iProng = 0; iProng < nProngs; iProng++){
46 if(sr->vtx.elastic[0].fuzzyk.png[iProng].cvnpart.electronid >
49 sr->vtx.elastic[0].fuzzyk.png[iProng].cvnpart.electronid;
74 std::vector<std::string> dataset_labels = {
"nominal",
"lightdown",
75 "lightup",
"ckv",
"calibneg",
76 "calibpos",
"calibshape"};
90 std::vector<std::vector<ana::Spectrum*>> spec_double_templates;
91 std::vector<std::vector<ana::Spectrum*>> spec_double_xsec_templates;
92 std::vector<std::vector<ana::Spectrum*>> spec_double_ppfx_templates;
94 std::vector<ana::SpectrumLoaderBase*>
loaders;
95 for(
uint idataset = 0; idataset < datasets.size(); ++idataset){
99 loaders.push_back(loader);
106 std::vector<ana::SystShifts> genie_shifts = verse.
GetSystShifts();
108 for(
uint iload = 0; iload < loaders.size(); ++iload){
109 std::vector<ana::Spectrum*> vspec;
111 for(
int ichn = 0; ichn <
kcNumChns; ichn++){
112 vspec.push_back(
new Spectrum(*loaders[iload],
124 std::vector<ana::Spectrum*> vspec_xsec;
125 std::vector<ana::Spectrum*> vspec_flux;
127 for(
int iuniv = 0; iuniv < 100; iuniv++){
128 vspec_xsec.push_back(
new Spectrum(*loaders[iload],
135 vspec_flux.push_back(
new Spectrum(*loaders[iload],
141 ppfx_univ[iuniv]* kXSecCVWgt2018));
144 spec_double_xsec_templates.push_back(vspec_xsec);
145 spec_double_ppfx_templates.push_back(vspec_flux);
148 spec_double_templates.push_back(vspec);
152 for(
uint iload = 0; iload < loaders.size(); ++iload){
153 loaders[iload]->Go();
157 new TFile(
"fFitTemplates_CovarianceMatrix_newPIDBins_prongcvn.root",
160 for(
uint iload = 0; iload < loaders.size(); ++iload){
161 for(
int ichn = 0; ichn <
kcNumChns; ichn++){
163 sprintf(name,
"%s_%s_%s_%s", dataset_labels[iload].c_str(),
164 pid_vars[0].name.c_str(),
"double",
chns[ichn].
name.c_str());
166 spec_double_templates[iload][ichn]->SaveTo(outf, name);
172 for(
int iuniv = 0; iuniv < 100; iuniv++){
174 sprintf(name,
"%s_%i_%s_%s",
"genie", iuniv,
175 pid_vars[0].name.c_str(),
"double");
176 spec_double_xsec_templates[iload][iuniv]->SaveTo(outf, name);
178 sprintf(name,
"%s_%i_%s_%s",
"ppfx", iuniv,
179 pid_vars[0].name.c_str(),
"double");
180 spec_double_ppfx_templates[iload][iuniv]->SaveTo(outf, name);
caf::Proxy< size_t > npng
const std::string NominalMC_entire_RHC_prod4
caf::Proxy< caf::SRFuzzyK > fuzzyk
Cuts and Vars for the 2020 FD DiF Study.
std::vector< const ISyst * > getAllXsecSysts_2018()
Get master XSec syst list for 2018 analyses.
const SelDef chns[knumchns]
Proxy for caf::StandardRecord.
std::vector< Dataset > datasets
void SetSpillCut(const SpillCut &cut)
const Var kprongCVN([](const caf::SRProxy *sr){if(sr->vtx.nelastic< 1) return-1000.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return-1000.f;int nProngs=sr->vtx.elastic[0].fuzzyk.npng;float maxProngCVNe=-5.;for(int iProng=0;iProng< nProngs;iProng++){if(sr->vtx.elastic[0].fuzzyk.png[iProng].cvnpart.electronid >maxProngCVNe){maxProngCVNe=sr->vtx.elastic[0].fuzzyk.png[iProng].cvnpart.electronid;}}return maxProngCVNe;})
const std::string DWNLightFiles_full_RHC_prod4
std::vector< Var > GetkPPFXFluxUnivWgt()
const ana::Binning pidbins
caf::Proxy< caf::SRElastic > elastic
const std::string ShapeCalibFiles_full_RHC_prod4
const Var kcvn2017([](const caf::SRProxy *sr){return(sr->sel.cvn2017.nueid);})
const mHistAxisDef analysis_vars[6]
const std::string UPCalibFiles_full_RHC_prod4
caf::Proxy< caf::SRCVNResult > cvn
caf::Proxy< float > nueid
const std::string UPLightFiles_full_RHC_prod4
std::vector< float > Spectrum
const SystShifts kNoShift
caf::Proxy< caf::SRELid > lid
Base class for the various types of spectrum loader.
const Var kcvn([](const caf::SRProxy *sr){return(sr->sel.cvn.nueid);})
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const mHistAxisDef pid_vars[kNumPIDVars]
std::vector< SystShifts > GetSystShifts()
const Var kcvnProd3([](const caf::SRProxy *sr){return(sr->sel.cvnProd3Train.nueid);})
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const std::string DWNCalibFiles_full_RHC_prod4
caf::Proxy< caf::SRIDBranch > sel
const std::string CherenkovFiles_full_RHC_prod4
caf::Proxy< caf::SRVertexBranch > vtx
const Var klid([](const caf::SRProxy *sr){return sr->sel.lid.ann;})