Back to home page

sPhenix code displayed by LXR

 
 

    


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"; // 5 GeV
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"; // 8 GeV
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"; // 12 GeV
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 }