3 #include "CAFAna/Core/Binning.h" 4 #include "CAFAna/Core/HistAxis.h" 13 #include "nugen/NuReweight/ReweightLabels.h" 33 std::map<std::string, rwgt::ReweightLabel_t> parameters;
35 parameters[
"ReweightMaNCEL"] = rwgt::fReweightMaNCEL;
36 parameters[
"ReweightEtaNCEL"] = rwgt::fReweightEtaNCEL;
38 parameters[
"ReweightNormCCQE"] = rwgt::fReweightNormCCQE;
39 parameters[
"ReweightNormCCQEenu"] = rwgt::fReweightNormCCQEenu;
40 parameters[
"ReweightMaCCQEshape"] = rwgt::fReweightMaCCQEshape;
41 parameters[
"ReweightMaCCQE"] = rwgt::fReweightMaCCQE;
42 parameters[
"ReweightVecCCQEshape"] = rwgt::fReweightVecCCQEshape;
44 parameters[
"ReweightNormCCRES"] = rwgt::fReweightNormCCRES;
45 parameters[
"ReweightMaCCRESshape"] = rwgt::fReweightMaCCRESshape;
46 parameters[
"ReweightMvCCRESshape"] = rwgt::fReweightMvCCRESshape;
47 parameters[
"ReweightMaCCRES"] = rwgt::fReweightMaCCRES;
48 parameters[
"ReweightMvCCRES"] = rwgt::fReweightMvCCRES;
50 parameters[
"ReweightNormNCRES"] = rwgt::fReweightNormNCRES;
51 parameters[
"ReweightMaNCRESshape"] = rwgt::fReweightMaNCRESshape;
52 parameters[
"ReweightMvNCRESshape"] = rwgt::fReweightMvNCRESshape;
53 parameters[
"ReweightMaNCRES"] = rwgt::fReweightMaNCRES;
54 parameters[
"ReweightMvNCRES"] = rwgt::fReweightMvNCRES;
57 parameters[
"ReweightMaCOHpi"] = rwgt::fReweightMaCOHpi;
58 parameters[
"ReweightR0COHpi"] = rwgt::fReweightR0COHpi;
60 parameters[
"ReweightRvpCC1pi"] = rwgt::fReweightRvpCC1pi;
61 parameters[
"ReweightRvpCC2pi"] = rwgt::fReweightRvpCC2pi;
62 parameters[
"ReweightRvpNC1pi"] = rwgt::fReweightRvpNC1pi;
63 parameters[
"ReweightRvpNC2pi"] = rwgt::fReweightRvpNC2pi;
64 parameters[
"ReweightRvnCC1pi"] = rwgt::fReweightRvnCC1pi;
65 parameters[
"ReweightRvnCC2pi"] = rwgt::fReweightRvnCC2pi;
66 parameters[
"ReweightRvnNC1pi"] = rwgt::fReweightRvnNC1pi;
67 parameters[
"ReweightRvnNC2pi"] = rwgt::fReweightRvnNC2pi;
68 parameters[
"ReweightRvbarpCC1pi"] = rwgt::fReweightRvbarpCC1pi;
69 parameters[
"ReweightRvbarpCC2pi"] = rwgt::fReweightRvbarpCC2pi;
70 parameters[
"ReweightRvbarpNC1pi"] = rwgt::fReweightRvbarpNC1pi;
71 parameters[
"ReweightRvbarpNC2pi"] = rwgt::fReweightRvbarpNC2pi;
72 parameters[
"ReweightRvbarnCC1pi"] = rwgt::fReweightRvbarnCC1pi;
73 parameters[
"ReweightRvbarnCC2pi"] = rwgt::fReweightRvbarnCC2pi;
74 parameters[
"ReweightRvbarnNC1pi"] = rwgt::fReweightRvbarnNC1pi;
75 parameters[
"ReweightRvbarnNC2pi"] = rwgt::fReweightRvbarnNC2pi;
78 parameters[
"ReweightAhtBY"] = rwgt::fReweightAhtBY;
79 parameters[
"ReweightBhtBY"] = rwgt::fReweightBhtBY;
80 parameters[
"ReweightCV1uBY"] = rwgt::fReweightCV1uBY;
81 parameters[
"ReweightCV2uBY"] = rwgt::fReweightCV2uBY;
82 parameters[
"ReweightAhtBYshape"] = rwgt::fReweightAhtBYshape;
83 parameters[
"ReweightBhtBYshape"] = rwgt::fReweightBhtBYshape;
84 parameters[
"ReweightCV1uBYshape"] = rwgt::fReweightCV1uBYshape;
85 parameters[
"ReweightCV2uBYshape"] = rwgt::fReweightCV2uBYshape;
86 parameters[
"ReweightNormDISCC"] = rwgt::fReweightNormDISCC;
87 parameters[
"ReweightRnubarnuCC"] = rwgt::fReweightRnubarnuCC;
88 parameters[
"ReweightDISNuclMod"] = rwgt::fReweightDISNuclMod;
90 parameters[
"ReweightNC"] = rwgt::fReweightNC;
97 parameters[
"ReweightAGKY_xF1pi"] = rwgt::fReweightAGKY_xF1pi;
98 parameters[
"ReweightAGKY_pT1pi"] = rwgt::fReweightAGKY_pT1pi;
105 parameters[
"ReweightFormZone"] = rwgt::fReweightFormZone;
116 parameters[
"ReweightMFP_pi"] = rwgt::fReweightMFP_pi;
117 parameters[
"ReweightMFP_N"] = rwgt::fReweightMFP_N;
118 parameters[
"ReweightFrCEx_pi"] = rwgt::fReweightFrCEx_pi;
119 parameters[
"ReweightFrElas_pi"] = rwgt::fReweightFrElas_pi;
120 parameters[
"ReweightFrInel_pi"] = rwgt::fReweightFrInel_pi;
121 parameters[
"ReweightFrAbs_pi"] = rwgt::fReweightFrAbs_pi;
122 parameters[
"ReweightFrPiProd_pi"] = rwgt::fReweightFrPiProd_pi;
123 parameters[
"ReweightFrCEx_N"] = rwgt::fReweightFrCEx_N;
124 parameters[
"ReweightFrElas_N"] = rwgt::fReweightFrElas_N;
125 parameters[
"ReweightFrInel_N"] = rwgt::fReweightFrInel_N;
126 parameters[
"ReweightFrAbs_N"] = rwgt::fReweightFrAbs_N;
127 parameters[
"ReweightFrPiProd_N"] = rwgt::fReweightFrPiProd_N;
133 parameters[
"ReweightCCQEPauliSupViaKF"] = rwgt::fReweightCCQEPauliSupViaKF;
134 parameters[
"ReweightCCQEMomDistroFGtoSF"] = rwgt::fReweightCCQEMomDistroFGtoSF;
140 parameters[
"ReweightBR1gamma"] = rwgt::fReweightBR1gamma;
141 parameters[
"ReweightBR1eta"] = rwgt::fReweightBR1eta;
142 parameters[
"ReweightTheta_Delta2Npi"] = rwgt::fReweightTheta_Delta2Npi;
147 for(
auto parameter:parameters) nParameters++;
151 assert(fileListTextFile.find(
".txt") != std::string::npos &&
"Failed to find .txt in argument. We're going to to replace it with .root for the output file, so it needs to be there.");
157 std::map<std::string, std::map<int, SystShifts*> > shifts;
158 std::vector<int> sigmas;
159 sigmas.push_back(-2);
160 sigmas.push_back(-1);
164 for (
const auto & parameter:parameters)
166 for(
const auto &
sigma:sigmas)
176 std::map<std::string, std::pair<Cut*, HistAxis*> > samples;
181 std::map<std::string, CheatDecomp*> decomps;
183 std::map<std::string, std::map<std::string, std::map<int, CheatDecomp*> > > shiftedDecomps;
187 for(
const auto & sample:samples){
189 decomps[sample.first] =
new CheatDecomp(loader, *sample.second.second, *sample.second.first);
190 for(
const auto & parameter:parameters)
192 for(
const auto & shift:shifts[parameter.first])
194 shiftedDecomps[sample.first][parameter.first][shift.first] =
new CheatDecomp(loader, *sample.second.second, *sample.second.first, *shift.second);
203 std::map<std::string, TDirectory*>
dirs;
205 TFile outputFile(fileListTextFile.replace(fileListTextFile.find(
".txt"), 4,
".root").c_str(),
"RECREATE");
206 for(
const auto &
decomp:decomps){
209 dirs[
decomp.first] = outputFile.mkdir(
decomp.first.c_str());
214 for(
const auto & parameter:shiftedDecomps)
216 for(
const auto & shift:parameter.second)
218 for(
const auto & shiftedDecomp:shift.second)
221 dirName << parameter.first <<
"_" << shift.first <<
"_" << shiftedDecomp.first ;
222 dirs[dirName.str()] = outputFile.mkdir(dirName.str().c_str());
223 shiftedDecomp.second->SaveTo(dirs[dirName.str()]);
_HistAxis< Var > HistAxis
Represent the binning of a Spectrum's x-axis.
Cuts and Vars for the 2020 FD DiF Study.
Simple record of shifts applied to systematic parameters.
const Cut kNumuContainND([](const caf::SRProxy *sr){return( sr->trk.kalman.ntracks > sr->trk.kalman.idxremid &&sr->slc.ncellsfromedge > 1 &&sr->slc.firstplane > 1
&&sr->slc.lastplane< 212 &&sr->trk.kalman.tracks[0].start.Z()< 1150
&&( sr->trk.kalman.tracks[0].stop.Z()< 1275 ||sr->sel.contain.kalyposattrans< 55) &&( sr->energy.numu.ndhadcalcatE +sr->energy.numu.ndhadcaltranE)< 0.03
&&sr->sel.contain.kalfwdcellnd > 4 &&sr->sel.contain.kalbakcellnd > 8);})
std::vector< std::string > LoadFileList(const std::string &listfile)
Read list of input files from a text file, one per line.
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
void runCheatDecomp(TString fileListTextFileName)
virtual void Go() override
Load all the registered spectra.
const Cut kNumuNCRej([](const caf::SRProxy *sr){return(sr->sel.remid.pid >0.75);})
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
assert(nhit_max >=nhit_nbins)
const NOvARwgtSyst * GetGenieKnobSyst(rwgt::ReweightLabel_t knobIdx, std::string altName, std::string altLabel)
Convenience function to get a GENIE knob syst. (Allows using the GENIE knob name & description as the...
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
Just return the ND truth spectra as the decomposition.