3 #include <boost/multi_index_container.hpp> 4 #include <boost/multi_index/member.hpp> 5 #include <boost/multi_index/ordered_index.hpp> 9 #include "CAFAna/Core/Cut.h" 11 #include "CAFAna/Core/HistAxis.h" 12 #include "CAFAna/Core/Var.h" 14 #include "TGraphAsymmErrors.h" 17 using boost::multi_index_container;
26 class SpectrumLoaderBase;
59 std::vector<const ISyst*>
systs);
77 std::vector<const ISyst*> systs);
80 std::vector<std::unique_ptr<ana::Spectrum>>& spectra,
91 TH1* ToTH1(
double pot)
const;
92 TGraphAsymmErrors* ToAreaNormalizedTH1(
double pot,
96 bool newaxis =
true)
const;
99 TH2*
ToTH2(
double pot)
const;
104 std::vector<const Spectrum*>
AllUniverses()
const {
return {fSpectra.begin(), fSpectra.end()};}
116 static std::unique_ptr<GenieMultiverseSpectra>
LoadFrom(TDirectory* dir,
const std::string& name);
122 static std::pair<TH2*, TH2*> GetSigmaHistograms(std::vector<TH2*>,
BandOptions opt = kBandFromNominal);
130 std::vector<Spectrum*> fSpectra;
132 int fUniverseSeed = 1001;
141 void BuildKnobConfigTable(
std::string config_pathname);
158 std::vector<const ISyst*> systs,
176 std::vector<const ISyst*> systs,
182 void FindBandBoundaries(
BandOptions opt = kBandFromNominal)
const;
187 bool fLoadFromFile =
false;
189 std::set<int> fModes = {0, 1, 2};
198 mutable bool fBoundariesFound =
false;
219 typedef multi_index_container<
223 tag<id>, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode,
int,
id)>,
225 tag<name>,BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode,
std::string,name)> >
244 std::vector<const ISyst*>
systs);
246 std::vector<std::map<const ISyst*, double>>
ShiftTables() {
return fShiftTables;};
254 bool fIsNuTruth =
false;
260 void BuildKnobConfigTable(
std::string config_pathname);
274 typedef multi_index_container<
278 tag<id>, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode,
int,
id)>,
280 tag<name>,BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode,
std::string,
name)> >
306 std::vector<const ISyst*>
systs);
309 unsigned int nuniverses,
310 std::vector<std::unique_ptr<ana::Spectrum>> & spectra,
320 static std::unique_ptr<GenieMultiverseNormalizedSpectra>
LoadFrom(TDirectory* dir,
const std::string& name);
326 bool fSpectraNormalized =
false;
335 void NormalizeSpectra();
multi_index_container< knob_sampling_mode, indexed_by< ordered_unique< tag< id >, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode, int, id)>, ordered_unique< tag< name >, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode, std::string, name)> > > knob_sampling_mode_set
Cuts and Vars for the 2020 FD DiF Study.
TH2 * ToTH2(const TH1 *h, const HistAxis &xaxis, const HistAxis &yaxis)
std::vector< std::map< const ISyst *, double > > fShiftTables
Container of shift tables for all universes.
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
GenieMultiverseNormalizedSpectra(unsigned int nuniverses, std::vector< std::unique_ptr< ana::Spectrum >> &spectra, bool fromfile=false)
Simple record of shifts applied to systematic parameters.
multi_index_container< knob_sampling_mode, indexed_by< ordered_unique< tag< id >, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode, int, id)>, ordered_unique< tag< name >, BOOST_MULTI_INDEX_MEMBER(knob_sampling_mode, std::string, name)> > > knob_sampling_mode_set
std::vector< std::map< const ISyst *, double > > fShiftTable
knob_sampling_mode(int id_, std::string name_, int mode_)
const auto & GetShiftTable() const
declarations for knob configuration table
float BinSigma(std::vector< double > events, float nsigmas, float pivot)
std::unique_ptr< T > LoadFrom(TDirectory *dir, const std::string &label)
Representation of a spectrum in any variable, with associated POT.
std::vector< std::map< const ISyst *, double > > ShiftTables()
Return the tables of knob shift values.
std::vector< std::map< const ISyst *, double > > NuTruthShiftTables()
knob_sampling_mode_set fKnobConfigTable
const SystShifts kNoShift
unsigned int GetNUniverses()
Get the number of universes in an object of this class.
Base class for the various types of spectrum loader.
std::vector< SystShifts > fSystShifts
knob_sampling_mode_set fKnobConfigTable
knob configuration table
std::vector< std::map< const ISyst *, double > > fNuTruthShiftTables
Container of neutrino truth shift tables for all universes.
GenieMultiverseSpectra MultiverseSpectra
typedef for backward compatibility
std::vector< SystShifts > GetSystShifts()
const NuTruthVar kNuTruthUnweighted
std::vector< const Spectrum * > AllUniverses() const
return all universes
const Var kUnweighted
The simplest possible Var, always 1. Used as a default weight.
unsigned int fNUniverses
number of universes to generate
knob_sampling_mode(int id_, std::string name_, int mode_)