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
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