Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-06 08:10:20

0001 #include "TFile.h"
0002 #include "TH1F.h"
0003 
0004 //#include <sPhenixStyle.h>
0005 //#include <sPhenixStyle.C>
0006 
0007 #include "../util/DifferentialContainer.h"
0008 #include "../util/binning.h"
0009 
0010 std::vector<RooPlot*> get_all_bins(TFile* f, const std::string& particle, const HistogramInfo& var)
0011 {
0012   //DifferentialContainer dc(f,particle,var);
0013   //return dc.hists;
0014 
0015   std::vector<RooPlot*> plot_dist;
0016 
0017   int nbins = var.bins.size()-1;
0018   for(int i=1; i<=nbins; i++)
0019   {
0020     std::string name = particle+"_yield_vs"+var.name+"_"+std::to_string(i);
0021     std::cout << name << std::endl;
0022     RooPlot* dist = (RooPlot*)f->Get(name.c_str());
0023     plot_dist.push_back(dist);
0024   }
0025   std::cout << "final size: " << plot_dist.size() << std::endl;
0026   return plot_dist;
0027 }
0028 
0029 std::vector<std::vector<RooPlot*>> get_all_fits_all_variables(TFile* f, std::string particle, std::vector<HistogramInfo> hinfos)
0030 {
0031   std::vector<std::vector<RooPlot*>> all_fits;
0032   for(HistogramInfo& hinfo : hinfos)
0033   {
0034     all_fits.push_back(get_all_bins(f,particle,hinfo));
0035   }
0036   return all_fits;
0037 }
0038 
0039 void plot_results()
0040 {
0041   gStyle->SetOptStat(0);
0042   gStyle->SetImageScaling(2.);
0043   //SetsPhenixStyle();
0044 
0045   bool finalize = true;
0046 
0047   std::string outdir;
0048   if(finalize) outdir = "/sphenix/tg/tg01/hf/mjpeters/LightFlavorResults/plots";
0049   else outdir = "plots";
0050 
0051   TFile* f = TFile::Open("fits.root");
0052 
0053   std::vector<HistogramInfo> variables =
0054   {
0055     BinInfo::final_pt_bins,
0056     BinInfo::final_eta_bins,
0057     BinInfo::final_rapidity_bins,
0058     BinInfo::final_phi_bins
0059   };
0060 
0061   std::vector<std::vector<RooPlot*>> Ks_fits = get_all_fits_all_variables(f,"Ks",variables);
0062   std::vector<std::vector<RooPlot*>> lambda_fits = get_all_fits_all_variables(f,"Lambda",variables);
0063 
0064   for(int i=0; i<variables.size(); i++)
0065   {
0066     // generate square figures
0067     int nbins = variables[i].bins.size()-1;
0068     std::cout << "nbins " << nbins << std::endl;
0069     int npix_x = 3600;
0070     int npix_y = 1800;
0071     TCanvas* c = new TCanvas("c","c",npix_x,npix_y);
0072     c->Divide(nbins/3+1,3);
0073     for(int bin=1; bin<=nbins; bin++)
0074     {
0075       c->cd(bin);
0076       std::cout << i << " " << bin << std::endl;
0077       Ks_fits[i][bin-1]->Draw();
0078     }
0079     std::string Ks_filename_pdf = outdir+"/pdf/Ks_fits_vs"+variables[i].name+".pdf";
0080     std::string Ks_filename = outdir+"/png/Ks_fits_vs"+variables[i].name+".png";
0081     c->SaveAs(Ks_filename.c_str());
0082     c->SaveAs(Ks_filename_pdf.c_str());
0083     c->Close();
0084 
0085     TCanvas* c1 = new TCanvas("c1","c1",npix_x,npix_y);
0086     c1->Divide(nbins/3+1,3);
0087 /*
0088     for(int bin=1; bin<=nbins; bin++)
0089     {
0090       c->cd(bin+nbins);
0091       phi_fits[i][bin-1]->Draw();
0092     }
0093 */
0094     for(int bin=1; bin<=nbins; bin++)
0095     {
0096       c1->cd(bin);
0097       lambda_fits[i][bin-1]->Draw();
0098     }
0099     std::string lambda_filename_pdf = outdir+"/pdf/lambda_fits_vs"+variables[i].name+".pdf";
0100     std::string lambda_filename = outdir+"/png/lambda_fits_vs"+variables[i].name+".png";
0101     c1->SaveAs(lambda_filename.c_str());
0102     c1->SaveAs(lambda_filename_pdf.c_str());
0103   }
0104 
0105   TCanvas* c = new TCanvas("singleplots","single plots",800,800);
0106   c->SetLeftMargin(0.15);
0107   c->SetRightMargin(0.05);
0108   std::vector<TH1F*> single_plots =
0109   {
0110     (TH1F*)f->Get("lambdaKsratio_vspT"),
0111     (TH1F*)f->Get("lambdaKsratio_vspseudorapidity"),
0112     (TH1F*)f->Get("lambdaKsratio_vsphi"),
0113     (TH1F*)f->Get("lambdaKsratio_vsrapidity"),
0114     (TH1F*)f->Get("Ks_yield_vspT"),
0115     (TH1F*)f->Get("Ks_yield_vspseudorapidity"),
0116     (TH1F*)f->Get("Ks_yield_vsphi"),
0117     (TH1F*)f->Get("Ks_yield_vsrapidity"),
0118     (TH1F*)f->Get("Lambda_yield_vspT"),
0119     (TH1F*)f->Get("Lambda_yield_vspseudorapidity"),
0120     (TH1F*)f->Get("Lambda_yield_vsphi"),
0121     (TH1F*)f->Get("Lambda_yield_vsrapidity"),
0122   };
0123 
0124   for(TH1F* h : single_plots)
0125   {
0126     h->SetMarkerColor(kBlack);
0127     h->SetLineColor(kBlack);
0128     h->SetMarkerStyle(kFullCircle);
0129     h->SetMarkerSize(0.7);
0130     h->SetMinimum(0.);
0131 
0132     h->Draw();
0133 
0134     TLatex latex;
0135     latex.SetNDC();           // Use normalized coordinates
0136     latex.SetTextSize(0.04); // Adjust size as needed
0137     latex.SetTextAlign(13);   // Left-top alignment
0138     latex.DrawLatex(0.68, 0.93, "#it{#bf{sPHENIX}} internal");
0139     latex.DrawLatex(0.68, 0.90, "#it{p+p} #sqrt{200} GeV");
0140 
0141     std::string filename_pdf = outdir+"/pdf/"+std::string(h->GetName())+".pdf";
0142     std::string filename_png = outdir+"/png/"+std::string(h->GetName())+".png";
0143     c->SaveAs(filename_pdf.c_str());
0144     c->SaveAs(filename_png.c_str());
0145   }
0146 }