File indexing completed on 2025-08-05 08:13:10
0001 #include <iostream>
0002 #include <fstream>
0003 #include <TFile.h>
0004 #include <TH1D.h>
0005 #include <TH2D.h>
0006 #include <TMath.h>
0007 #include <vector>
0008 #include "TLatex.h"
0009 #include <string>
0010 #include "unfold_Def.h"
0011 #include "/sphenix/user/hanpuj/CaloDataAna24_skimmed/src/draw_template.C"
0012
0013 ifstream f_luminosity("luminosity.txt");
0014 double luminosity;
0015 f_luminosity >> luminosity;
0016 double delta_eta = 1.4;
0017 int n_underflow_bin = 2;
0018 int n_overflow_bin = 1;
0019 std::cout << "Luminosity: " << luminosity << " mb^-1" << std::endl;
0020 std::cout << "Delta eta: " << delta_eta << std::endl;
0021
0022 void draw_1D_multiple_plot_uncertainty(std::vector<TH1F*> h_input, float x_min, float x_max, float ratio_min, float ratio_max, std::string xtitle, std::string ytitle, std::vector<std::string> legend, float xstart_legend, float ystart_legend, std::vector<int> color, std::vector<int> markerstyle, std::string output_name);
0023
0024 void get_finalspectrum() {
0025
0026 std::vector<TH1F*> h_input;
0027 std::vector<TGraphAsymmErrors*> g_input;
0028 std::vector<int> color;
0029 std::vector<int> markerstyle;
0030 std::vector<std::string> text;
0031 std::vector<std::string> legend;
0032
0033 TFile *f_data = new TFile("output_data.root", "READ");
0034 TH1D* h_recojet_pt_record = (TH1D*)f_data->Get("h_recojet_pt_record");
0035 h_recojet_pt_record->Rebin(10);
0036 TH1D* h_recojet_pt_record_dijet = (TH1D*)f_data->Get("h_recojet_pt_record_dijet");
0037 h_recojet_pt_record_dijet->Rebin(10);
0038 TH1D* h_recojet_pt_record_frac = (TH1D*)f_data->Get("h_recojet_pt_record_frac");
0039 h_recojet_pt_record_frac->Rebin(10);
0040
0041 h_input.push_back((TH1F*)h_recojet_pt_record);
0042 h_input.push_back((TH1F*)h_recojet_pt_record_dijet);
0043 h_input.push_back((TH1F*)h_recojet_pt_record_frac);
0044 color.push_back(kBlack);
0045 color.push_back(kAzure+1);
0046 color.push_back(kRed+1);
0047 markerstyle.push_back(20);
0048 markerstyle.push_back(21);
0049 markerstyle.push_back(20);
0050 text.push_back("#bf{#it{sPHENIX}} Internal");
0051 text.push_back("p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}");
0052 text.push_back("anti-k_{T}#it{R} = 0.4");
0053 text.push_back("|#eta^{jet}| < 0.7");
0054 legend.push_back("Reco jet spectrum");
0055 legend.push_back("After dijet cut");
0056 legend.push_back("After fraction cut");
0057 draw_1D_multiple_plot(h_input, color, markerstyle,
0058 false, 10, true,
0059 true, 10, 100, false,
0060 true, 0.3, 4e+06, true,
0061 true, "p_{T}^{jet} [GeV]", "dN_{jet} / dp_{T} [1/GeV]",
0062 true, text, 0.45, 0.9, 0.04,
0063 true, legend, 0.48, 0.65, 0.04,
0064 "figure/raw_reco_jet_spectrum.pdf");
0065 h_input.clear();
0066 color.clear();
0067 markerstyle.clear();
0068 text.clear();
0069 legend.clear();
0070
0071 f_data->Close();
0072 std::cout << "check0" << std::endl;
0073
0074 TFile* f_spectrum = new TFile("output_unfolded.root", "READ");
0075
0076 TH1D* h_unfold_calib_dijet_reweighted_1 = new TH1D("h_spectra_calib_dijet_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_reweighted_1");
0077 TH1D* h_unfold_calib_dijet_effdown_reweighted_1 = new TH1D("h_spectra_calib_dijet_effdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_effdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_effdown_reweighted_1");
0078 TH1D* h_unfold_calib_dijet_effup_reweighted_1 = new TH1D("h_spectra_calib_dijet_effup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_effup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_effup_reweighted_1");
0079 TH1D* h_unfold_calib_dijet_jesdown_reweighted_1 = new TH1D("h_spectra_calib_dijet_jesdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_jesdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_jesdown_reweighted_1");
0080 TH1D* h_unfold_calib_dijet_jesup_reweighted_1 = new TH1D("h_spectra_calib_dijet_jesup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_jesup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_jesup_reweighted_1");
0081 TH1D* h_unfold_calib_dijet_jerdown_reweighted_1 = new TH1D("h_spectra_calib_dijet_jerdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_jerdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_jerdown_reweighted_1");
0082 TH1D* h_unfold_calib_dijet_jerup_reweighted_1 = new TH1D("h_spectra_calib_dijet_jerup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_jerup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_jerup_reweighted_1");
0083
0084 TH1D* h_unfold_calib_frac_reweighted_1 = new TH1D("h_spectra_calib_frac_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_reweighted_1");
0085 TH1D* h_unfold_calib_frac_effdown_reweighted_1 = new TH1D("h_spectra_calib_frac_effdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_effdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_effdown_reweighted_1");
0086 TH1D* h_unfold_calib_frac_effup_reweighted_1 = new TH1D("h_spectra_calib_frac_effup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_effup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_effup_reweighted_1");
0087 TH1D* h_unfold_calib_frac_jesdown_reweighted_1 = new TH1D("h_spectra_calib_frac_jesdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_jesdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_jesdown_reweighted_1");
0088 TH1D* h_unfold_calib_frac_jesup_reweighted_1 = new TH1D("h_spectra_calib_frac_jesup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_jesup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_jesup_reweighted_1");
0089 TH1D* h_unfold_calib_frac_jerdown_reweighted_1 = new TH1D("h_spectra_calib_frac_jerdown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_jerdown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_jerdown_reweighted_1");
0090 TH1D* h_unfold_calib_frac_jerup_reweighted_1 = new TH1D("h_spectra_calib_frac_jerup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_jerup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_jerup_reweighted_1");
0091
0092 TH1D* h_unfold_calib_dijet_reweighted_2 = new TH1D("h_spectra_calib_dijet_reweighted_2", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_reweighted_2_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_reweighted_2");
0093 TH1D* h_unfold_calib_dijet_reweighted_3 = new TH1D("h_spectra_calib_dijet_reweighted_3", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_reweighted_3_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_reweighted_3");
0094 TH1D* h_unfold_calib_dijet_mbddown_reweighted_1 = new TH1D("h_spectra_calib_dijet_mbddown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_mbddown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_mbddown_reweighted_1");
0095 TH1D* h_unfold_calib_dijet_mbdup_reweighted_1 = new TH1D("h_spectra_calib_dijet_mbdup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_mbdup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_mbdup_reweighted_1");
0096
0097 TH1D* h_unfold_calib_frac_reweighted_2 = new TH1D("h_spectra_calib_frac_reweighted_2", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_reweighted_2_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_reweighted_2");
0098 TH1D* h_unfold_calib_frac_reweighted_3 = new TH1D("h_spectra_calib_frac_reweighted_3", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_reweighted_3_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_reweighted_3");
0099 TH1D* h_unfold_calib_frac_mbddown_reweighted_1 = new TH1D("h_spectra_calib_frac_mbddown_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_mbddown_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_mbddown_reweighted_1");
0100 TH1D* h_unfold_calib_frac_mbdup_reweighted_1 = new TH1D("h_spectra_calib_frac_mbdup_reweighted_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_mbdup_reweighted_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_mbdup_reweighted_1");
0101
0102 TH1D* h_unfold_calib_dijet_1 = new TH1D("h_spectra_calib_dijet_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_dijet_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_dijet_1");
0103 TH1D* h_unfold_calib_frac_1 = new TH1D("h_spectra_calib_frac_1", "", calibnpt, calibptbins); TH1D* h_unfold_calib_frac_1_temp = (TH1D*)f_spectrum->Get("h_unfold_calib_frac_1");
0104
0105 for (int ib = 1; ib <= h_unfold_calib_dijet_reweighted_1->GetNbinsX(); ++ib) {
0106 h_unfold_calib_dijet_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0107 h_unfold_calib_dijet_effdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_effdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_effdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_effdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0108 h_unfold_calib_dijet_effup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_effup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_effup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_effup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0109 h_unfold_calib_dijet_jesdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jesdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_jesdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jesdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0110 h_unfold_calib_dijet_jesup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jesup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_jesup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jesup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0111 h_unfold_calib_dijet_jerdown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jerdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_jerdown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jerdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0112 h_unfold_calib_dijet_jerup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_jerup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_jerup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_jerup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0113
0114 h_unfold_calib_frac_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_reweighted_1->SetBinError(ib, h_unfold_calib_frac_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0115 h_unfold_calib_frac_effdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_effdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_effdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_effdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0116 h_unfold_calib_frac_effup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_effup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_effup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_effup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0117 h_unfold_calib_frac_jesdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jesdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_jesdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jesdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0118 h_unfold_calib_frac_jesup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jesup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_jesup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jesup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0119 h_unfold_calib_frac_jerdown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jerdown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_jerdown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jerdown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0120 h_unfold_calib_frac_jerup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_jerup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_jerup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_jerup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0121
0122 h_unfold_calib_dijet_reweighted_2->SetBinContent(ib, h_unfold_calib_dijet_reweighted_2_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_reweighted_2->SetBinError(ib, h_unfold_calib_dijet_reweighted_2_temp->GetBinError(ib + n_underflow_bin));
0123 h_unfold_calib_dijet_reweighted_3->SetBinContent(ib, h_unfold_calib_dijet_reweighted_3_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_reweighted_3->SetBinError(ib, h_unfold_calib_dijet_reweighted_3_temp->GetBinError(ib + n_underflow_bin));
0124 h_unfold_calib_dijet_mbddown_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_mbddown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_mbddown_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_mbddown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0125 h_unfold_calib_dijet_mbdup_reweighted_1->SetBinContent(ib, h_unfold_calib_dijet_mbdup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_mbdup_reweighted_1->SetBinError(ib, h_unfold_calib_dijet_mbdup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0126
0127 h_unfold_calib_frac_reweighted_2->SetBinContent(ib, h_unfold_calib_frac_reweighted_2_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_reweighted_2->SetBinError(ib, h_unfold_calib_frac_reweighted_2_temp->GetBinError(ib + n_underflow_bin));
0128 h_unfold_calib_frac_reweighted_3->SetBinContent(ib, h_unfold_calib_frac_reweighted_3_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_reweighted_3->SetBinError(ib, h_unfold_calib_frac_reweighted_3_temp->GetBinError(ib + n_underflow_bin));
0129 h_unfold_calib_frac_mbddown_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_mbddown_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_mbddown_reweighted_1->SetBinError(ib, h_unfold_calib_frac_mbddown_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0130 h_unfold_calib_frac_mbdup_reweighted_1->SetBinContent(ib, h_unfold_calib_frac_mbdup_reweighted_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_mbdup_reweighted_1->SetBinError(ib, h_unfold_calib_frac_mbdup_reweighted_1_temp->GetBinError(ib + n_underflow_bin));
0131
0132 h_unfold_calib_dijet_1->SetBinContent(ib, h_unfold_calib_dijet_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_dijet_1->SetBinError(ib, h_unfold_calib_dijet_1_temp->GetBinError(ib + n_underflow_bin));
0133 h_unfold_calib_frac_1->SetBinContent(ib, h_unfold_calib_frac_1_temp->GetBinContent(ib + n_underflow_bin)); h_unfold_calib_frac_1->SetBinError(ib, h_unfold_calib_frac_1_temp->GetBinError(ib + n_underflow_bin));
0134 }
0135
0136
0137 double uncertainty_unfold_upper[9] = {0};
0138 double uncertainty_unfold_lower[9] = {0};
0139 double uncertainty_cut_upper[9] = {0};
0140 double uncertainty_cut_lower[9] = {0};
0141 double uncertainty_mbd_upper[9] = {0};
0142 double uncertainty_mbd_lower[9] = {0};
0143 double uncertainty_other_upper[9] = {0};
0144 double uncertainty_other_lower[9] = {0};
0145 double uncertainty_final_upper[9] = {0};
0146 double uncertainty_final_lower[9] = {0};
0147
0148 double uncertainty_unfold_upper_record[9] = {0}, uncertainty_unfold_lower_record[9] = {0};
0149 double uncertainty_cut_upper_record[9] = {0}, uncertainty_cut_lower_record[9] = {0};
0150 double uncertainty_jes_upper_record[9] = {0}, uncertainty_jes_lower_record[9] = {0};
0151 double uncertainty_jer_upper_record[9] = {0}, uncertainty_jer_lower_record[9] = {0};
0152 double uncertainty_jeteff_upper_record[9] = {0}, uncertainty_jeteff_lower_record[9] = {0};
0153 double uncertainty_mbdeff_upper_record[9] = {0}, uncertainty_mbdeff_lower_record[9] = {0};
0154 double uncertainty_mbdcs_upper_record[9] = {0}, uncertainty_mbdcs_lower_record[9] = {0};
0155 double uncertainty_stat_upper_record[9] = {0}, uncertainty_stat_lower_record[9] = {0};
0156 double uncertainty_total_upper_record[9] = {0}, uncertainty_total_lower_record[9] = {0};
0157
0158 TH1D* h_unfold_calib_nominal = new TH1D("h_unfold_calib_nominal", "", calibnpt, calibptbins);
0159 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0160 h_unfold_calib_nominal->SetBinContent(ib, (h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) + h_unfold_calib_frac_reweighted_1->GetBinContent(ib)) / 2.);
0161 h_unfold_calib_nominal->SetBinError(ib, TMath::Sqrt(TMath::Power(h_unfold_calib_dijet_reweighted_1->GetBinError(ib), 2) + TMath::Power(h_unfold_calib_frac_reweighted_1->GetBinError(ib), 2)) / 2.);
0162 }
0163
0164 TH1D* h_unfold_calib_nominal_unfold = new TH1D("h_unfold_calib_nominal_unfold", "", calibnpt, calibptbins);
0165 for (int ib = 1; ib <= h_unfold_calib_nominal_unfold->GetNbinsX(); ++ib) {
0166 h_unfold_calib_nominal_unfold->SetBinContent(ib, (h_unfold_calib_dijet_1->GetBinContent(ib) + h_unfold_calib_frac_1->GetBinContent(ib)) / 2.);
0167 h_unfold_calib_nominal_unfold->SetBinError(ib, TMath::Sqrt(TMath::Power(h_unfold_calib_dijet_1->GetBinError(ib), 2) + TMath::Power(h_unfold_calib_frac_1->GetBinError(ib), 2)) / 2.);
0168 }
0169
0170
0171 for (int ib = 0; ib < 9; ++ib) {
0172 uncertainty_mbd_upper[ib] = 4.3 / 26.1;
0173 uncertainty_mbd_lower[ib] = 1.1 / 26.1;
0174 uncertainty_mbdcs_upper_record[ib] = uncertainty_mbd_upper[ib];
0175 uncertainty_mbdcs_lower_record[ib] = uncertainty_mbd_lower[ib];
0176 }
0177
0178
0179 h_input.push_back((TH1F*)h_unfold_calib_nominal);
0180 h_input.push_back((TH1F*)h_unfold_calib_nominal_unfold);
0181 color.push_back(kBlack);
0182 color.push_back(kRed);
0183 markerstyle.push_back(20);
0184 markerstyle.push_back(20);
0185 legend.push_back("Nominal distribution");
0186 legend.push_back("Nominal distribution without reweighting");
0187 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.7, 1.3, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_unfold.pdf");
0188 h_input.clear();
0189 color.clear();
0190 markerstyle.clear();
0191 legend.clear();
0192 std::cout << std::endl << "Uncertainty from unfolding: " << std::endl << "up\t\tdown" << std::endl;
0193 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0194 double unc = h_unfold_calib_nominal_unfold->GetBinContent(ib) - h_unfold_calib_nominal->GetBinContent(ib);
0195 double unc_up = 0;
0196 double unc_down = 0;
0197 unc_up = TMath::Sqrt(unc_up * unc_up + unc * unc);
0198 unc_down = TMath::Sqrt(unc_down * unc_down + unc * unc);
0199
0200 uncertainty_unfold_upper[ib-1] = TMath::Sqrt(uncertainty_unfold_upper[ib-1] * uncertainty_unfold_upper[ib-1] + unc * unc);
0201 uncertainty_unfold_lower[ib-1] = TMath::Sqrt(uncertainty_unfold_lower[ib-1] * uncertainty_unfold_lower[ib-1] + unc * unc);
0202
0203 uncertainty_unfold_upper_record[ib-1] = unc_up / h_unfold_calib_nominal->GetBinContent(ib);
0204 uncertainty_unfold_lower_record[ib-1] = unc_down / h_unfold_calib_nominal->GetBinContent(ib);
0205 std::cout << unc_up / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\% \t" << unc_down / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%" << std::endl;
0206 }
0207
0208
0209 h_input.push_back((TH1F*)h_unfold_calib_nominal);
0210 h_input.push_back((TH1F*)h_unfold_calib_dijet_reweighted_1);
0211 h_input.push_back((TH1F*)h_unfold_calib_frac_reweighted_1);
0212 color.push_back(kBlack);
0213 color.push_back(kAzure+1);
0214 color.push_back(kRed+1);
0215 markerstyle.push_back(20);
0216 markerstyle.push_back(20);
0217 markerstyle.push_back(20);
0218 legend.push_back("Nominal distribution");
0219 legend.push_back("With dijet cut");
0220 legend.push_back("With fraction cut");
0221 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.8, 1.2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_cut.pdf");
0222 h_input.clear();
0223 color.clear();
0224 markerstyle.clear();
0225 legend.clear();
0226 std::cout << std::endl << "Uncertainty from cut: " << std::endl << "up\t\tdown" << std::endl;
0227 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0228 double unc1 = h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) - h_unfold_calib_nominal->GetBinContent(ib);
0229 double unc2 = h_unfold_calib_frac_reweighted_1->GetBinContent(ib) - h_unfold_calib_nominal->GetBinContent(ib);
0230 double unc_up = 0;
0231 double unc_down = 0;
0232 if (unc1 > 0) {
0233 uncertainty_cut_upper[ib-1] = TMath::Sqrt(uncertainty_cut_upper[ib-1] * uncertainty_cut_upper[ib-1] + unc1 * unc1);
0234 unc_up = TMath::Sqrt(unc_up * unc_up + unc1 * unc1);
0235 } else {
0236 uncertainty_cut_lower[ib-1] = TMath::Sqrt(uncertainty_cut_lower[ib-1] * uncertainty_cut_lower[ib-1] + unc1 * unc1);
0237 unc_down = TMath::Sqrt(unc_down * unc_down + unc1 * unc1);
0238 }
0239 if (unc2 > 0) {
0240 uncertainty_cut_upper[ib-1] = TMath::Sqrt(uncertainty_cut_upper[ib-1] * uncertainty_cut_upper[ib-1] + unc2 * unc2);
0241 unc_up = TMath::Sqrt(unc_up * unc_up + unc2 * unc2);
0242 } else {
0243 uncertainty_cut_lower[ib-1] = TMath::Sqrt(uncertainty_cut_lower[ib-1] * uncertainty_cut_lower[ib-1] + unc2 * unc2);
0244 unc_down = TMath::Sqrt(unc_down * unc_down + unc2 * unc2);
0245 }
0246 uncertainty_cut_upper_record[ib-1] = unc_up / h_unfold_calib_nominal->GetBinContent(ib);
0247 uncertainty_cut_lower_record[ib-1] = unc_down / h_unfold_calib_nominal->GetBinContent(ib);
0248 std::cout << unc_up / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\% \t" << unc_down / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%" << std::endl;
0249 }
0250
0251
0252 h_input.push_back((TH1F*)h_unfold_calib_dijet_reweighted_1);
0253 h_input.push_back((TH1F*)h_unfold_calib_dijet_effdown_reweighted_1);
0254 h_input.push_back((TH1F*)h_unfold_calib_dijet_effup_reweighted_1);
0255 color.push_back(kBlack);
0256 color.push_back(kRed);
0257 color.push_back(kBlue);
0258 markerstyle.push_back(20);
0259 markerstyle.push_back(20);
0260 markerstyle.push_back(20);
0261 legend.push_back("Unfolded spectrum (Dijet cut)");
0262 legend.push_back("With jet trigger efficiency shift down");
0263 legend.push_back("With jet trigger efficiency shift up");
0264 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.8, 1.2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_eff_dijet.pdf");
0265 h_input.clear();
0266 legend.clear();
0267 h_input.push_back((TH1F*)h_unfold_calib_frac_reweighted_1);
0268 h_input.push_back((TH1F*)h_unfold_calib_frac_effdown_reweighted_1);
0269 h_input.push_back((TH1F*)h_unfold_calib_frac_effup_reweighted_1);
0270 legend.push_back("Unfolded spectrum (Fraction cut)");
0271 legend.push_back("With jet trigger efficiency shift down");
0272 legend.push_back("With jet trigger efficiency shift up");
0273 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.8, 1.2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_eff_frac.pdf");
0274 h_input.clear();
0275 color.clear();
0276 markerstyle.clear();
0277 legend.clear();
0278 std::cout << std::endl << "Uncertainty from jet trigger efficiency: " << std::endl << "up\t\t\tdown\t\t\tunc1\t\t\tunc2\t\t\tdijet1\t\t\tdijet2\t\t\tfrac1\t\t\tfrac2" << std::endl;
0279 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0280 double unc1_dijet = h_unfold_calib_dijet_effdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0281 double unc2_dijet = h_unfold_calib_dijet_effup_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0282 double unc1_frac = h_unfold_calib_frac_effdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0283 double unc2_frac = h_unfold_calib_frac_effup_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0284 double unc1 = (unc1_dijet + unc1_frac) / 2.;
0285 double unc2 = (unc2_dijet + unc2_frac) / 2.;
0286 if (unc1 > 0) {
0287 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc1 * unc1);
0288 uncertainty_jeteff_upper_record[ib-1] = TMath::Sqrt(uncertainty_jeteff_upper_record[ib-1] * uncertainty_jeteff_upper_record[ib-1] + unc1 * unc1);
0289 } else {
0290 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc1 * unc1);
0291 uncertainty_jeteff_lower_record[ib-1] = TMath::Sqrt(uncertainty_jeteff_lower_record[ib-1] * uncertainty_jeteff_lower_record[ib-1] + unc1 * unc1);
0292 }
0293 if (unc2 > 0) {
0294 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc2 * unc2);
0295 uncertainty_jeteff_upper_record[ib-1] = TMath::Sqrt(uncertainty_jeteff_upper_record[ib-1] * uncertainty_jeteff_upper_record[ib-1] + unc2 * unc2);
0296 } else {
0297 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc2 * unc2);
0298 uncertainty_jeteff_lower_record[ib-1] = TMath::Sqrt(uncertainty_jeteff_lower_record[ib-1] * uncertainty_jeteff_lower_record[ib-1] + unc2 * unc2);
0299 }
0300 uncertainty_jeteff_upper_record[ib-1] = uncertainty_jeteff_upper_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0301 uncertainty_jeteff_lower_record[ib-1] = uncertainty_jeteff_lower_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0302 std::cout << uncertainty_other_upper[ib-1] << " (" << uncertainty_other_upper[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << uncertainty_other_lower[ib-1] << " (" << uncertainty_other_lower[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0303 std::cout << unc1 << " (" << unc1 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << unc2 << " (" << unc2 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0304 std::cout << unc1_dijet << " (" << unc1_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_dijet << " (" << unc2_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t";
0305 std::cout << unc1_frac << " (" << unc1_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_frac << " (" << unc2_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%)" << std::endl;
0306 }
0307
0308
0309 h_input.push_back((TH1F*)h_unfold_calib_dijet_reweighted_1);
0310 h_input.push_back((TH1F*)h_unfold_calib_dijet_jesdown_reweighted_1);
0311 h_input.push_back((TH1F*)h_unfold_calib_dijet_jesup_reweighted_1);
0312 color.push_back(kBlack);
0313 color.push_back(kRed);
0314 color.push_back(kBlue);
0315 markerstyle.push_back(20);
0316 markerstyle.push_back(20);
0317 markerstyle.push_back(20);
0318 legend.push_back("Unfolded spectrum (Dijet cut)");
0319 legend.push_back("With JES shift down");
0320 legend.push_back("With JES shift up");
0321 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0, 2.07, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_jes_dijet.pdf");
0322 h_input.clear();
0323 legend.clear();
0324 h_input.push_back((TH1F*)h_unfold_calib_frac_reweighted_1);
0325 h_input.push_back((TH1F*)h_unfold_calib_frac_jesdown_reweighted_1);
0326 h_input.push_back((TH1F*)h_unfold_calib_frac_jesup_reweighted_1);
0327 legend.push_back("Unfolded spectrum (Fraction cut)");
0328 legend.push_back("With JES shift down");
0329 legend.push_back("With JES shift up");
0330 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0, 2.07, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_jes_frac.pdf");
0331 h_input.clear();
0332 color.clear();
0333 markerstyle.clear();
0334 legend.clear();
0335 std::cout << std::endl << "Uncertainty from JES: " << std::endl << "up\t\t\tdown\t\t\tunc1\t\t\tunc2\t\t\tdijet1\t\t\tdijet2\t\t\tfrac1\t\t\tfrac2" << std::endl;
0336 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0337 double unc1_dijet = h_unfold_calib_dijet_jesdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0338 double unc2_dijet = h_unfold_calib_dijet_jesup_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0339 double unc1_frac = h_unfold_calib_frac_jesdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0340 double unc2_frac = h_unfold_calib_frac_jesup_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0341 double unc1 = (unc1_dijet + unc1_frac) / 2.;
0342 double unc2 = (unc2_dijet + unc2_frac) / 2.;
0343 if (unc1 > 0) {
0344 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc1 * unc1);
0345 uncertainty_jes_upper_record[ib-1] = TMath::Sqrt(uncertainty_jes_upper_record[ib-1] * uncertainty_jes_upper_record[ib-1] + unc1 * unc1);
0346 } else {
0347 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc1 * unc1);
0348 uncertainty_jes_lower_record[ib-1] = TMath::Sqrt(uncertainty_jes_lower_record[ib-1] * uncertainty_jes_lower_record[ib-1] + unc1 * unc1);
0349 }
0350 if (unc2 > 0) {
0351 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc2 * unc2);
0352 uncertainty_jes_upper_record[ib-1] = TMath::Sqrt(uncertainty_jes_upper_record[ib-1] * uncertainty_jes_upper_record[ib-1] + unc2 * unc2);
0353 } else {
0354 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc2 * unc2);
0355 uncertainty_jes_lower_record[ib-1] = TMath::Sqrt(uncertainty_jes_lower_record[ib-1] * uncertainty_jes_lower_record[ib-1] + unc2 * unc2);
0356 }
0357 uncertainty_jes_upper_record[ib-1] = uncertainty_jes_upper_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0358 uncertainty_jes_lower_record[ib-1] = uncertainty_jes_lower_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0359 std::cout << uncertainty_other_upper[ib-1] << " (" << uncertainty_other_upper[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << uncertainty_other_lower[ib-1] << " (" << uncertainty_other_lower[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0360 std::cout << unc1 << " (" << unc1 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << unc2 << " (" << unc2 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0361 std::cout << unc1_dijet << " (" << unc1_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_dijet << " (" << unc2_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t";
0362 std::cout << unc1_frac << " (" << unc1_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_frac << " (" << unc2_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%)" << std::endl;
0363 }
0364
0365
0366 h_input.push_back((TH1F*)h_unfold_calib_dijet_reweighted_1);
0367 h_input.push_back((TH1F*)h_unfold_calib_dijet_jerdown_reweighted_1);
0368 h_input.push_back((TH1F*)h_unfold_calib_dijet_jerup_reweighted_1);
0369 color.push_back(kBlack);
0370 color.push_back(kRed);
0371 color.push_back(kBlue);
0372 markerstyle.push_back(20);
0373 markerstyle.push_back(20);
0374 markerstyle.push_back(20);
0375 legend.push_back("Unfolded spectrum (Dijet cut)");
0376 legend.push_back("With JER shift down");
0377 legend.push_back("With JER shift up");
0378 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0, 2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_jer_dijet.pdf");
0379 h_input.clear();
0380 legend.clear();
0381 h_input.push_back((TH1F*)h_unfold_calib_frac_reweighted_1);
0382 h_input.push_back((TH1F*)h_unfold_calib_frac_jerdown_reweighted_1);
0383 h_input.push_back((TH1F*)h_unfold_calib_frac_jerup_reweighted_1);
0384 legend.push_back("Unfolded spectrum (Fraction cut)");
0385 legend.push_back("With JER shift down");
0386 legend.push_back("With JER shift up");
0387 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0, 2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_jer_frac.pdf");
0388 h_input.clear();
0389 color.clear();
0390 markerstyle.clear();
0391 legend.clear();
0392 std::cout << std::endl << "Uncertainty from JER: " << std::endl << "up\t\t\tdown\t\t\tunc1\t\t\tunc2\t\t\tdijet1\t\t\tdijet2\t\t\tfrac1\t\t\tfrac2" << std::endl;
0393 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0394 double unc1_dijet = h_unfold_calib_dijet_jerdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0395 double unc2_dijet = h_unfold_calib_dijet_jerup_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0396 double unc1_frac = h_unfold_calib_frac_jerdown_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0397 double unc2_frac = h_unfold_calib_frac_jerup_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0398 double unc1 = (unc1_dijet + unc1_frac) / 2.;
0399 double unc2 = (unc2_dijet + unc2_frac) / 2.;
0400 if (unc1 > 0) {
0401 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc1 * unc1);
0402 uncertainty_jer_upper_record[ib-1] = TMath::Sqrt(uncertainty_jer_upper_record[ib-1] * uncertainty_jer_upper_record[ib-1] + unc1 * unc1);
0403 } else {
0404 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc1 * unc1);
0405 uncertainty_jer_lower_record[ib-1] = TMath::Sqrt(uncertainty_jer_lower_record[ib-1] * uncertainty_jer_lower_record[ib-1] + unc1 * unc1);
0406 }
0407 if (unc2 > 0) {
0408 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc2 * unc2);
0409 uncertainty_jer_upper_record[ib-1] = TMath::Sqrt(uncertainty_jer_upper_record[ib-1] * uncertainty_jer_upper_record[ib-1] + unc2 * unc2);
0410 } else {
0411 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc2 * unc2);
0412 uncertainty_jer_lower_record[ib-1] = TMath::Sqrt(uncertainty_jer_lower_record[ib-1] * uncertainty_jer_lower_record[ib-1] + unc2 * unc2);
0413 }
0414 uncertainty_jer_upper_record[ib-1] = uncertainty_jer_upper_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0415 uncertainty_jer_lower_record[ib-1] = uncertainty_jer_lower_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0416 std::cout << uncertainty_other_upper[ib-1] << " (" << uncertainty_other_upper[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << uncertainty_other_lower[ib-1] << " (" << uncertainty_other_lower[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0417 std::cout << unc1 << " (" << unc1 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << unc2 << " (" << unc2 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0418 std::cout << unc1_dijet << " (" << unc1_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_dijet << " (" << unc2_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t";
0419 std::cout << unc1_frac << " (" << unc1_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_frac << " (" << unc2_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%)" << std::endl;
0420 }
0421
0422
0423 h_input.push_back((TH1F*)h_unfold_calib_dijet_reweighted_1);
0424 h_input.push_back((TH1F*)h_unfold_calib_dijet_mbddown_reweighted_1);
0425 h_input.push_back((TH1F*)h_unfold_calib_dijet_mbdup_reweighted_1);
0426 color.push_back(kBlack);
0427 color.push_back(kRed);
0428 color.push_back(kBlue);
0429 markerstyle.push_back(20);
0430 markerstyle.push_back(20);
0431 markerstyle.push_back(20);
0432 legend.push_back("Unfolded spectrum (Dijet cut)");
0433 legend.push_back("With MBD trigger efficiency shift down");
0434 legend.push_back("With MBD trigger efficiency shift up");
0435 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.8, 1.2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_mbd_dijet.pdf");
0436 h_input.clear();
0437 legend.clear();
0438 h_input.push_back((TH1F*)h_unfold_calib_frac_reweighted_1);
0439 h_input.push_back((TH1F*)h_unfold_calib_frac_mbddown_reweighted_1);
0440 h_input.push_back((TH1F*)h_unfold_calib_frac_mbdup_reweighted_1);
0441 legend.push_back("Unfolded spectrum (Fraction cut)");
0442 legend.push_back("With MBD trigger efficiency shift down");
0443 legend.push_back("With MBD trigger efficiency shift up");
0444 draw_1D_multiple_plot_uncertainty(h_input, calibptbins[0], calibptbins[calibnpt], 0.8, 1.2, "p_{T}^{jet} [GeV]", "d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]", legend, 0.5, 0.7, color, markerstyle, "figure/specturm_uncertainty_mbd_frac.pdf");
0445 h_input.clear();
0446 color.clear();
0447 markerstyle.clear();
0448 legend.clear();
0449 std::cout << std::endl << "Uncertainty from MBD trigger efficiency: " << std::endl << "up\t\t\tdown\t\t\tunc1\t\t\tunc2\t\t\tdijet1\t\t\tdijet2\t\t\tfrac1\t\t\tfrac2" << std::endl;
0450 for (int ib = 1; ib <= h_unfold_calib_nominal->GetNbinsX(); ++ib) {
0451 double unc1_dijet = h_unfold_calib_dijet_mbddown_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0452 double unc2_dijet = h_unfold_calib_dijet_mbdup_reweighted_1->GetBinContent(ib) - h_unfold_calib_dijet_reweighted_1->GetBinContent(ib);
0453 double unc1_frac = h_unfold_calib_frac_mbddown_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0454 double unc2_frac = h_unfold_calib_frac_mbdup_reweighted_1->GetBinContent(ib) - h_unfold_calib_frac_reweighted_1->GetBinContent(ib);
0455 double unc1 = (unc1_dijet + unc1_frac) / 2.;
0456 double unc2 = (unc2_dijet + unc2_frac) / 2.;
0457 if (unc1 > 0) {
0458 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc1 * unc1);
0459 uncertainty_mbdeff_upper_record[ib-1] = TMath::Sqrt(uncertainty_mbdeff_upper_record[ib-1] * uncertainty_mbdeff_upper_record[ib-1] + unc1 * unc1);
0460 } else {
0461 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc1 * unc1);
0462 uncertainty_mbdeff_lower_record[ib-1] = TMath::Sqrt(uncertainty_mbdeff_lower_record[ib-1] * uncertainty_mbdeff_lower_record[ib-1] + unc1 * unc1);
0463 }
0464 if (unc2 > 0) {
0465 uncertainty_other_upper[ib-1] = TMath::Sqrt(uncertainty_other_upper[ib-1] * uncertainty_other_upper[ib-1] + unc2 * unc2);
0466 uncertainty_mbdeff_upper_record[ib-1] = TMath::Sqrt(uncertainty_mbdeff_upper_record[ib-1] * uncertainty_mbdeff_upper_record[ib-1] + unc2 * unc2);
0467 } else {
0468 uncertainty_other_lower[ib-1] = TMath::Sqrt(uncertainty_other_lower[ib-1] * uncertainty_other_lower[ib-1] + unc2 * unc2);
0469 uncertainty_mbdeff_lower_record[ib-1] = TMath::Sqrt(uncertainty_mbdeff_lower_record[ib-1] * uncertainty_mbdeff_lower_record[ib-1] + unc2 * unc2);
0470 }
0471 uncertainty_mbdeff_upper_record[ib-1] = uncertainty_mbdeff_upper_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0472 uncertainty_mbdeff_lower_record[ib-1] = uncertainty_mbdeff_lower_record[ib-1] / h_unfold_calib_nominal->GetBinContent(ib);
0473 std::cout << uncertainty_other_upper[ib-1] << " (" << uncertainty_other_upper[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << uncertainty_other_lower[ib-1] << " (" << uncertainty_other_lower[ib-1] / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0474 std::cout << unc1 << " (" << unc1 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t" << unc2 << " (" << unc2 / h_unfold_calib_nominal->GetBinContent(ib) * 100 << "\%) \t";
0475 std::cout << unc1_dijet << " (" << unc1_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_dijet << " (" << unc2_dijet / h_unfold_calib_dijet_reweighted_1->GetBinContent(ib) * 100 << "\%) \t";
0476 std::cout << unc1_frac << " (" << unc1_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%) \t" << unc2_frac << " (" << unc2_frac / h_unfold_calib_frac_reweighted_1->GetBinContent(ib) * 100 << "\%)" << std::endl;
0477 }
0478
0479
0480 std::cout << std::endl << "Total uncertainty with background cut and unfolding uncertainty: " << std::endl << "nomiY\t\t\tnoup\t\t\tnodown" << std::endl;
0481 for (int ib = 0; ib < calibnpt; ++ib) {
0482 uncertainty_final_upper[ib] = TMath::Sqrt(uncertainty_other_upper[ib] * uncertainty_other_upper[ib] + uncertainty_cut_upper[ib] * uncertainty_cut_upper[ib] + uncertainty_unfold_upper[ib] * uncertainty_unfold_upper[ib]);
0483 uncertainty_final_lower[ib] = TMath::Sqrt(uncertainty_other_lower[ib] * uncertainty_other_lower[ib] + uncertainty_cut_lower[ib] * uncertainty_cut_lower[ib] + uncertainty_unfold_lower[ib] * uncertainty_unfold_lower[ib]);
0484 std::cout << h_unfold_calib_nominal->GetBinContent(ib+1) << " \t\t" << uncertainty_final_upper[ib] << " (" << uncertainty_final_upper[ib] / h_unfold_calib_nominal->GetBinContent(ib+1) * 100 << "\%)\t" << uncertainty_final_lower[ib] << " (" << uncertainty_final_lower[ib] / h_unfold_calib_nominal->GetBinContent(ib+1) * 100 << "\%)" << std::endl;
0485 }
0486
0487 std::cout << std::endl << std::endl;
0488 std::cout << "pT range\td^{2}#sigma/(d#eta dp_{T})\t#delta#sigma_{stat}\t\t#delta#sigma_{sys}^{low}\t#delta#sigma_{sys}^{high}" << std::endl;
0489 std::cout << "[GeV]\t\t[pb/GeV]\t\t\t[pb/GeV]\t\t\t[pb/GeV]\t\t\t[pb/GeV]" << std::endl;
0490 double sampled_N = luminosity * 26.1;
0491 for (int ib = 0; ib < calibnpt; ++ib) {
0492 h_unfold_calib_nominal->SetBinContent(ib+1, h_unfold_calib_nominal->GetBinContent(ib+1) / (float)(sampled_N * delta_eta * h_unfold_calib_nominal->GetBinWidth(ib+1)));
0493 h_unfold_calib_nominal->SetBinError(ib+1, h_unfold_calib_nominal->GetBinError(ib+1) / (float)(sampled_N * delta_eta * h_unfold_calib_nominal->GetBinWidth(ib+1)));
0494 uncertainty_final_upper[ib] = uncertainty_final_upper[ib] / (float)(sampled_N * delta_eta * h_unfold_calib_nominal->GetBinWidth(ib+1)) / (float)h_unfold_calib_nominal->GetBinContent(ib+1);
0495 uncertainty_final_lower[ib] = uncertainty_final_lower[ib] / (float)(sampled_N * delta_eta * h_unfold_calib_nominal->GetBinWidth(ib+1)) / (float)h_unfold_calib_nominal->GetBinContent(ib+1);
0496 h_unfold_calib_nominal->SetBinContent(ib+1, h_unfold_calib_nominal->GetBinContent(ib+1) * 26.1);
0497 h_unfold_calib_nominal->SetBinError(ib+1, h_unfold_calib_nominal->GetBinError(ib+1) * 26.1);
0498 uncertainty_final_upper[ib] = h_unfold_calib_nominal->GetBinContent(ib+1) * TMath::Sqrt(uncertainty_final_upper[ib] * uncertainty_final_upper[ib] + uncertainty_mbd_upper[ib] * uncertainty_mbd_upper[ib]);
0499 uncertainty_final_lower[ib] = h_unfold_calib_nominal->GetBinContent(ib+1) * TMath::Sqrt(uncertainty_final_lower[ib] * uncertainty_final_lower[ib] + uncertainty_mbd_lower[ib] * uncertainty_mbd_lower[ib]);
0500 std::cout << calibptbins[ib] << " - " << calibptbins[ib+1] << " \t" << h_unfold_calib_nominal->GetBinContent(ib+1) << " \t\t\t" << h_unfold_calib_nominal->GetBinError(ib+1) << " (" << h_unfold_calib_nominal->GetBinError(ib+1) / h_unfold_calib_nominal->GetBinContent(ib+1) * 100 << "\%)\t\t" << uncertainty_final_lower[ib] << " (" << uncertainty_final_lower[ib] / h_unfold_calib_nominal->GetBinContent(ib+1) * 100 << "\%)\t\t" << uncertainty_final_upper[ib] << " (" << uncertainty_final_upper[ib] / h_unfold_calib_nominal->GetBinContent(ib+1) * 100 << "\%)" << std::endl;
0501 }
0502
0503
0504
0505 double g_sphenix_x[calibnpt], g_sphenix_xerrdown[calibnpt], g_sphenix_xerrup[calibnpt], g_sphenix_y[calibnpt], g_sphenix_yerrdown[calibnpt], g_sphenix_yerrup[calibnpt], g_sphenix_yerrstat[calibnpt];
0506 for (int ib = 0; ib < calibnpt; ++ ib) {
0507 g_sphenix_x[ib] = (calibptbins[ib] + calibptbins[ib+1]) / 2.;
0508 g_sphenix_xerrdown[ib] = (calibptbins[ib+1] - calibptbins[ib]) / 2.;
0509 g_sphenix_xerrup[ib] = (calibptbins[ib+1] - calibptbins[ib]) / 2.;
0510 g_sphenix_y[ib] = h_unfold_calib_nominal->GetBinContent(ib+1);
0511 g_sphenix_yerrstat[ib] = h_unfold_calib_nominal->GetBinError(ib+1);
0512 g_sphenix_yerrdown[ib] = TMath::Sqrt(g_sphenix_yerrstat[ib]*g_sphenix_yerrstat[ib] + uncertainty_final_lower[ib]*uncertainty_final_lower[ib]);
0513 g_sphenix_yerrup[ib] = TMath::Sqrt(g_sphenix_yerrstat[ib]*g_sphenix_yerrstat[ib] + uncertainty_final_upper[ib]*uncertainty_final_upper[ib]);
0514
0515 uncertainty_stat_upper_record[ib] = g_sphenix_yerrstat[ib] / g_sphenix_y[ib];
0516 uncertainty_stat_lower_record[ib] = g_sphenix_yerrstat[ib] / g_sphenix_y[ib];
0517 uncertainty_total_upper_record[ib] = g_sphenix_yerrup[ib] / g_sphenix_y[ib];
0518 uncertainty_total_lower_record[ib] = g_sphenix_yerrdown[ib] / g_sphenix_y[ib];
0519 }
0520 TGraphAsymmErrors* g_sphenix_result = new TGraphAsymmErrors(calibnpt, g_sphenix_x, g_sphenix_y, g_sphenix_xerrdown, g_sphenix_xerrup, g_sphenix_yerrdown, g_sphenix_yerrup);
0521 g_sphenix_result->SetMarkerStyle(20);
0522 g_sphenix_result->SetMarkerColor(kAzure+2);
0523 g_sphenix_result->SetLineColor(kAzure+2);
0524 g_sphenix_result->SetFillColorAlpha(kAzure + 1, 0.5);
0525 TGraphErrors* g_sphenix_result_point = new TGraphErrors(calibnpt, g_sphenix_x, g_sphenix_y, g_sphenix_xerrdown, g_sphenix_yerrstat);
0526 g_sphenix_result_point->SetMarkerStyle(20);
0527 g_sphenix_result_point->SetMarkerColor(kAzure+2);
0528 g_sphenix_result_point->SetLineColor(kAzure+2);
0529 g_sphenix_result_point->SetLineWidth(2);
0530
0531
0532 TFile *f_sim_specturm = new TFile("output_sim.root", "READ");
0533 TH1D* h_pythia_spectrum_dijet = (TH1D*)f_sim_specturm->Get("h_truth_calib_dijet");
0534 TH1D* h_pythia_spectrum_frac = (TH1D*)f_sim_specturm->Get("h_truth_calib_frac");
0535 TH1D* h_pythia_spectrum = (TH1D*)h_pythia_spectrum_dijet->Clone("h_pythia_spectrum");
0536 h_pythia_spectrum->Add(h_pythia_spectrum_frac);
0537 h_pythia_spectrum->Scale(1. / 2.);
0538 h_pythia_spectrum->Scale(1e+06);
0539 for (int ib = 1; ib <= h_pythia_spectrum->GetNbinsX(); ++ib) {
0540 h_pythia_spectrum->SetBinContent(ib, h_pythia_spectrum->GetBinContent(ib)/ (float)(delta_eta * h_pythia_spectrum->GetBinWidth(ib)));
0541 h_pythia_spectrum->SetBinError(ib, h_pythia_spectrum->GetBinError(ib)/ (float)(delta_eta * h_pythia_spectrum->GetBinWidth(ib)));
0542 }
0543 double g_pythia_x[truthnpt], g_pythia_xerrdown[truthnpt], g_pythia_xerrup[truthnpt], g_pythia_y[truthnpt], g_pythia_yerrdown[truthnpt], g_pythia_yerrup[truthnpt];
0544 for (int ib = 0; ib < truthnpt; ++ib) {
0545 g_pythia_x[ib] = (truthptbins[ib] + truthptbins[ib+1]) / 2;
0546 g_pythia_xerrdown[ib] = (truthptbins[ib+1] - truthptbins[ib]) / 2;
0547 g_pythia_xerrup[ib] = (truthptbins[ib+1] - truthptbins[ib]) / 2;
0548 g_pythia_y[ib] = h_pythia_spectrum->GetBinContent(ib+1);
0549 g_pythia_yerrdown[ib] = h_pythia_spectrum->GetBinError(ib+1);
0550 g_pythia_yerrup[ib] = h_pythia_spectrum->GetBinError(ib+1);
0551 }
0552 TGraphAsymmErrors* g_pythia_result = new TGraphAsymmErrors(truthnpt, g_pythia_x, g_pythia_y, g_pythia_xerrdown, g_pythia_xerrup, g_pythia_yerrdown, g_pythia_yerrup);
0553 g_pythia_result->SetMarkerStyle(20);
0554 g_pythia_result->SetMarkerColor(kOrange);
0555 g_pythia_result->SetLineColor(kOrange);
0556
0557
0558 TH1D* h_pythia_ratio = (TH1D*)h_unfold_calib_nominal->Clone("h_pythia_ratio");
0559 for (int ib = 1; ib <= h_pythia_ratio->GetNbinsX(); ++ib) {
0560 h_pythia_ratio->SetBinContent(ib, h_pythia_spectrum->GetBinContent(ib+n_underflow_bin) / h_pythia_ratio->GetBinContent(ib));
0561 h_pythia_ratio->SetBinError(ib, h_pythia_ratio->GetBinContent(ib) * TMath::Sqrt(TMath::Power(h_pythia_spectrum->GetBinError(ib+n_underflow_bin) / h_pythia_spectrum->GetBinContent(ib+n_underflow_bin), 2) + TMath::Power(h_unfold_calib_nominal->GetBinError(ib) / h_unfold_calib_nominal->GetBinContent(ib), 2)));
0562 }
0563
0564
0565 double starpointxold[] = {8.3, 10.3, 12.6, 15.5, 19.0, 23.4, 28.7, 35.3, 43.3};
0566 const static int starnpointold = sizeof(starpointxold) / sizeof(starpointxold[0]);
0567 double starpointxerrdownold[starnpointold] = {0.7, 1.0, 1.2, 1.4, 1.7, 2.1, 2.5, 3.1, 3.7};
0568 double starpointxerruppld[starnpointold] = {1.0, 1.1, 1.5, 1.8, 2.3, 2.8, 3.5, 4.3, 5.4};
0569 double starpointyold[] = {6.40e+05*2*TMath::Pi(), 2.40e+05*2*TMath::Pi(), 5.90e+04*2*TMath::Pi(), 1.19e+04*2*TMath::Pi(), 3.50e+03*2*TMath::Pi(), 7.80e+02*2*TMath::Pi(), 1.41e+02*2*TMath::Pi(), 2.20e+01*2*TMath::Pi(), 2.60e+00*2*TMath::Pi()};
0570 double starpointyerrdownold[] = {0.90e+05, 0.30e+05, 0.60e+04, 0.10e+04, 0.20e+03, 0.40e+02, 0.09e+02, 0.30e+01, 0.60e+00};
0571 double starpointyerrupold[] = {3.10e+05, 1.10e+05, 2.80e+04, 0.57e+04, 1.70e+03, 0.37e+02, 0.68e+02, 1.10e+01, 1.30e+00};
0572 TGraphAsymmErrors* g_star_result_old = new TGraphAsymmErrors(starnpointold, starpointxold, starpointyold, starpointxerrdownold, starpointxerruppld, starpointyerrdownold, starpointyerrupold);
0573 g_star_result_old->SetMarkerStyle(20);
0574 g_star_result_old->SetMarkerColor(kRed);
0575 g_star_result_old->SetLineColor(kRed);
0576
0577
0578 double starpointx[] = {7.8, 10.4, 13.85, 18.45, 24.6, 32.8, 43.75};
0579 const static int starnpoint = sizeof(starpointx) / sizeof(starpointx[0]);
0580 double starpointxerrdown[starnpoint] = {1.1, 1.5, 1.95, 2.65, 3.5, 4.7, 6.25};
0581 double starpointxerrup[starnpoint] = {1.1, 1.5, 1.95, 2.65, 3.5, 4.7, 6.25};
0582 double starpointy[starnpoint] = {5.655596e+06, 9.684281e+05, 1.603961e+05, 2.641261e+04, 3.391784e+03, 2.871360e+02, 2.178426e+01};
0583 double starpointyerrdown[starnpoint] = {7.270251e+05, 1.409256e+05, 1.897396e+04, 3.829357e+03, 5.537599e+02, 5.478192e+01, 5.218297e+00};
0584 double starpointyerrup[starnpoint] = {7.486261e+05, 1.452015e+05, 1.897113e+04, 4.021414e+03, 5.756504e+02, 6.336199e+01, 5.765260e+00};
0585 TGraphAsymmErrors* g_star_result = new TGraphAsymmErrors(starnpoint, starpointx, starpointy, starpointxerrdown, starpointxerrup, starpointyerrdown, starpointyerrup);
0586 g_star_result->SetMarkerStyle(20);
0587 g_star_result->SetMarkerColor(kRed);
0588 g_star_result->SetLineColor(kRed);
0589
0590
0591 double phenixpointx[] = {8.45355, 9.45319, 10.8252, 13.0123, 15.7055, 18.739, 22.0908, 26.2576, 31.1771, 37.4739};
0592 const static int phenixnpoint = sizeof(phenixpointx) / sizeof(phenixpointx[0]);
0593 double phenixpointxerrdown[phenixnpoint] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
0594 double phenixpointxerrup[phenixnpoint] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
0595 double phenixpointy[phenixnpoint] = {5.86972e+05, 2.99829e+05, 1.3335e+05, 4.07571e+04, 1.24647e+04, 4.28294e+03, 1.39962e+03, 4.11469e+02, 1.01631e+02, 2.49519e+01};
0596 double phenixpointysysdown[phenixnpoint] = {2.32513e+05, 1.08448e+05, 4.80741e+04, 1.44942e+04, 4.19428e+03, 1.21361e+03, 3.87209e+02, 9.41715e+01, 1.20866e+01, 1.06009};
0597 double phenixpointysysup[phenixnpoint] = {1.90074e+05, 9.64104e+04, 4.43763e+04, 1.42428e+04, 4.28854e+03, 1.30758e+03, 4.68572e+02, 1.15733e+02, 1.5672e+01, 2.62781};
0598 double phenixpointystat[phenixnpoint] = {3.5247e+03, 2.16461e+03, 1.15278e+03, 4.6706e+02, 1.86848e+02, 1.04529e+02, 4.38652e+01, 2.17658e+01, 9.3723, 4.46448};
0599 double phenixpointyerrdown[phenixnpoint];
0600 double phenixpointyerrup[phenixnpoint];
0601 for (int i = 0; i < phenixnpoint; ++i) {
0602 phenixpointyerrdown[i] = TMath::Sqrt(phenixpointystat[i]*phenixpointystat[i] + phenixpointysysdown[i]*phenixpointysysdown[i]);
0603 phenixpointyerrup[i] = TMath::Sqrt(phenixpointystat[i]*phenixpointystat[i] + phenixpointysysup[i]*phenixpointysysup[i]);
0604 }
0605 TGraphAsymmErrors* g_phenix_result = new TGraphAsymmErrors(phenixnpoint, phenixpointx, phenixpointy, phenixpointxerrdown, phenixpointxerrup, phenixpointyerrdown, phenixpointyerrup);
0606 g_phenix_result->SetMarkerStyle(20);
0607 g_phenix_result->SetMarkerColor(kBlue);
0608 g_phenix_result->SetLineColor(kBlue);
0609
0610
0611 ifstream myfile1, myfile05, myfile2;
0612 TGraph *tjet = new TGraph();
0613 TGraph *tjet05 = new TGraph();
0614 TGraph *tjet2 = new TGraph();
0615 double scalefactor = 2.0 * 3.14159;
0616 myfile1.open("sphenix_nlo/sPhenix-sc1.dat");
0617 myfile05.open("sphenix_nlo/sPhenix-sc05.dat");
0618 myfile2.open("sphenix_nlo/sPhenix-sc2.dat");
0619 double drop1, drop2, drop3, pt1, yield1, pt05, yield05, pt2, yield2;
0620 for (int index=0; index<66; index++) {
0621 myfile1 >> drop1 >> drop2 >> drop3 >> pt1 >> yield1;
0622 yield1 = yield1 * scalefactor * pt1;
0623 tjet->SetPoint(index, pt1, yield1);
0624
0625 myfile05 >> drop1 >> drop2 >> drop3 >> pt05 >> yield05;
0626 yield05 = yield05 * scalefactor * pt05;
0627 tjet05->SetPoint(index, pt05, yield05);
0628
0629 myfile2 >> drop1 >> drop2 >> drop3 >> pt2 >> yield2;
0630 yield2 = yield2 * scalefactor * pt2;
0631 tjet2->SetPoint(index, pt2, yield2);
0632 }
0633 myfile1.close();
0634 myfile05.close();
0635 myfile2.close();
0636 tjet->SetMarkerStyle(21);
0637 tjet->SetMarkerColor(2);
0638 tjet->SetLineColor(2);
0639 tjet05->SetMarkerStyle(21);
0640 tjet05->SetMarkerColor(2);
0641 tjet05->SetLineColor(2);
0642 tjet2->SetMarkerStyle(21);
0643 tjet2->SetMarkerColor(2);
0644 tjet2->SetLineColor(2);
0645
0646 TCanvas *can_nlo = new TCanvas("can_nlo", "", 850, 800);
0647 gStyle->SetPalette(57);
0648 can_nlo->SetTopMargin(0.03);
0649 can_nlo->SetLeftMargin(0.15);
0650 can_nlo->SetBottomMargin(0.12);
0651 can_nlo->SetRightMargin(0.05);
0652 can_nlo->SetLogy();
0653 TH2F *frame = new TH2F("frame", "", 10, 15, 72, 10, 1e-03, 2e+05);
0654 frame->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0655 frame->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0656 frame->GetXaxis()->SetTitleOffset(0.98);
0657 frame->GetYaxis()->SetTitleOffset(1.15);
0658 frame->GetXaxis()->SetLabelSize(0.045);
0659 frame->GetYaxis()->SetLabelSize(0.045);
0660 frame->GetXaxis()->CenterTitle();
0661 frame->GetYaxis()->CenterTitle();
0662 frame->Draw();
0663 g_sphenix_result->SetMarkerStyle(20);
0664 g_sphenix_result->SetMarkerColor(kAzure+2);
0665 g_sphenix_result->SetLineColor(kAzure+2);
0666 g_sphenix_result->SetFillColorAlpha(kAzure + 1, 0.5);
0667 g_sphenix_result->Draw("2 same");
0668 g_sphenix_result_point->SetMarkerStyle(20);
0669 g_sphenix_result_point->SetMarkerColor(kAzure+2);
0670 g_sphenix_result_point->SetLineColor(kAzure+2);
0671 g_sphenix_result_point->SetLineWidth(2);
0672 g_sphenix_result_point->Draw("P same");
0673 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0674 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0675 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0676 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0677 TLegend *leg = new TLegend(0.2, 0.2, 0.55, 0.28);
0678 leg->SetBorderSize(0);
0679 leg->SetFillStyle(0);
0680 leg->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0681 leg->AddEntry(tjet, "NLO pQCD", "pl");
0682 leg->Draw();
0683 tjet->Draw("pl same");
0684 tjet05->Draw("l same");
0685 tjet2->Draw("l same");
0686 can_nlo->SaveAs("figure/spectrum_calib_nlo.pdf");
0687
0688 TCanvas *can_sphenix = new TCanvas("can_sphenix", "", 850, 800);
0689 gStyle->SetPalette(57);
0690 can_sphenix->SetTopMargin(0.03);
0691 can_sphenix->SetLeftMargin(0.15);
0692 can_sphenix->SetBottomMargin(0.12);
0693 can_sphenix->SetRightMargin(0.05);
0694 can_sphenix->SetLogy();
0695 TH2F *frame_sphenix = new TH2F("frame_sphenix", "", 10, 15, 72, 10, 1e-03, 2e+05);
0696 frame_sphenix->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0697 frame_sphenix->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0698 frame_sphenix->GetXaxis()->SetTitleOffset(0.98);
0699 frame_sphenix->GetYaxis()->SetTitleOffset(1.15);
0700 frame_sphenix->GetXaxis()->SetLabelSize(0.045);
0701 frame_sphenix->GetYaxis()->SetLabelSize(0.045);
0702 frame_sphenix->GetXaxis()->CenterTitle();
0703 frame_sphenix->GetYaxis()->CenterTitle();
0704 frame_sphenix->Draw();
0705 g_sphenix_result->Draw("2 same");
0706 g_sphenix_result_point->Draw("P same");
0707 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0708 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0709 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0710 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0711 TLegend *leg_sphenix = new TLegend(0.2, 0.2, 0.7, 0.26);
0712 leg_sphenix->SetBorderSize(0);
0713 leg_sphenix->SetFillStyle(0);
0714 leg_sphenix->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0715 leg_sphenix->Draw();
0716 can_sphenix->SaveAs("figure/spectrum_calib_sphenix.pdf");
0717
0718 TCanvas *can_data = new TCanvas("can_data", "", 850, 800);
0719 gStyle->SetPalette(57);
0720 can_data->SetTopMargin(0.03);
0721 can_data->SetLeftMargin(0.15);
0722 can_data->SetBottomMargin(0.12);
0723 can_data->SetRightMargin(0.05);
0724 can_data->SetLogy();
0725 TH2F *frame_data = new TH2F("frame_data", "", 10, 15, 72, 10, 1e-03, 2e+05);
0726 frame_data->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0727 frame_data->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0728 frame_data->GetXaxis()->SetTitleOffset(0.98);
0729 frame_data->GetYaxis()->SetTitleOffset(1.15);
0730 frame_data->GetXaxis()->SetLabelSize(0.045);
0731 frame_data->GetYaxis()->SetLabelSize(0.045);
0732 frame_data->GetXaxis()->CenterTitle();
0733 frame_data->GetYaxis()->CenterTitle();
0734 frame_data->Draw();
0735 g_sphenix_result->Draw("2 same");
0736 g_sphenix_result_point->Draw("P same");
0737 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0738 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0739 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0740 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0741 TLegend *leg_data = new TLegend(0.2, 0.2, 0.7, 0.32);
0742 leg_data->SetBorderSize(0);
0743 leg_data->SetFillStyle(0);
0744 leg_data->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0745 leg_data->AddEntry(g_star_result, "STAR Run 2012 Preliminary, anti-k_{T} R=0.6", "pl");
0746 leg_data->AddEntry(g_phenix_result, "PHENIX Run12+15, anti-k_{T} R=0.3", "pl");
0747 leg_data->Draw();
0748 g_star_result->Draw("p same");
0749 g_phenix_result->Draw("p same");
0750 can_data->SaveAs("figure/spectrum_calib_datacompare.pdf");
0751
0752 TCanvas *can_dataold = new TCanvas("can_dataold", "", 850, 800);
0753 gStyle->SetPalette(57);
0754 can_dataold->SetTopMargin(0.03);
0755 can_dataold->SetLeftMargin(0.15);
0756 can_dataold->SetBottomMargin(0.12);
0757 can_dataold->SetRightMargin(0.05);
0758 can_dataold->SetLogy();
0759 TH2F *frame_dataold = new TH2F("frame_dataold", "", 10, 15, 72, 10, 1e-03, 2e+05);
0760 frame_dataold->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0761 frame_dataold->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0762 frame_dataold->GetXaxis()->SetTitleOffset(0.98);
0763 frame_dataold->GetYaxis()->SetTitleOffset(1.15);
0764 frame_dataold->GetXaxis()->SetLabelSize(0.045);
0765 frame_dataold->GetYaxis()->SetLabelSize(0.045);
0766 frame_dataold->GetXaxis()->CenterTitle();
0767 frame_dataold->GetYaxis()->CenterTitle();
0768 frame_dataold->Draw();
0769 g_sphenix_result->Draw("2 same");
0770 g_sphenix_result_point->Draw("P same");
0771 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0772 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0773 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0774 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0775 TLegend *leg_dataold = new TLegend(0.2, 0.2, 0.7, 0.32);
0776 leg_dataold->SetBorderSize(0);
0777 leg_dataold->SetFillStyle(0);
0778 leg_dataold->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0779 leg_dataold->AddEntry(g_star_result_old, "STAR Midpoint Cone#it{R}=0.4 (Combined HT)", "pl");
0780 leg_dataold->AddEntry(g_phenix_result, "PHENIX Run12+15, anti-k_{T} R=0.3", "pl");
0781 leg_dataold->Draw();
0782 g_star_result_old->Draw("p same");
0783 g_phenix_result->Draw("p same");
0784 can_dataold->SaveAs("figure/spectrum_calib_datacompareold.pdf");
0785
0786 TCanvas *can_sim = new TCanvas("can_sim", "", 850, 800);
0787 gStyle->SetPalette(57);
0788 can_sim->SetTopMargin(0.03);
0789 can_sim->SetLeftMargin(0.15);
0790 can_sim->SetBottomMargin(0.12);
0791 can_sim->SetRightMargin(0.05);
0792 can_sim->SetLogy();
0793 TH2F *frame_sim = new TH2F("frame_sim", "", 10, 15, 72, 10, 1e-03, 2e+05);
0794 frame_sim->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0795 frame_sim->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0796 frame_sim->GetXaxis()->SetTitleOffset(0.98);
0797 frame_sim->GetYaxis()->SetTitleOffset(1.15);
0798 frame_sim->GetXaxis()->SetLabelSize(0.045);
0799 frame_sim->GetYaxis()->SetLabelSize(0.045);
0800 frame_sim->GetXaxis()->CenterTitle();
0801 frame_sim->GetYaxis()->CenterTitle();
0802 frame_sim->Draw();
0803 g_sphenix_result->Draw("2 same");
0804 g_sphenix_result_point->Draw("P same");
0805 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0806 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0807 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0808 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0809 TLegend *leg_sim = new TLegend(0.2, 0.2, 0.55, 0.28);
0810 leg_sim->SetBorderSize(0);
0811 leg_sim->SetFillStyle(0);
0812 leg_sim->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0813 leg_sim->AddEntry(g_pythia_result, "PYTHIA8 truth jet spectrum", "pl");
0814 leg_sim->Draw();
0815 g_pythia_result->Draw("p same");
0816 can_sim->SaveAs("figure/spectrum_calib_simcompare.pdf");
0817
0818 TCanvas *can_simnlo = new TCanvas("can_simnlo", "", 850, 800);
0819 gStyle->SetPalette(57);
0820 can_simnlo->SetTopMargin(0.03);
0821 can_simnlo->SetLeftMargin(0.15);
0822 can_simnlo->SetBottomMargin(0.12);
0823 can_simnlo->SetRightMargin(0.05);
0824 can_simnlo->SetLogy();
0825 TH2F *frame_simnlo = new TH2F("frame_simnlo", "", 10, 15, 72, 10, 1e-03, 2e+05);
0826 frame_simnlo->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0827 frame_simnlo->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0828 frame_simnlo->GetXaxis()->SetTitleOffset(0.98);
0829 frame_simnlo->GetYaxis()->SetTitleOffset(1.15);
0830 frame_simnlo->GetXaxis()->SetLabelSize(0.045);
0831 frame_simnlo->GetYaxis()->SetLabelSize(0.045);
0832 frame_simnlo->GetXaxis()->CenterTitle();
0833 frame_simnlo->GetYaxis()->CenterTitle();
0834 frame_simnlo->Draw();
0835 g_sphenix_result->Draw("2 same");
0836 g_sphenix_result_point->Draw("P same");
0837 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0838 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0839 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0840 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0841 TLegend *leg_simnlo = new TLegend(0.2, 0.2, 0.55, 0.28);
0842 leg_simnlo->SetBorderSize(0);
0843 leg_simnlo->SetFillStyle(0);
0844 leg_simnlo->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0845 leg_simnlo->AddEntry(g_pythia_result, "PYTHIA8 truth jet spectrum", "pl");
0846 leg_simnlo->AddEntry(tjet, "NLO pQCD", "pl");
0847 leg_simnlo->Draw();
0848 g_pythia_result->Draw("p same");
0849 tjet->Draw("pl same");
0850 tjet05->Draw("l same");
0851 tjet2->Draw("l same");
0852 can_simnlo->SaveAs("figure/spectrum_calib_simnlocompare.pdf");
0853
0854 TCanvas *can_simratio = new TCanvas("can_simratio", "", 850, 1200);
0855 can_simratio->Divide(1, 2);
0856 gStyle->SetPalette(57);
0857 TPad *pad_1 = (TPad*)can_simratio->cd(1);
0858 pad_1->SetPad(0, 0.33333, 1, 1);
0859 pad_1->SetTopMargin(0.03);
0860 pad_1->SetLeftMargin(0.13);
0861 pad_1->SetBottomMargin(0.035);
0862 pad_1->SetRightMargin(0.08);
0863 pad_1->SetLogy();
0864 TH2F *frame_simratio = new TH2F("frame_simratio", "", 10, 15, 72, 10, 1e-03, 2e+05);
0865 frame_simratio->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0866 frame_simratio->GetYaxis()->SetTitle("d^{2}#sigma/(d#eta dp_{T}) [pb/GeV]");
0867 frame_simratio->GetXaxis()->SetTitleOffset(0.98);
0868 frame_simratio->GetYaxis()->SetTitleOffset(1.15);
0869 frame_simratio->GetXaxis()->SetLabelSize(0.045);
0870 frame_simratio->GetYaxis()->SetLabelSize(0.045);
0871 frame_simratio->GetXaxis()->SetLabelOffset(2);
0872 frame_simratio->GetXaxis()->CenterTitle();
0873 frame_simratio->GetYaxis()->CenterTitle();
0874 frame_simratio->Draw();
0875 g_sphenix_result->Draw("2 same");
0876 g_sphenix_result_point->Draw("P same");
0877 myText(0.4, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0878 myText(0.4, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0879 myText(0.4, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0880 myText(0.4, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
0881 TLegend *leg_simratio = new TLegend(0.2, 0.2, 0.55, 0.28);
0882 leg_simratio->SetBorderSize(0);
0883 leg_simratio->SetFillStyle(0);
0884 leg_simratio->AddEntry(g_sphenix_result, "sPHENIX Run 2024 data", "pf");
0885 leg_simratio->AddEntry(g_pythia_result, "PYTHIA8 truth jet spectrum", "pl");
0886 leg_simratio->Draw();
0887 g_pythia_result->Draw("p same");
0888 TPad *pad_2 = (TPad*)can_simratio->cd(2);
0889 pad_2->SetPad(0, 0, 1, 0.333333);
0890 pad_2->SetTopMargin(0.02);
0891 pad_2->SetLeftMargin(0.13);
0892 pad_2->SetBottomMargin(0.25);
0893 pad_2->SetRightMargin(0.08);
0894 TH2F *frame_ratio = new TH2F("frame_ratio", "", 10, 15, 72, 2, 0.6, 1.7);
0895 frame_ratio->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0896 frame_ratio->GetYaxis()->SetTitle("PYTHIA8/Data");
0897 frame_ratio->GetXaxis()->SetTitleOffset(0.98);
0898 frame_ratio->GetYaxis()->SetTitleOffset(0.5);
0899 frame_ratio->GetXaxis()->SetLabelSize(0.045);
0900 frame_ratio->GetYaxis()->SetLabelSize(0.045);
0901 frame_ratio->GetXaxis()->CenterTitle();
0902 frame_ratio->GetYaxis()->CenterTitle();
0903 frame_ratio->GetYaxis()->SetTitleOffset(frame_simratio->GetYaxis()->GetTitleOffset()*1/2.);
0904 frame_ratio->GetYaxis()->SetLabelOffset(frame_simratio->GetYaxis()->GetLabelOffset()*1/2.);
0905 frame_ratio->GetXaxis()->SetLabelSize(frame_simratio->GetXaxis()->GetLabelSize()*2);
0906 frame_ratio->GetYaxis()->SetLabelSize(frame_simratio->GetYaxis()->GetLabelSize()*2);
0907 frame_ratio->GetXaxis()->SetTitleSize(frame_simratio->GetXaxis()->GetTitleSize()*2);
0908 frame_ratio->GetYaxis()->SetTitleSize(frame_simratio->GetYaxis()->GetTitleSize()*2);
0909 frame_ratio->Draw();
0910 h_pythia_ratio->SetMarkerStyle(20);
0911 h_pythia_ratio->SetMarkerColor(kBlack);
0912 h_pythia_ratio->Draw("P same");
0913 can_simratio->SaveAs("figure/spectrum_calib_simratio.pdf");
0914
0915
0916 TH1D* h_uncertainty_unfold_upper = new TH1D("h_uncertainty_unfold_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_unfold_lower = new TH1D("h_uncertainty_unfold_lower", "", calibnpt, calibptbins);
0917 TH1D* h_uncertainty_cut_upper = new TH1D("h_uncertainty_cut_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_cut_lower = new TH1D("h_uncertainty_cut_lower", "", calibnpt, calibptbins);
0918 TH1D* h_uncertainty_jes_upper = new TH1D("h_uncertainty_jes_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_jes_lower = new TH1D("h_uncertainty_jes_lower", "", calibnpt, calibptbins);
0919 TH1D* h_uncertainty_jer_upper = new TH1D("h_uncertainty_jer_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_jer_lower = new TH1D("h_uncertainty_jer_lower", "", calibnpt, calibptbins);
0920 TH1D* h_uncertainty_jeteff_upper = new TH1D("h_uncertainty_jeteff_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_jeteff_lower = new TH1D("h_uncertainty_jeteff_lower", "", calibnpt, calibptbins);
0921 TH1D* h_uncertainty_mbdeff_upper = new TH1D("h_uncertainty_mbdeff_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_mbdeff_lower = new TH1D("h_uncertainty_mbdeff_lower", "", calibnpt, calibptbins);
0922 TH1D* h_uncertainty_mbdcs_upper = new TH1D("h_uncertainty_mbdcs_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_mbdcs_lower = new TH1D("h_uncertainty_mbdcs_lower", "", calibnpt, calibptbins);
0923 TH1D* h_uncertainty_stat_upper = new TH1D("h_uncertainty_stat_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_stat_lower = new TH1D("h_uncertainty_stat_lower", "", calibnpt, calibptbins);
0924 TH1D* h_uncertainty_total_upper = new TH1D("h_uncertainty_total_upper", "", calibnpt, calibptbins); TH1D* h_uncertainty_total_lower = new TH1D("h_uncertainty_total_lower", "", calibnpt, calibptbins);
0925 for (int ib = 1; ib <= h_uncertainty_cut_upper->GetNbinsX(); ++ib) {
0926 h_uncertainty_unfold_upper->SetBinContent(ib, uncertainty_unfold_upper_record[ib-1]);
0927 h_uncertainty_unfold_lower->SetBinContent(ib, -uncertainty_unfold_lower_record[ib-1]);
0928 h_uncertainty_cut_upper->SetBinContent(ib, uncertainty_cut_upper_record[ib-1]);
0929 h_uncertainty_cut_lower->SetBinContent(ib, -uncertainty_cut_lower_record[ib-1]);
0930 h_uncertainty_jes_upper->SetBinContent(ib, uncertainty_jes_upper_record[ib-1]);
0931 h_uncertainty_jes_lower->SetBinContent(ib, -uncertainty_jes_lower_record[ib-1]);
0932 h_uncertainty_jer_upper->SetBinContent(ib, uncertainty_jer_upper_record[ib-1]);
0933 h_uncertainty_jer_lower->SetBinContent(ib, -uncertainty_jer_lower_record[ib-1]);
0934 h_uncertainty_jeteff_upper->SetBinContent(ib, uncertainty_jeteff_upper_record[ib-1]);
0935 h_uncertainty_jeteff_lower->SetBinContent(ib, -uncertainty_jeteff_lower_record[ib-1]);
0936 h_uncertainty_mbdeff_upper->SetBinContent(ib, uncertainty_mbdeff_upper_record[ib-1]);
0937 h_uncertainty_mbdeff_lower->SetBinContent(ib, -uncertainty_mbdeff_lower_record[ib-1]);
0938 h_uncertainty_mbdcs_upper->SetBinContent(ib, uncertainty_mbdcs_upper_record[ib-1]);
0939 h_uncertainty_mbdcs_lower->SetBinContent(ib, -uncertainty_mbdcs_lower_record[ib-1]);
0940 h_uncertainty_stat_upper->SetBinContent(ib, uncertainty_stat_upper_record[ib-1]);
0941 h_uncertainty_stat_lower->SetBinContent(ib, -uncertainty_stat_lower_record[ib-1]);
0942 h_uncertainty_total_upper->SetBinContent(ib, uncertainty_total_upper_record[ib-1]);
0943 h_uncertainty_total_lower->SetBinContent(ib, -uncertainty_total_lower_record[ib-1]);
0944 }
0945 TCanvas *can_unc = new TCanvas("can_unc", "", 850, 800);
0946 gStyle->SetPalette(57);
0947 can_unc->SetTopMargin(0.03);
0948 can_unc->SetLeftMargin(0.15);
0949 can_unc->SetBottomMargin(0.12);
0950 can_unc->SetRightMargin(0.05);
0951 TH2F *frame_unc = new TH2F("frame_unc", "", 10, 15, 72, 2, -1.5, 1.5);
0952 frame_unc->GetXaxis()->SetTitle("p_{T}^{jet} [GeV]");
0953 frame_unc->GetYaxis()->SetTitle("Relative Uncertainty");
0954 frame_unc->GetXaxis()->SetTitleOffset(0.98);
0955 frame_unc->GetYaxis()->SetTitleOffset(1.17);
0956 frame_unc->GetXaxis()->SetLabelSize(0.045);
0957 frame_unc->GetYaxis()->SetLabelSize(0.045);
0958 frame_unc->GetXaxis()->CenterTitle();
0959 frame_unc->GetYaxis()->CenterTitle();
0960 frame_unc->Draw();
0961 h_uncertainty_unfold_upper->SetLineColor(kYellow+1); h_uncertainty_unfold_lower->SetLineColor(kYellow+1); h_uncertainty_unfold_upper->Draw("hist same"); h_uncertainty_unfold_lower->Draw("hist same");
0962 h_uncertainty_cut_upper->SetLineColor(kAzure+2); h_uncertainty_cut_lower->SetLineColor(kAzure+2); h_uncertainty_cut_upper->Draw("hist same"); h_uncertainty_cut_lower->Draw("hist same");
0963 h_uncertainty_jes_upper->SetLineColor(kGreen+2); h_uncertainty_jes_lower->SetLineColor(kGreen+2); h_uncertainty_jes_upper->Draw("hist same"); h_uncertainty_jes_lower->Draw("hist same");
0964 h_uncertainty_jer_upper->SetLineColor(kMagenta); h_uncertainty_jer_lower->SetLineColor(kMagenta); h_uncertainty_jer_upper->Draw("hist same"); h_uncertainty_jer_lower->Draw("hist same");
0965 h_uncertainty_jeteff_upper->SetLineColor(kOrange+1); h_uncertainty_jeteff_lower->SetLineColor(kOrange+1); h_uncertainty_jeteff_upper->Draw("hist same"); h_uncertainty_jeteff_lower->Draw("hist same");
0966 h_uncertainty_mbdeff_upper->SetLineColor(kRed); h_uncertainty_mbdeff_lower->SetLineColor(kRed); h_uncertainty_mbdeff_upper->Draw("hist same"); h_uncertainty_mbdeff_lower->Draw("hist same");
0967 h_uncertainty_mbdcs_upper->SetLineColor(kCyan); h_uncertainty_mbdcs_lower->SetLineColor(kCyan); h_uncertainty_mbdcs_upper->Draw("hist same"); h_uncertainty_mbdcs_lower->Draw("hist same");
0968 h_uncertainty_stat_upper->SetLineColor(kViolet-1); h_uncertainty_stat_lower->SetLineColor(kViolet-1); h_uncertainty_stat_upper->Draw("hist same"); h_uncertainty_stat_lower->Draw("hist same");
0969 h_uncertainty_total_upper->SetLineColor(kBlack); h_uncertainty_total_lower->SetLineColor(kBlack);
0970 h_uncertainty_total_upper->SetMarkerStyle(20); h_uncertainty_total_lower->SetMarkerStyle(20);
0971 h_uncertainty_total_upper->Draw("p same"); h_uncertainty_total_lower->Draw("p same");
0972 myText(0.17, 0.92, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
0973 myText(0.17, 0.87, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
0974 myText(0.17, 0.82, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
0975 myText(0.17, 0.77, 1, "|#eta^{jet}| < 0.7", 0.04);
0976 TLegend *leg_unc1 = new TLegend(0.155, 0.15, 0.5, 0.34);
0977 leg_unc1->SetBorderSize(0);
0978 leg_unc1->SetFillStyle(0);
0979 leg_unc1->AddEntry(h_uncertainty_unfold_upper, "Unfolding", "l");
0980 leg_unc1->AddEntry(h_uncertainty_cut_upper, "Background Cut", "l");
0981 leg_unc1->AddEntry(h_uncertainty_jes_upper, "Jet Energy Scale", "l");
0982 leg_unc1->AddEntry(h_uncertainty_jer_upper, "Jet Energy Resolution", "l");
0983 leg_unc1->AddEntry(h_uncertainty_jeteff_upper, "Jet Efficiency", "l");
0984 leg_unc1->Draw();
0985 TLegend *leg_unc2 = new TLegend(0.505, 0.15, 0.85, 0.30);
0986 leg_unc2->SetBorderSize(0);
0987 leg_unc2->SetFillStyle(0);
0988 leg_unc2->AddEntry(h_uncertainty_mbdeff_upper, "MBD Efficiency", "l");
0989 leg_unc2->AddEntry(h_uncertainty_mbdcs_upper, "MBD Cross Section", "l");
0990 leg_unc2->AddEntry(h_uncertainty_stat_upper, "Statistical", "l");
0991 leg_unc2->AddEntry(h_uncertainty_total_upper, "Total Systematic", "p");
0992 leg_unc2->Draw();
0993 TLine *line = new TLine(15, 0, 72, 0);
0994 line->SetLineStyle(10);
0995 line->Draw("same");
0996 can_unc->SaveAs("figure/spectrum_uncertainty.pdf");
0997 }
0998
0999 void draw_1D_multiple_plot_uncertainty(std::vector<TH1F*> h_input, float x_min, float x_max, float ratio_min, float ratio_max, std::string xtitle, std::string ytitle, std::vector<std::string> legend, float xstart_legend, float ystart_legend, std::vector<int> color, std::vector<int> markerstyle, std::string output_name) {
1000 if (h_input.size() <= 1) {
1001 std::cout << "Error: no enough input histograms for draw_1D_multiple_plot" << std::endl;
1002 return;
1003 }
1004 std::vector<TH1F*> h;
1005 for (int i = 0; i < h_input.size(); ++i) {
1006 h.push_back((TH1F*)h_input[i]->Clone(Form("h_%d", i)));
1007 }
1008 TCanvas *can = new TCanvas("can", "", 800, 889);
1009 can->Divide(1, 2);
1010 gStyle->SetPalette(57);
1011 TPad *pad_1 = (TPad*)can->cd(1);
1012 pad_1->SetPad(0, 0.4, 1, 1);
1013 pad_1->SetTopMargin(0.03);
1014 pad_1->SetLeftMargin(0.13);
1015 pad_1->SetBottomMargin(0.035);
1016 pad_1->SetRightMargin(0.08);
1017 pad_1->SetLogy();
1018 for (int ih = 0; ih < h.size(); ++ih) {
1019 h.at(ih)->SetMarkerStyle(markerstyle.at(ih));
1020 h.at(ih)->SetMarkerColor(color.at(ih));
1021 h.at(ih)->SetLineColor(color.at(ih));
1022 for (int ib = 1; ib <= h.at(1)->GetNbinsX(); ++ib) {
1023 h.at(ih)->SetBinContent(ib, h.at(ih)->GetBinContent(ib)/ (float)(luminosity * delta_eta * h.at(ih)->GetBinWidth(ib)));
1024 h.at(ih)->SetBinError(ib, h.at(ih)->GetBinError(ib)/ (float)(luminosity * delta_eta * h.at(ih)->GetBinWidth(ib)));
1025 }
1026 }
1027 h.at(0)->GetXaxis()->SetTitle(xtitle.c_str());
1028 h.at(0)->GetYaxis()->SetTitle(ytitle.c_str());
1029 h.at(0)->GetXaxis()->SetRangeUser(x_min, x_max);
1030 h.at(0)->GetXaxis()->SetTitleOffset(0.98);
1031 h.at(0)->GetYaxis()->SetTitleOffset(1.15);
1032 h.at(0)->GetXaxis()->SetLabelSize(0.045);
1033 h.at(0)->GetYaxis()->SetLabelSize(0.045);
1034 h.at(0)->GetXaxis()->SetLabelOffset(2);
1035 h.at(0)->GetXaxis()->CenterTitle();
1036 h.at(0)->GetYaxis()->CenterTitle();
1037 h.at(0)->Draw();
1038 for (int i = 0; i < h.size(); ++i) {
1039 if (i == 0) continue;
1040 h.at(i)->Draw("same");
1041 }
1042
1043 myText(0.47, 0.9, 1, "#bf{#it{sPHENIX}} Internal", 0.04);
1044 myText(0.47, 0.85, 1, "p+p#sqrt{s} = 200 GeV,#scale[0.5]{#int}#kern[-0.1]{#it{L}}dt = 14.93pb^{-1}", 0.04);
1045 myText(0.47, 0.8, 1, "anti-k_{T}#it{R} = 0.4", 0.04);
1046 myText(0.47, 0.75, 1, "|#eta^{jet}| < 0.7", 0.04);
1047 for (int i = 0; i < legend.size(); i++) {
1048 myMarkerLineText(xstart_legend, ystart_legend-i*0.05, 1, color.at(i), markerstyle.at(i), color.at(i), 1, legend.at(i).c_str(), 0.04, true);
1049 }
1050
1051 TPad *pad_2 = (TPad*)can->cd(2);
1052 pad_2->SetPad(0, 0, 1, 0.4);
1053 pad_2->SetTopMargin(0.02);
1054 pad_2->SetLeftMargin(0.13);
1055 pad_2->SetBottomMargin(0.25);
1056 pad_2->SetRightMargin(0.08);
1057 std::vector<TH1F*> h_ratio;
1058 for (int i = 0; i < h.size()-1; ++i) {
1059 TH1F *h_temp = (TH1F*)h.at(i+1)->Clone(Form("h_ratio_%d", i));
1060 h_temp->Divide(h.at(0));
1061 h_ratio.push_back(h_temp);
1062 h_ratio.at(i)->SetMarkerStyle(markerstyle.at(i+1));
1063 h_ratio.at(i)->SetMarkerColor(color.at(i+1));
1064 h_ratio.at(i)->SetLineColor(color.at(i+1));
1065 }
1066 h_ratio.at(0)->GetXaxis()->SetTitle(xtitle.c_str());
1067 h_ratio.at(0)->GetYaxis()->SetTitle("Ratio");
1068 h_ratio.at(0)->GetXaxis()->SetRangeUser(x_min, x_max);
1069 h_ratio.at(0)->GetYaxis()->SetRangeUser(ratio_min, ratio_max);
1070 h_ratio.at(0)->GetXaxis()->CenterTitle();
1071 h_ratio.at(0)->GetYaxis()->CenterTitle();
1072 h_ratio.at(0)->GetYaxis()->SetTitleOffset(h.at(0)->GetYaxis()->GetTitleOffset()*4/6.);
1073 h_ratio.at(0)->GetYaxis()->SetLabelOffset(h.at(0)->GetYaxis()->GetLabelOffset()*4/6.);
1074 h_ratio.at(0)->GetXaxis()->SetLabelSize(h.at(0)->GetXaxis()->GetLabelSize()*6/4.);
1075 h_ratio.at(0)->GetYaxis()->SetLabelSize(h.at(0)->GetYaxis()->GetLabelSize()*6/4.);
1076 h_ratio.at(0)->GetXaxis()->SetTitleSize(h.at(0)->GetXaxis()->GetTitleSize()*6/4.);
1077 h_ratio.at(0)->GetYaxis()->SetTitleSize(h.at(0)->GetYaxis()->GetTitleSize()*6/4.);
1078 h_ratio.at(0)->Draw();
1079 for (int i = 0; i < h_ratio.size(); ++i) {
1080 if (i == 0) continue;
1081 h_ratio.at(i)->Draw("same");
1082 }
1083
1084 TLine *line;
1085 line = new TLine(x_min, 1, x_max, 1);
1086 line->SetLineColor(kBlack);
1087 line->SetLineStyle(3);
1088 line->Draw("same");
1089
1090 can->SaveAs(output_name.c_str());
1091 delete can;
1092 }