10 #include "CAFAna/Core/Var.h" 18 template<
class T,
class S>
21 const std::vector<T> &
values,
22 bool firstValuePrinted,
24 std::function<
void (std::ostream &,
const T&)> printValue
28 return firstValuePrinted;
33 if (! firstValuePrinted)
35 printValue(output, values[0]);
39 for (
size_t i = startIdx;
i < values.size();
i++)
42 printValue(output, values[
i]);
52 throw std::runtime_error(
"Failed to open output file");
55 ofile << std::setprecision(std::numeric_limits<double>::max_digits10);
60 ofile << std::setprecision(precision);
65 bool firstValuePrinted =
false;
67 firstValuePrinted = printSeparatedValues<NamedVar, char>(
69 [
this] (
auto &
output,
auto &namedVar) { output << namedVar.first; }
72 printSeparatedValues<NamedMultiVar, char>(
74 [
this] (
auto &
output,
auto &namedMultiVar)
75 { output << namedMultiVar.first; }
83 bool firstValuePrinted =
false;
85 firstValuePrinted = printSeparatedValues<NamedVar, char>(
87 [
sr,
this] (
auto &
output,
auto &namedVar) { output << namedVar.second(sr); }
90 printSeparatedValues<NamedMultiVar, char>(
92 [
sr,
this] (
auto &
output,
auto &namedMultiVar)
94 std::vector<double> values = namedMultiVar.second(sr);
98 printSeparatedValues<double, char>(
100 [
this] (
auto &
output,
auto &
x) { output <<
x; }
122 this->vars.insert(this->vars.end(), vars.begin(), vars.end());
127 this->multiVars.insert(
128 this->multiVars.end(), multiVars.begin(), multiVars.end()
134 this->cut = std::make_unique<Cut>(
cut);
143 if ((
cut !=
nullptr) && !(*
cut)(sr)) {
caf::Proxy< caf::SRSpill > spill
void setCut(const Cut &cut)
Cuts and Vars for the 2020 FD DiF Study.
std::vector< NamedMultiVar > multiVars
Proxy for caf::StandardRecord.
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
void addMultiVars(const std::vector< NamedMultiVar > &multiVars)
std::unique_ptr< SpillCut > fSpillCut
Cut applied to the spill branch for every event.
bool printSeparatedValues(std::ostream &output, const std::vector< T > &values, bool firstValuePrinted, S separator, std::function< void(std::ostream &, const T &)> printValue)
void setPrecision(int precision)
std::vector< NamedVar > vars
virtual void Go() override
Load all the registered spectra.
std::unique_ptr< Cut > cut
void addMultiVar(const std::string &name, const MultiVar &multiVar)
void addVar(const std::string &name, const Var &var)
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
CSVMaker(const std::string &input, const std::string &output)
void printRow(caf::SRProxy *sr)
virtual bool Gone() const
Indicate whether or not Go has been called.
void Go() override
Load all the registered spectra.
void addVars(const std::vector< NamedVar > &vars)
void HandleRecord(caf::SRProxy *sr) override