1 #ifndef CROMBIE_CORRECTION_H 2 #define CROMBIE_CORRECTION_H 1 14 class Files :
public std::map<std::string, TFile*> {
48 double GetCorrection(
const double xval,
const double yval);
49 double GetCorrection(
const double xval);
53 double get(
const int bin);
54 using minmax = std::pair<double, double>;
58 double Filter(
const minmax& mm,
double val);
66 files[filename] = TFile::Open(filename.data());
70 hist =
static_cast<H*
>(in->Get(histname)->Clone());
72 hist->Divide(static_cast<H*>(in->Get(denom)));
74 auto* axis = hist->GetXaxis();
75 xminmax.first = axis->GetBinCenter(axis->GetFirst());
76 xminmax.second = axis->GetBinCenter(axis->GetLast());
78 if (dynamic_cast<const TH2*>(hist)) {
79 axis = hist->GetYaxis();
80 yminmax.first = axis->GetBinCenter(axis->GetFirst());
81 yminmax.second = axis->GetBinCenter(axis->GetLast());
87 return get(hist->FindBin(Filter(xminmax, xval), Filter(yminmax, yval)));
92 return get(hist->FindBin(Filter(xminmax, xval)));
97 return hist->GetBinContent(bin);
102 return std::max(mm.first, std::min(mm.second, val));