Back to home page

sPhenix code displayed by LXR

 
 

    


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     // preserve histogram on file close
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