Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:13:10

0001 #include <TChain.h>
0002 #include <TFile.h>
0003 #include <TH1F.h>
0004 #include <TH2F.h>
0005 #include <TF1.h>
0006 #include <TMath.h>
0007 #include <iostream>
0008 #include <vector>
0009 #include <string>
0010 #include <cmath>
0011 #include "RooUnfold.h"
0012 #include "RooUnfoldResponse.h"
0013 #include "RooUnfoldBayes.h"
0014 
0015 void get_unfolded_spectrum(TH2D* h_respmatrix, TH1D* h_spectrum, TH1D*& h_unfolded, int niter, std::string hist_name, TH1D* h_eff) {
0016   TH1D* h_meas = (TH1D*)h_respmatrix->ProjectionX("h_meas");
0017   TH1D* h_truth = (TH1D*)h_respmatrix->ProjectionY("h_truth");
0018   RooUnfoldResponse* response = new RooUnfoldResponse(h_meas, h_truth, h_respmatrix, "response", "");
0019   RooUnfoldBayes unfold(response, h_spectrum, niter);
0020   h_unfolded = (TH1D*)unfold.Hunfold(RooUnfold::kErrors);
0021   h_unfolded->SetName(hist_name.c_str());
0022   h_unfolded->Divide(h_eff);
0023 }
0024 
0025 ////////////////////////////////////////// Main Function //////////////////////////////////////////
0026 void do_unfolding() {
0027   //********** General Set up **********//
0028   const float PI = TMath::Pi();
0029   const float jet_radius = 0.4;
0030  
0031   //********** Files **********//
0032   TFile *f_out = new TFile("output_unfolded.root", "RECREATE");
0033 
0034   TFile *f_data = new TFile("output_data_puritycorr.root", "READ");
0035   TFile *f_in_rm = new TFile("output_reweightmatrix.root", "READ");
0036   TFile *f_efficiency = new TFile("output_purityefficiency.root", "READ");
0037   TFile *f_mbd = new TFile("output_mbdtrigeff.root", "READ");
0038 
0039   // Get data spectrum
0040   TH1D* h_calibjet_pt_puritycorr_dijet = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet");
0041   TH1D* h_calibjet_pt_puritycorr_dijet_effdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_effdown");
0042   TH1D* h_calibjet_pt_puritycorr_dijet_effup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_effup");
0043   TH1D* h_calibjet_pt_puritycorr_dijet_jesdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_jesdown");
0044   TH1D* h_calibjet_pt_puritycorr_dijet_jesup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_jesup");
0045   TH1D* h_calibjet_pt_puritycorr_dijet_jerdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_jerdown");
0046   TH1D* h_calibjet_pt_puritycorr_dijet_jerup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_dijet_jerup");
0047 
0048   TH1D* h_calibjet_pt_puritycorr_frac = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac");
0049   TH1D* h_calibjet_pt_puritycorr_frac_effdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_effdown");
0050   TH1D* h_calibjet_pt_puritycorr_frac_effup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_effup");
0051   TH1D* h_calibjet_pt_puritycorr_frac_jesdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_jesdown");
0052   TH1D* h_calibjet_pt_puritycorr_frac_jesup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_jesup");
0053   TH1D* h_calibjet_pt_puritycorr_frac_jerdown = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_jerdown");
0054   TH1D* h_calibjet_pt_puritycorr_frac_jerup = (TH1D*)f_data->Get("h_calibjet_pt_puritycorr_frac_jerup");
0055 
0056   // Response matrix
0057   TH2D* h_respmatrix_calib_dijet_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_reweighted");
0058   TH2D* h_respmatrix_calib_dijet_effdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_effdown_reweighted");
0059   TH2D* h_respmatrix_calib_dijet_effup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_effup_reweighted");
0060   TH2D* h_respmatrix_calib_dijet_jesdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_jesdown_reweighted");
0061   TH2D* h_respmatrix_calib_dijet_jesup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_jesup_reweighted");
0062   TH2D* h_respmatrix_calib_dijet_jerdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_jerdown_reweighted");
0063   TH2D* h_respmatrix_calib_dijet_jerup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet_jerup_reweighted");
0064 
0065   TH2D* h_respmatrix_calib_frac_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_reweighted");
0066   TH2D* h_respmatrix_calib_frac_effdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_effdown_reweighted");
0067   TH2D* h_respmatrix_calib_frac_effup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_effup_reweighted");
0068   TH2D* h_respmatrix_calib_frac_jesdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_jesdown_reweighted");
0069   TH2D* h_respmatrix_calib_frac_jesup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_jesup_reweighted");
0070   TH2D* h_respmatrix_calib_frac_jerdown_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_jerdown_reweighted");
0071   TH2D* h_respmatrix_calib_frac_jerup_reweighted = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac_jerup_reweighted");
0072 
0073   TH2D* h_respmatrix_calib_dijet = (TH2D*)f_in_rm->Get("h_respmatrix_calib_dijet");
0074   TH2D* h_respmatrix_calib_frac = (TH2D*)f_in_rm->Get("h_respmatrix_calib_frac");
0075 
0076   // Get efficiency
0077   TH1D* h_efficiency_calib_dijet = (TH1D*)f_efficiency->Get("h_efficiency_calib_dijet");
0078   TH1D* h_efficiency_calib_dijet_jesdown = (TH1D*)f_efficiency->Get("h_efficiency_calib_dijet_jesdown");
0079   TH1D* h_efficiency_calib_dijet_jesup = (TH1D*)f_efficiency->Get("h_efficiency_calib_dijet_jesup");
0080   TH1D* h_efficiency_calib_dijet_jerdown = (TH1D*)f_efficiency->Get("h_efficiency_calib_dijet_jerdown");
0081   TH1D* h_efficiency_calib_dijet_jerup = (TH1D*)f_efficiency->Get("h_efficiency_calib_dijet_jerup");
0082   TH1D* h_efficiency_calib_frac = (TH1D*)f_efficiency->Get("h_efficiency_calib_frac");
0083   TH1D* h_efficiency_calib_frac_jesdown = (TH1D*)f_efficiency->Get("h_efficiency_calib_frac_jesdown");
0084   TH1D* h_efficiency_calib_frac_jesup = (TH1D*)f_efficiency->Get("h_efficiency_calib_frac_jesup");
0085   TH1D* h_efficiency_calib_frac_jerdown = (TH1D*)f_efficiency->Get("h_efficiency_calib_frac_jerdown");
0086   TH1D* h_efficiency_calib_frac_jerup = (TH1D*)f_efficiency->Get("h_efficiency_calib_frac_jerup");
0087 
0088   // Get MBD efficiency
0089   TH1D* h_mbd_efficiency = (TH1D*)f_mbd->Get("Ratio_h_TJetSpectrumCBin1_tzvtx_PMTHit40_MBDNS1_Over_h_TJetpTSpectrumCBin1_tzvtx");
0090   TH1D* h_mbd_efficiency_down = (TH1D*)f_mbd->Get("Ratio_h_TJetSpectrumCBin1_tzvtx_PMTHit30_MBDNS1_Over_h_TJetpTSpectrumCBin1_tzvtx");
0091   TH1D* h_mbd_efficiency_up = (TH1D*)f_mbd->Get("Ratio_h_TJetSpectrumCBin1_tzvtx_PMTHit50_MBDNS1_Over_h_TJetpTSpectrumCBin1_tzvtx");
0092 
0093   //********** Response Matrix **********//
0094   TH1D* h_unfold_calib_dijet_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_reweighted, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_reweighted_1, 1, "h_unfold_calib_dijet_reweighted_1", h_efficiency_calib_dijet);
0095   TH1D* h_unfold_calib_dijet_effdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_effdown_reweighted, h_calibjet_pt_puritycorr_dijet_effdown, h_unfold_calib_dijet_effdown_reweighted_1, 1, "h_unfold_calib_dijet_effdown_reweighted_1", h_efficiency_calib_dijet);
0096   TH1D* h_unfold_calib_dijet_effup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_effup_reweighted, h_calibjet_pt_puritycorr_dijet_effup, h_unfold_calib_dijet_effup_reweighted_1, 1, "h_unfold_calib_dijet_effup_reweighted_1", h_efficiency_calib_dijet);
0097   TH1D* h_unfold_calib_dijet_jesdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_jesdown_reweighted, h_calibjet_pt_puritycorr_dijet_jesdown, h_unfold_calib_dijet_jesdown_reweighted_1, 1, "h_unfold_calib_dijet_jesdown_reweighted_1", h_efficiency_calib_dijet_jesdown);
0098   TH1D* h_unfold_calib_dijet_jesup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_jesup_reweighted, h_calibjet_pt_puritycorr_dijet_jesup, h_unfold_calib_dijet_jesup_reweighted_1, 1, "h_unfold_calib_dijet_jesup_reweighted_1", h_efficiency_calib_dijet_jesup);
0099   TH1D* h_unfold_calib_dijet_jerdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_jerdown_reweighted, h_calibjet_pt_puritycorr_dijet_jerdown, h_unfold_calib_dijet_jerdown_reweighted_1, 1, "h_unfold_calib_dijet_jerdown_reweighted_1", h_efficiency_calib_dijet_jerdown);
0100   TH1D* h_unfold_calib_dijet_jerup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_jerup_reweighted, h_calibjet_pt_puritycorr_dijet_jerup, h_unfold_calib_dijet_jerup_reweighted_1, 1, "h_unfold_calib_dijet_jerup_reweighted_1", h_efficiency_calib_dijet_jerup);
0101 
0102   TH1D* h_unfold_calib_frac_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_reweighted, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_reweighted_1, 1, "h_unfold_calib_frac_reweighted_1", h_efficiency_calib_frac);
0103   TH1D* h_unfold_calib_frac_effdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_effdown_reweighted, h_calibjet_pt_puritycorr_frac_effdown, h_unfold_calib_frac_effdown_reweighted_1, 1, "h_unfold_calib_frac_effdown_reweighted_1", h_efficiency_calib_frac);
0104   TH1D* h_unfold_calib_frac_effup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_effup_reweighted, h_calibjet_pt_puritycorr_frac_effup, h_unfold_calib_frac_effup_reweighted_1, 1, "h_unfold_calib_frac_effup_reweighted_1", h_efficiency_calib_frac);
0105   TH1D* h_unfold_calib_frac_jesdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_jesdown_reweighted, h_calibjet_pt_puritycorr_frac_jesdown, h_unfold_calib_frac_jesdown_reweighted_1, 1, "h_unfold_calib_frac_jesdown_reweighted_1", h_efficiency_calib_frac_jesdown);
0106   TH1D* h_unfold_calib_frac_jesup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_jesup_reweighted, h_calibjet_pt_puritycorr_frac_jesup, h_unfold_calib_frac_jesup_reweighted_1, 1, "h_unfold_calib_frac_jesup_reweighted_1", h_efficiency_calib_frac_jesup);
0107   TH1D* h_unfold_calib_frac_jerdown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_jerdown_reweighted, h_calibjet_pt_puritycorr_frac_jerdown, h_unfold_calib_frac_jerdown_reweighted_1, 1, "h_unfold_calib_frac_jerdown_reweighted_1", h_efficiency_calib_frac_jerdown);
0108   TH1D* h_unfold_calib_frac_jerup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_jerup_reweighted, h_calibjet_pt_puritycorr_frac_jerup, h_unfold_calib_frac_jerup_reweighted_1, 1, "h_unfold_calib_frac_jerup_reweighted_1", h_efficiency_calib_frac_jerup);
0109 
0110   TH1D* h_unfold_calib_dijet_reweighted_2; get_unfolded_spectrum(h_respmatrix_calib_dijet_reweighted, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_reweighted_2, 2, "h_unfold_calib_dijet_reweighted_2", h_efficiency_calib_dijet);
0111   TH1D* h_unfold_calib_dijet_reweighted_3; get_unfolded_spectrum(h_respmatrix_calib_dijet_reweighted, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_reweighted_3, 3, "h_unfold_calib_dijet_reweighted_3", h_efficiency_calib_dijet);
0112   TH1D* h_unfold_calib_dijet_mbddown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_reweighted, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_mbddown_reweighted_1, 1, "h_unfold_calib_dijet_mbddown_reweighted_1", h_efficiency_calib_dijet);
0113   TH1D* h_unfold_calib_dijet_mbdup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_dijet_reweighted, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_mbdup_reweighted_1, 1, "h_unfold_calib_dijet_mbdup_reweighted_1", h_efficiency_calib_dijet);
0114   TH1D* h_unfold_calib_frac_reweighted_2; get_unfolded_spectrum(h_respmatrix_calib_frac_reweighted, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_reweighted_2, 2, "h_unfold_calib_frac_reweighted_2", h_efficiency_calib_frac);
0115   TH1D* h_unfold_calib_frac_reweighted_3; get_unfolded_spectrum(h_respmatrix_calib_frac_reweighted, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_reweighted_3, 3, "h_unfold_calib_frac_reweighted_3", h_efficiency_calib_frac);
0116   TH1D* h_unfold_calib_frac_mbddown_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_reweighted, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_mbddown_reweighted_1, 1, "h_unfold_calib_frac_mbddown_reweighted_1", h_efficiency_calib_frac);
0117   TH1D* h_unfold_calib_frac_mbdup_reweighted_1; get_unfolded_spectrum(h_respmatrix_calib_frac_reweighted, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_mbdup_reweighted_1, 1, "h_unfold_calib_frac_mbdup_reweighted_1", h_efficiency_calib_frac);
0118 
0119   TH1D* h_unfold_calib_dijet_1; get_unfolded_spectrum(h_respmatrix_calib_dijet, h_calibjet_pt_puritycorr_dijet, h_unfold_calib_dijet_1, 2, "h_unfold_calib_dijet_1", h_efficiency_calib_dijet);
0120   TH1D* h_unfold_calib_frac_1; get_unfolded_spectrum(h_respmatrix_calib_frac, h_calibjet_pt_puritycorr_frac, h_unfold_calib_frac_1, 2, "h_unfold_calib_frac_1", h_efficiency_calib_frac);
0121   for (int ib = 1; ib <= h_unfold_calib_dijet_1->GetNbinsX(); ++ib) {
0122     std::cout << "bin " << ib << " : " << h_unfold_calib_dijet_1->GetBinContent(ib) << "\t" << h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) << "\t\t" << h_unfold_calib_frac_1->GetBinContent(ib) << "\t" << h_unfold_calib_frac_reweighted_1->GetBinContent(ib) << std::endl;
0123   }
0124 
0125   //********** MBD Efficiency Correction **********//
0126   int n_underflow_bin = 2;
0127   int n_overflow_bin = 1;
0128   for (int ib = 1 + n_underflow_bin; ib <= h_unfold_calib_dijet_reweighted_1->GetNbinsX() - n_overflow_bin; ++ib) {
0129     double mbd_efficiency = h_mbd_efficiency->GetBinContent(ib - n_underflow_bin) / 0.57 * (26.1 / 42.);
0130 
0131     h_unfold_calib_dijet_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_reweighted_1->GetBinError(ib) / mbd_efficiency);
0132     h_unfold_calib_dijet_effdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_effdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_effdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_effdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0133     h_unfold_calib_dijet_effup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_effup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_effup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_effup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0134     h_unfold_calib_dijet_jesdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jesdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_jesdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jesdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0135     h_unfold_calib_dijet_jesup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jesup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_jesup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jesup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0136     h_unfold_calib_dijet_jerdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jerdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_jerdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jerdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0137     h_unfold_calib_dijet_jerup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jerup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_jerup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jerup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0138 
0139     h_unfold_calib_frac_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_reweighted_1->SetBinError(ib, h_unfold_calib_frac_reweighted_1->GetBinError(ib) / mbd_efficiency);
0140     h_unfold_calib_frac_effdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_effdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_effdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_effdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0141     h_unfold_calib_frac_effup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_effup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_effup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_effup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0142     h_unfold_calib_frac_jesdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jesdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_jesdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jesdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0143     h_unfold_calib_frac_jesup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jesup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_jesup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jesup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0144     h_unfold_calib_frac_jerdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jerdown_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_jerdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jerdown_reweighted_1->GetBinError(ib) / mbd_efficiency);
0145     h_unfold_calib_frac_jerup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jerup_reweighted_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_jerup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jerup_reweighted_1->GetBinError(ib) / mbd_efficiency);
0146 
0147     h_unfold_calib_dijet_reweighted_2->SetBinContent(ib, h_unfold_calib_dijet_reweighted_2->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_reweighted_2->SetBinError(ib, h_unfold_calib_dijet_reweighted_2->GetBinError(ib) / mbd_efficiency);
0148     h_unfold_calib_dijet_reweighted_3->SetBinContent(ib, h_unfold_calib_dijet_reweighted_3->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_reweighted_3->SetBinError(ib, h_unfold_calib_dijet_reweighted_3->GetBinError(ib) / mbd_efficiency);
0149     h_unfold_calib_frac_reweighted_2->SetBinContent(ib, h_unfold_calib_frac_reweighted_2->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_reweighted_2->SetBinError(ib, h_unfold_calib_frac_reweighted_2->GetBinError(ib) / mbd_efficiency);
0150     h_unfold_calib_frac_reweighted_3->SetBinContent(ib, h_unfold_calib_frac_reweighted_3->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_reweighted_3->SetBinError(ib, h_unfold_calib_frac_reweighted_3->GetBinError(ib) / mbd_efficiency);
0151 
0152     h_unfold_calib_dijet_1->SetBinContent(ib, h_unfold_calib_dijet_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_dijet_1->SetBinError(ib, h_unfold_calib_dijet_1->GetBinError(ib) / mbd_efficiency);
0153     h_unfold_calib_frac_1->SetBinContent(ib, h_unfold_calib_frac_1->GetBinContent(ib) / mbd_efficiency); h_unfold_calib_frac_1->SetBinError(ib, h_unfold_calib_frac_1->GetBinError(ib) / mbd_efficiency);
0154 
0155     double mbd_efficiency_down = h_mbd_efficiency_down->GetBinContent(ib - n_underflow_bin) / 0.57 * (26.1 / 42.);
0156     h_unfold_calib_dijet_mbddown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_mbddown_reweighted_1->GetBinContent(ib) / mbd_efficiency_down); h_unfold_calib_dijet_mbddown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_mbddown_reweighted_1->GetBinError(ib) / mbd_efficiency_down);
0157     h_unfold_calib_frac_mbddown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_mbddown_reweighted_1->GetBinContent(ib) / mbd_efficiency_down); h_unfold_calib_frac_mbddown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_mbddown_reweighted_1->GetBinError(ib) / mbd_efficiency_down);
0158     double mbd_efficiency_up = h_mbd_efficiency_up->GetBinContent(ib - n_underflow_bin) / 0.57 * (26.1 / 42.);
0159     h_unfold_calib_dijet_mbdup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_mbdup_reweighted_1->GetBinContent(ib) / mbd_efficiency_up); h_unfold_calib_dijet_mbdup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_mbdup_reweighted_1->GetBinError(ib) / mbd_efficiency_up);
0160     h_unfold_calib_frac_mbdup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_mbdup_reweighted_1->GetBinContent(ib) / mbd_efficiency_up); h_unfold_calib_frac_mbdup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_mbdup_reweighted_1->GetBinError(ib) / mbd_efficiency_up);
0161   }
0162  
0163   //********** Writing **********//
0164   std::cout << "Writing histograms..." << std::endl;
0165   f_out->cd();
0166   h_unfold_calib_dijet_reweighted_1->Write();
0167   h_unfold_calib_dijet_effdown_reweighted_1->Write();
0168   h_unfold_calib_dijet_effup_reweighted_1->Write();
0169   h_unfold_calib_dijet_jesdown_reweighted_1->Write();
0170   h_unfold_calib_dijet_jesup_reweighted_1->Write();
0171   h_unfold_calib_dijet_jerdown_reweighted_1->Write();
0172   h_unfold_calib_dijet_jerup_reweighted_1->Write();
0173 
0174   h_unfold_calib_frac_reweighted_1->Write();
0175   h_unfold_calib_frac_effdown_reweighted_1->Write();
0176   h_unfold_calib_frac_effup_reweighted_1->Write();
0177   h_unfold_calib_frac_jesdown_reweighted_1->Write();
0178   h_unfold_calib_frac_jesup_reweighted_1->Write();
0179   h_unfold_calib_frac_jerdown_reweighted_1->Write();
0180   h_unfold_calib_frac_jerup_reweighted_1->Write();
0181 
0182   h_unfold_calib_dijet_reweighted_2->Write();
0183   h_unfold_calib_dijet_reweighted_3->Write();
0184   h_unfold_calib_dijet_mbddown_reweighted_1->Write();
0185   h_unfold_calib_dijet_mbdup_reweighted_1->Write();
0186   h_unfold_calib_frac_reweighted_2->Write();
0187   h_unfold_calib_frac_reweighted_3->Write();
0188   h_unfold_calib_frac_mbddown_reweighted_1->Write();
0189   h_unfold_calib_frac_mbdup_reweighted_1->Write();
0190 
0191   h_unfold_calib_dijet_1->Write();
0192   h_unfold_calib_frac_1->Write();
0193   f_out->Close();
0194   std::cout << "All done!" << std::endl;
0195 }