File indexing completed on 2025-12-18 09:16:48
0001 #include <string>
0002 #include <TString.h>
0003 #include <TFile.h>
0004 #include <TH2F.h>
0005 #include <TH1F.h>
0006 #include <TF1.h>
0007 #include <TCanvas.h>
0008 #include <TGraphAsymmErrors.h>
0009 #include <TProfile.h>
0010 #include <TLine.h>
0011
0012 void extractLevelingPar()
0013 {
0014 string input_5GeV = "/sphenix/user/xusun/TestBeam/ShowerCalibAna/Proto4ShowerInfoRAW_1087.root";
0015 TFile *File_5GeV = TFile::Open(input_5GeV.c_str());
0016 TH2F *h_mAsymmEnergy_pion_5GeV = (TH2F*)File_5GeV->Get("h_mAsymmEnergy_pion_balancing");
0017 TProfile *p_mAsymmEnergy_pion_5GeV = h_mAsymmEnergy_pion_5GeV->ProfileX("p_mAsymmEnergy_pion_5GeV",1,-1,"i");
0018 p_mAsymmEnergy_pion_5GeV->SetMarkerStyle(20);
0019 p_mAsymmEnergy_pion_5GeV->SetMarkerColor(1);
0020 p_mAsymmEnergy_pion_5GeV->SetMarkerSize(1.0);
0021
0022 string input_8GeV = "/sphenix/user/xusun/TestBeam/ShowerCalibAna/Proto4ShowerInfoRAW_0422.root";
0023 TFile *File_8GeV = TFile::Open(input_8GeV.c_str());
0024 TH2F *h_mAsymmEnergy_pion_8GeV = (TH2F*)File_8GeV->Get("h_mAsymmEnergy_pion_balancing");
0025 TProfile *p_mAsymmEnergy_pion_8GeV = h_mAsymmEnergy_pion_8GeV->ProfileX("p_mAsymmEnergy_pion_8GeV",1,-1,"i");
0026 p_mAsymmEnergy_pion_8GeV->SetMarkerStyle(20);
0027 p_mAsymmEnergy_pion_8GeV->SetMarkerColor(1);
0028 p_mAsymmEnergy_pion_8GeV->SetMarkerSize(1.0);
0029
0030 string input_12GeV = "/sphenix/user/xusun/TestBeam/ShowerCalibAna/Proto4ShowerInfoRAW_0571.root";
0031 TFile *File_12GeV = TFile::Open(input_12GeV.c_str());
0032 TH2F *h_mAsymmEnergy_pion_12GeV = (TH2F*)File_12GeV->Get("h_mAsymmEnergy_pion_balancing");
0033 TProfile *p_mAsymmEnergy_pion_12GeV = h_mAsymmEnergy_pion_12GeV->ProfileX("p_mAsymmEnergy_pion_12GeV",1,-1,"i");
0034 p_mAsymmEnergy_pion_12GeV->SetMarkerStyle(20);
0035 p_mAsymmEnergy_pion_12GeV->SetMarkerColor(1);
0036 p_mAsymmEnergy_pion_12GeV->SetMarkerSize(1.0);
0037
0038 float fit_start = -0.8;
0039 float fit_stop = 0.8;
0040 TCanvas *c_AsymmEnergy = new TCanvas("c_AsymmEnergy","c_AsymmEnergy",1500,500);
0041 c_AsymmEnergy->Divide(3,1);
0042 for(int i_pad = 0; i_pad < 3; ++i_pad)
0043 {
0044 c_AsymmEnergy->cd(i_pad+1);
0045 c_AsymmEnergy->cd(i_pad+1)->SetLeftMargin(0.15);
0046 c_AsymmEnergy->cd(i_pad+1)->SetBottomMargin(0.15);
0047 c_AsymmEnergy->cd(i_pad+1)->SetTicks(1,1);
0048 c_AsymmEnergy->cd(i_pad+1)->SetGrid(0,0);
0049 }
0050
0051 c_AsymmEnergy->cd(1);
0052 h_mAsymmEnergy_pion_5GeV->Draw("colz");
0053 p_mAsymmEnergy_pion_5GeV->Draw("pE same");
0054 TF1 *f_pol_5GeV = new TF1("f_pol_5GeV","pol1",-1.0,1.0);
0055 f_pol_5GeV->SetRange(fit_start,fit_stop);
0056 p_mAsymmEnergy_pion_5GeV->Fit(f_pol_5GeV,"NR");
0057 f_pol_5GeV->SetLineColor(2);
0058 f_pol_5GeV->SetLineWidth(4);
0059 f_pol_5GeV->SetLineStyle(2);
0060 f_pol_5GeV->Draw("l same");
0061 string formula_5GeV = Form("%2.2f#timesE_{Asymm}+%2.2f",f_pol_5GeV->GetParameter(1),f_pol_5GeV->GetParameter(0));
0062 const float c_in_5GeV = f_pol_5GeV->Eval(0.0)/f_pol_5GeV->Eval(1.0);
0063 const float c_out_5GeV = f_pol_5GeV->Eval(0.0)/f_pol_5GeV->Eval(-1.0);
0064
0065 TLegend *leg_5GeV = new TLegend(0.35,0.7,0.75,0.85);
0066 leg_5GeV->SetBorderSize(0);
0067 leg_5GeV->SetFillColor(10);
0068 leg_5GeV->AddEntry(h_mAsymmEnergy_pion_5GeV,"5 GeV","h");
0069 leg_5GeV->AddEntry(f_pol_5GeV,formula_5GeV.c_str(),"l");
0070 leg_5GeV->Draw();
0071
0072 c_AsymmEnergy->cd(2);
0073 h_mAsymmEnergy_pion_8GeV->Draw("colz");
0074 p_mAsymmEnergy_pion_8GeV->Draw("pE same");
0075 TF1 *f_pol_8GeV = new TF1("f_pol_8GeV","pol1",-1.0,1.0);
0076 f_pol_8GeV->SetRange(fit_start,fit_stop);
0077 p_mAsymmEnergy_pion_8GeV->Fit(f_pol_8GeV,"NR");
0078 f_pol_8GeV->SetLineColor(2);
0079 f_pol_8GeV->SetLineWidth(4);
0080 f_pol_8GeV->SetLineStyle(2);
0081 f_pol_8GeV->Draw("l same");
0082 string formula_8GeV = Form("%2.2f#timesE_{Asymm}+%2.2f",f_pol_8GeV->GetParameter(1),f_pol_8GeV->GetParameter(0));
0083 const float c_in_8GeV = f_pol_8GeV->Eval(0.0)/f_pol_8GeV->Eval(1.0);
0084 const float c_out_8GeV = f_pol_8GeV->Eval(0.0)/f_pol_8GeV->Eval(-1.0);
0085
0086 TLegend *leg_8GeV = new TLegend(0.35,0.7,0.75,0.85);
0087 leg_8GeV->SetBorderSize(0);
0088 leg_8GeV->SetFillColor(10);
0089 leg_8GeV->AddEntry(h_mAsymmEnergy_pion_8GeV,"8 GeV","h");
0090 leg_8GeV->AddEntry(f_pol_8GeV,formula_8GeV.c_str(),"l");
0091 leg_8GeV->Draw();
0092
0093 c_AsymmEnergy->cd(3);
0094 h_mAsymmEnergy_pion_12GeV->Draw("colz");
0095 p_mAsymmEnergy_pion_12GeV->Draw("pE same");
0096 TF1 *f_pol_12GeV = new TF1("f_pol_12GeV","pol1",-1.0,1.0);
0097 f_pol_12GeV->SetRange(fit_start,fit_stop);
0098 p_mAsymmEnergy_pion_12GeV->Fit(f_pol_12GeV,"NR");
0099 f_pol_12GeV->SetLineColor(2);
0100 f_pol_12GeV->SetLineWidth(4);
0101 f_pol_12GeV->SetLineStyle(2);
0102 f_pol_12GeV->Draw("l same");
0103 string formula_12GeV = Form("%2.2f#timesE_{Asymm}+%2.2f",f_pol_12GeV->GetParameter(1),f_pol_12GeV->GetParameter(0));
0104 const float c_in_12GeV = f_pol_12GeV->Eval(0.0)/f_pol_12GeV->Eval(1.0);
0105 const float c_out_12GeV = f_pol_12GeV->Eval(0.0)/f_pol_12GeV->Eval(-1.0);
0106
0107 TLegend *leg_12GeV = new TLegend(0.35,0.7,0.75,0.85);
0108 leg_12GeV->SetBorderSize(0);
0109 leg_12GeV->SetFillColor(10);
0110 leg_12GeV->AddEntry(h_mAsymmEnergy_pion_12GeV,"12 GeV","h");
0111 leg_12GeV->AddEntry(f_pol_12GeV,formula_12GeV.c_str(),"l");
0112 leg_12GeV->Draw();
0113
0114 c_AsymmEnergy->SaveAs("../figures/HCAL_ShowerCalib/c_AsymmEnergy_LevelingPar.eps");
0115
0116 ofstream File_OutPut("leveling_corr.txt");
0117 File_OutPut << "5 GeV: c_in = " << c_in_5GeV << ", c_out = " << c_out_5GeV << endl;
0118 File_OutPut << "8 GeV: c_in = " << c_in_8GeV << ", c_out = " << c_out_8GeV << endl;
0119 File_OutPut << "12 GeV: c_in = " << c_in_12GeV << ", c_out = " << c_out_12GeV << endl;
0120 File_OutPut.close();
0121 }