Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:16:13

0001 #ifndef HISTOGRAMCONTAINER_H
0002 #define HISTOGRAMCONTAINER_H
0003 
0004 #include "TH1F.h"
0005 #include "TH2F.h"
0006 #include "TFile.h"
0007 
0008 #include "binning.h"
0009 
0010 struct HistogramContainer
0011 {
0012   TH1F* h_pt;
0013   TH1F* h_y;
0014   TH1F* h_phi;
0015   TH1F* h_ntracks;
0016 
0017   TH2F* h_pt_y;
0018   TH2F* h_pt_phi;
0019   TH2F* h_pt_ntracks;
0020   TH2F* h_y_phi;
0021   TH2F* h_y_ntracks;
0022   TH2F* h_phi_ntracks;
0023 
0024   std::string legend_name;
0025 
0026   // a bit of home-grown reflection, for ease of plot-making
0027   std::map<std::string,TH1F*> spectra;
0028   std::map<std::string,TH2F*> correlations;
0029 
0030   void InitMaps()
0031   {
0032     spectra = {
0033       { "pt", h_pt },
0034       { "y", h_y },
0035       { "phi", h_phi },
0036       { "ntracks", h_ntracks }
0037     };
0038 
0039     correlations = {
0040       { "pt_y", h_pt_y },
0041       { "pt_phi", h_pt_phi },
0042       { "pt_ntracks", h_pt_ntracks },
0043       { "y_phi", h_y_phi },
0044       { "y_ntracks", h_y_ntracks },
0045       { "phi_ntracks", h_phi_ntracks }
0046     };
0047   }
0048 
0049   HistogramContainer(std::string basename, std::string basetitle)
0050   {
0051     h_pt = makeHistogram(basename, basetitle, BinInfo::pt_bins);
0052     h_y = makeHistogram(basename, basetitle, BinInfo::rapidity_bins);
0053     h_phi = makeHistogram(basename, basetitle, BinInfo::phi_bins);
0054     h_ntracks = makeHistogram(basename, basetitle, BinInfo::ntrack_bins);
0055 
0056     h_pt_y = make2DHistogram(basename, basetitle, BinInfo::pt_bins, BinInfo::rapidity_bins);
0057     h_pt_phi = make2DHistogram(basename, basetitle, BinInfo::pt_bins, BinInfo::phi_bins);
0058     h_pt_ntracks = make2DHistogram(basename, basetitle, BinInfo::pt_bins, BinInfo::ntrack_bins);
0059     h_y_phi = make2DHistogram(basename, basetitle, BinInfo::rapidity_bins, BinInfo::phi_bins);
0060     h_y_ntracks = make2DHistogram(basename, basetitle, BinInfo::rapidity_bins, BinInfo::ntrack_bins);
0061     h_phi_ntracks = make2DHistogram(basename, basetitle, BinInfo::phi_bins, BinInfo::ntrack_bins);
0062 
0063     InitMaps();
0064     SetStyle();
0065   }
0066 
0067   HistogramContainer(TFile* f, std::string basename, std::string lstring)
0068   {
0069     Load(f,basename);
0070     legend_name = lstring;
0071     InitMaps();
0072     SetStyle();
0073   }
0074 
0075   void Load(TFile* f, std::string basename)
0076   {
0077     std::string ptname = BinInfo::pt_bins.name;
0078     std::string yname = BinInfo::rapidity_bins.name;
0079     std::string phiname = BinInfo::phi_bins.name;
0080     std::string ntrkname = BinInfo::ntrack_bins.name;
0081 
0082     h_pt = (TH1F*)f->Get((basename+ptname).c_str());
0083     h_y = (TH1F*)f->Get((basename+yname).c_str());
0084     h_phi = (TH1F*)f->Get((basename+phiname).c_str());
0085     h_ntracks = (TH1F*)f->Get((basename+ntrkname).c_str());
0086 
0087     h_pt_y = (TH2F*)f->Get((basename+ptname+yname).c_str());
0088     h_pt_phi = (TH2F*)f->Get((basename+ptname+phiname).c_str());
0089     h_pt_ntracks = (TH2F*)f->Get((basename+ptname+ntrkname).c_str());
0090     h_y_phi = (TH2F*)f->Get((basename+yname+phiname).c_str());
0091     h_y_ntracks = (TH2F*)f->Get((basename+yname+ntrkname).c_str());
0092     h_phi_ntracks = (TH2F*)f->Get((basename+phiname+ntrkname).c_str());
0093   }
0094 
0095   void SetColor(Color_t color)
0096   {
0097     h_pt->SetLineColor(color);
0098     h_y->SetLineColor(color);
0099     h_phi->SetLineColor(color);
0100     h_ntracks->SetLineColor(color);
0101 
0102     h_pt->SetMarkerColor(color);
0103     h_y->SetMarkerColor(color);
0104     h_phi->SetMarkerColor(color);
0105     h_ntracks->SetMarkerColor(color);
0106   }
0107 
0108   void SetStyle()
0109   {
0110     h_pt->SetMarkerStyle(kFullCircle);
0111     h_y->SetMarkerStyle(kFullCircle);
0112     h_phi->SetMarkerStyle(kFullCircle);
0113     h_ntracks->SetMarkerStyle(kFullCircle);
0114 
0115     h_pt->SetMarkerSize(0.7);
0116     h_y->SetMarkerSize(0.7);
0117     h_phi->SetMarkerSize(0.7);
0118     h_ntracks->SetMarkerSize(0.7);
0119   }
0120 
0121   void Fill(float pt, float y, float phi, float ntracks)
0122   {
0123     h_pt->Fill(pt);
0124     h_y->Fill(y);
0125     h_phi->Fill(phi);
0126     h_ntracks->Fill(ntracks);
0127 
0128     h_pt_y->Fill(pt,y);
0129     h_pt_phi->Fill(pt,phi);
0130     h_pt_ntracks->Fill(pt,ntracks);
0131     h_y_phi->Fill(y,phi);
0132     h_y_ntracks->Fill(y,ntracks);
0133     h_phi_ntracks->Fill(phi,ntracks);
0134   }
0135 
0136   void Write()
0137   {
0138     h_pt->Write();
0139     h_y->Write();
0140     h_phi->Write();
0141     h_ntracks->Write();
0142 
0143     h_pt_y->Write();
0144     h_pt_phi->Write();
0145     h_pt_ntracks->Write();
0146     h_y_phi->Write();
0147     h_y_ntracks->Write();
0148     h_phi_ntracks->Write();
0149   }
0150 };
0151 
0152 #endif // HISTOGRAMCONTAINER_H