14 #include "CAFAna/Core/Binning.h" 36 #include "TMVA/Reader.h" 37 #include "TMVA/IMethod.h" 59 bool isCaf = opt.Contains(
"caf" , TString::kIgnoreCase);
60 bool isConcat = opt.Contains(
"concat", TString::kIgnoreCase);
63 bool isND = opt.Contains(
"nd" , TString::kIgnoreCase);
64 bool isFD = opt.Contains(
"fd" , TString::kIgnoreCase);
65 bool isFDData = opt.Contains(
"fddata" , TString::kIgnoreCase);
66 bool isNDData = opt.Contains(
"nddata" , TString::kIgnoreCase);
68 bool isCosmic = opt.Contains(
"cos" , TString::kIgnoreCase);
69 bool isSysts = opt.Contains(
"syst" , TString::kIgnoreCase);
78 std::string kFDCosmicFHCProd5 =
"prod_sumdecaf_R19-11-18-prod5reco.i_fd_cosmic_fhc_full_v1_goodruns_nus2020";
79 std::string kFDCosmicFHCProd5CAF =
"prod_caf_R19-11-18-prod5reco.i_fd_cosmic_fhc_full_v1_goodruns";
80 std::string kNDBurnerData =
"nux_burner_prod_caf_R19-11-18-prod5reco.d.f.h_nd_numi_fhc_period235910_v1_goodruns";
90 isConcat? kFDDataFHCNus20Concat : kFDDataFHCNus20CAF;
115 fdPredH.
AddData(loadersFDData);
122 ndPredH.
AddData(loadersNDData);
141 std::string fileOutName =
"SelectionSpectr_Unosc.root";
142 TFile*
fileOut =
new TFile(fileOutName.c_str(),
"RECREATE");
145 fdPredH.
Save(fileOut);
147 ndPredH.
Save(fileOut);
155 std::vector<VarContainer>
vars;
156 std::vector<VarContainer2D> vars2D;
157 std::vector<VarContainer3D>
vars3D;
158 std::vector<CutContainer>
cuts;
159 std::vector<CutContainer>
subcuts;
168 else if (det ==
"fd"){
176 throw std::logic_error(
"options for detector are nd or fd");
179 for (
size_t iCut = 0; iCut < cuts.size(); ++iCut){
181 ana::Cut thisCut = cuts.at(iCut).cut;
184 for (
size_t iSub = 0; iSub < subcuts.size(); ++iSub){
186 ana::Cut fullCut = thisCut && subcuts.at(iSub).cut;
187 std::string fullName = thisName + subcuts.at(iSub).name;
189 for (
size_t iVar = 0; iVar < vars.size(); ++iVar){
194 predH->
AddVar((vars.at(iVar).name+fullName).c_str(),
195 vars.at(iVar).label.c_str(),
201 cuts.at(iCut).cutdata && subcuts.at(iSub).cutdata);
205 for (
size_t iVar = 0; iVar < vars2D.size(); ++iVar){
207 predH->
AddVar((vars2D.at(iVar).name+fullName).c_str(),
208 vars2D.at(iVar).labelx.c_str(),
209 vars2D.at(iVar).labely.c_str(),
210 vars2D.at(iVar).varx,
211 vars2D.at(iVar).vary,
212 vars2D.at(iVar).binsx,
213 vars2D.at(iVar).binsy,
217 cuts.at(iCut).cutdata && subcuts.at(iSub).cutdata);
221 for (
size_t iVar = 0; iVar < vars3D.size(); ++iVar){
223 predH->
AddVar((vars3D.at(iVar).name+fullName).c_str(),
224 vars3D.at(iVar).labelx.c_str(),
225 vars3D.at(iVar).labely.c_str(),
226 vars3D.at(iVar).labelz.c_str(),
227 vars3D.at(iVar).varx,
228 vars3D.at(iVar).vary,
229 vars3D.at(iVar).varz,
230 vars3D.at(iVar).binsx,
231 vars3D.at(iVar).binsy,
232 vars3D.at(iVar).binsz,
236 cuts.at(iCut).cutdata && subcuts.at(iSub).cutdata);
const SpillCut kStandardSpillCuts_FD_Prod4MotivatedDQ
Cuts and Vars for the 2020 FD DiF Study.
std::vector< CutContainer > cutsFD
std::vector< CutContainer > subCutsND
Collection of SpectrumLoaders for many configurations.
void Save(TFile *outFile)
map< string, vector< ana::Binning > > vars3D
Logic to go from unfolded data (in histogram form) to a cross-section.
void AddData(SpectrumLoader *loadersData)
void SetSpillCut(const SpillCut &cut)
std::vector< CutContainer > subCutsFD
void MakeUnoscPlots(TString opt)
std::vector< CutContainer > cutsND
void Go()
Call Go() on all the loaders.
void SetSpillCut(const SpillCut &cut)
std::vector< VarContainer3D > vars3DFD
For nominal spectra and reweighting systs (xsec/flux)
void AddLoaders(Loaders *loaders)
virtual void AddVar(std::string name, HistAxis axis, Cut cuts, SystShifts shift, Var weight, bool cutdata=true)=0
Class to handle ND predictions.
std::vector< VarContainer2D > vars2DFD
virtual void Go() override
Load all the registered spectra.
void AddCosmics(SpectrumLoader *loaders_cosmics)
std::vector< VarContainer > varsND
const SystShifts kNoShift
void Save(TFile *outFile)
std::vector< CutContainer > subcuts
void AddLoaders(Loaders *loaders)
std::vector< VarContainer3D > vars3DND
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
std::vector< VarContainer2D > vars2DND
assert(nhit_max >=nhit_nbins)
std::vector< VarContainer > varsFD
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
Class to handle FD predictions.
void addVars(PredictionHandler *predH, std::string det)
const Var kUnweighted
The simplest possible Var, always 1. Used as a default weight.
void AddData(SpectrumLoader *loaders_data)