File indexing completed on 2026-07-16 08:11:23
0001 #ifndef CUTEFFICIENCYCORRECTION_H
0002 #define CUTEFFICIENCYCORRECTION_H
0003
0004 #include "CorrectionHistogram1D.h"
0005
0006 #include <TFile.h>
0007 #include <TH1F.h>
0008 #include <TCanvas.h>
0009
0010 #include <string>
0011 #include <memory>
0012
0013 struct CutEfficiencyCorrection : CorrectionHistogram1D
0014 {
0015 std::shared_ptr<TFile> f;
0016
0017 CutEfficiencyCorrection(std::string filename,std::string hname)
0018 {
0019 f = std::make_shared<TFile>(filename.c_str(),"READ");
0020 h_corr = (TH1F*)f->Get(hname.c_str())->Clone();
0021
0022 h_corr->SetDirectory(nullptr);
0023 name = "cutefficiency";
0024 title = "cut efficiency";
0025 }
0026
0027 CutEfficiencyCorrection(const CutEfficiencyCorrection& c)
0028 {
0029 f = c.f;
0030 h_corr = c.h_corr;
0031 name = c.name;
0032 title = c.title;
0033 }
0034
0035 void apply_correction(float xlow, float xhigh, TH1F* h, int bin) override
0036 {
0037 std::pair<double,double> corr_and_err = get_val_and_error(xlow,xhigh);
0038 float new_val = h->GetBinContent(bin)/corr_and_err.first;
0039 float new_err = new_val * sqrt(pow(h->GetBinError(bin)/h->GetBinContent(bin),2.)+pow(corr_and_err.second/corr_and_err.first,2.));
0040 h->SetBinContent(bin,new_val);
0041 h->SetBinError(bin,new_err);
0042 }
0043
0044 };
0045
0046 #endif