File indexing completed on 2026-04-06 08:09:41
0001 #pragma once
0002 #if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,0)
0003
0004 #include <TFile.h>
0005 #include <TDirectory.h>
0006 #include <TLegend.h>
0007 #include <TCanvas.h>
0008 #include <TH1.h>
0009 #include <TH2.h>
0010 #include "HerwigQAPlottingConfig.h"
0011 #include "HerwigQAPlottingConfig.C"
0012 #include "Special_colors.h"
0013 #include "sPhenixStyle.h"
0014 #include "sPhenixStyle.C"
0015
0016 #include <string>
0017 #include <vector>
0018 #include <format>
0019 #include <map>
0020 #include <array>
0021 #include <utility>
0022
0023 HerwigQAPlottingConfig* conf;
0024 TFile* storage;
0025 std::string tag {};
0026 Skaydis_colors* style_points;
0027 struct particle_colls
0028 {
0029 TH1F* pt;
0030 TH1I* n;
0031 TH2F* phi_eta;
0032 };
0033 void GetSampleSpectra(
0034 std::string Generator="Herwig",
0035 std::vector<TH1F*>* r04_all = new std::vector<TH1F*> {},
0036 std::vector<TH1F*>* r04_lead = new std::vector<TH1F*> {},
0037 std::vector<TFile*>* fs = new std::vector<TFile*> {}
0038 )
0039 {
0040 bool isHerwig = false;
0041 if(Generator.find("erwig") != std::string::npos) isHerwig=true;
0042 for(int i = 0; i<(int) fs->size(); i++)
0043 {
0044 fs->at(i)->cd();
0045 TDirectory* d_gen = (TDirectory*) fs->at(i)->GetDirectory(std::format("{}_jets", Generator).c_str());
0046
0047 TH1F* h_all = (TH1F*)d_gen->Get("h_jet_r04_pt");
0048 TH1F* h_lead = (TH1F*)d_gen->Get("h_lead_jet_r04_pt");
0049 if(isHerwig){
0050 h_all->SetMarkerStyle(20+i);
0051 if(i==4) h_all->SetMarkerStyle(29);
0052 else if(i==5) h_all->SetMarkerStyle(33);
0053 else if(i==6) h_all->SetMarkerStyle(34);
0054 else if (i==7) h_all->SetMarkerStyle(37);
0055
0056 h_lead->SetMarkerStyle(20+i);
0057 if(i==4) h_lead->SetMarkerStyle(29);
0058 else if(i==5) h_lead->SetMarkerStyle(33);
0059 else if(i==6) h_lead->SetMarkerStyle(35);
0060 else if (i==7) h_lead->SetMarkerStyle(37);
0061 }
0062 else{
0063 h_all->SetMarkerStyle(i+24);
0064 h_all->SetMarkerSize(2);
0065 if(i==6) h_all->SetMarkerStyle(30);
0066 if(i==7) h_all->SetMarkerStyle(38);
0067
0068 h_lead->SetMarkerStyle(i+24);
0069 h_lead->SetMarkerSize(2);
0070 if(i==6) h_lead->SetMarkerStyle(30);
0071 if(i==7) h_lead->SetMarkerStyle(38);
0072 }
0073 r04_all->push_back(h_all);
0074 r04_lead->push_back(h_lead);
0075 }
0076 return;
0077 }
0078 void SampleRatios(
0079 std::vector<TH1F*>* base, std::vector<TH1F*>* ratios, TH1F* total,
0080 TCanvas* ratios_canvi, TLegend* head_leg, TLegend* data_leg,
0081 HerwigQAPlottingConfig* co,
0082 std::string Generator, std::vector<std::string> cut
0083 )
0084 {
0085 std::vector<TPad*>* pads = co->AddPads(ratios_canvi);
0086 for(int i = 1; i<(int)base->size(); i++)
0087 {
0088 if ( i > 0 )
0089 {
0090 pads->at(1)->cd();
0091 TH1F* last = (TH1F*)base->at(i-1)->Clone();
0092 TH1F* prev_ratio = co->GetRatioPlot(base->at(i), last);
0093 data_leg->AddEntry( prev_ratio, std::format("{} {} / {}", Generator, cut.at(i), cut.at(i-1)).c_str(), "pl");
0094 ratios->push_back(prev_ratio);
0095 prev_ratio->Draw("pmc plc same");
0096 prev_ratio->SetYTitle(" Sample / Previous Sample " );
0097 prev_ratio->GetYaxis()->SetRangeUser(0, 4);
0098 pads->at(0)->cd();
0099 }
0100 TH1F* total_ratio = co->GetRatioPlot(base->at(i), total);
0101 total_ratio->SetMarkerStyle(2*i+39);
0102 data_leg->AddEntry( total_ratio, std::format("{} {} / Combined Spectrum ", Generator, cut.at(i)).c_str(), "pl");
0103 total_ratio->Draw("pmc plc same");
0104 total_ratio->SetYTitle(" Sample / Combined " );
0105 total_ratio->GetYaxis()->SetRangeUser(0, 3);
0106 }
0107 pads->at(1)->cd();
0108 data_leg->Draw();
0109 head_leg->Draw();
0110 ratios_canvi->cd();
0111 pads->at(1)->Draw();
0112 pads->at(0)->Draw();
0113 return;
0114
0115
0116 }
0117 void PlotThePlots(
0118 std::vector<TH1F*>* herwig_all,
0119 std::vector<TH1F*>* pythia_all,
0120 std::array<TCanvas*, 3>* AllCanvi,
0121 std::array<TLegend*, 3>* AllHeadLeg, std::array<TLegend*, 3>* AllDataLeg,
0122 HerwigQAPlottingConfig* co,
0123 std::vector<std::string> cuts
0124 )
0125 {
0126
0127 std::vector<TPad*>* pall = co->AddPads(AllCanvi->at(0));
0128 for(int i = 0 ; i<(int) herwig_all->size(); i++)
0129 {
0130 TH1F* hCo = (TH1F*) herwig_all->at(i)->Clone();
0131 TH1F* pCo = (TH1F*) pythia_all->at(i)->Clone();
0132 TH1F* rCo = co->GetRatioPlot(hCo, pCo);
0133 rCo -> SetMarkerStyle(2*i+39);
0134 pall->at(1)->cd();
0135 pall->at(1)->SetLogy();
0136 hCo->Draw("same plc pmc");
0137 if(i==0){
0138 float max_val=hCo->GetMaximum();
0139 hCo->GetYaxis()->SetRangeUser(0.001, max_val*3);
0140 }
0141 pCo->Draw("same plc pmc");
0142 AllDataLeg->at(0)->AddEntry(hCo, std::format("Herwig {}", cuts.at(i)).c_str(), "pl");
0143 AllDataLeg->at(0)->AddEntry(pCo, std::format("Pythia {}", cuts.at(i)).c_str(), "pl");
0144 AllDataLeg->at(0)->AddEntry(rCo, std::format("Herwig {} / Pythia {}", cuts.at(i), cuts.at(i)).c_str(), "pl");
0145 pall->at(0)->cd();
0146 rCo->Draw("plc pmc same");
0147 rCo->GetYaxis()->SetRangeUser(0, 2);
0148 rCo->SetYTitle("Herwig / Pythia");
0149
0150 AllCanvi->at(1)->cd();
0151 herwig_all->at(i)->Draw("same plc pmc");
0152 if(i==0)
0153 {
0154 float max_val=herwig_all->at(i)->GetMaximum();
0155 herwig_all->at(i)->GetYaxis()->SetRangeUser(0.001, max_val*3);
0156 }
0157 AllDataLeg->at(1)->AddEntry(herwig_all->at(i), cuts.at(i).c_str(), "pl");
0158
0159 AllCanvi->at(2)->cd();
0160 pythia_all->at(i)->Draw("same plc pmc");
0161 if(i==0)
0162 {
0163 float max_val=pythia_all->at(i)->GetMaximum();
0164 pythia_all->at(i)->GetYaxis()->SetRangeUser(0.001, max_val*3);
0165 }
0166 AllDataLeg->at(2)->AddEntry(pythia_all->at(i), cuts.at(i).c_str(), "pl");
0167 }
0168 pall->at(1)->cd();
0169 AllHeadLeg->at(0)->Draw();
0170 AllDataLeg->at(0)->Draw();
0171 AllCanvi->at(0)->cd();
0172 pall->at(0)->Draw();
0173 pall->at(1)->Draw();
0174
0175 AllCanvi->at(1)->cd();
0176 AllHeadLeg->at(1)->Draw();
0177 AllDataLeg->at(1)->Draw();
0178 AllCanvi->at(1)->SetLogy();
0179
0180 AllCanvi->at(2)->cd();
0181 AllHeadLeg->at(2)->Draw();
0182 AllDataLeg->at(2)->Draw();
0183 AllCanvi->at(2)->SetLogy();
0184
0185 return;
0186 }
0187
0188 void PlotBothThePlots(
0189 std::vector<TH1F*>* herwig_all, std::vector<TH1F*>* herwig_lead,
0190 std::vector<TH1F*>* pythia_all, std::vector<TH1F*>* pythia_lead,
0191 std::array<TCanvas*, 3>* AllCanvi, std::array<TCanvas*, 3>* LeadCanvi,
0192 HerwigQAPlottingConfig* co,
0193 std::vector<std::string> cuts
0194 )
0195 {
0196 std::array<TLegend*, 3>* AllHeadLeg = new std::array<TLegend*, 3> {};
0197 std::array<TLegend*, 3>* AllDataLeg = new std::array<TLegend*, 3> {};
0198 std::array<TLegend*, 3>* LeadHeadLeg = new std::array<TLegend*, 3> {};
0199 std::array<TLegend*, 3>* LeadDataLeg = new std::array<TLegend*, 3> {};
0200 for(int i=0; i<3; i++)
0201 {
0202 TLegend* l_head = new TLegend(0.6, 0.6, 0.8, 0.9);
0203 TLegend* l_data = new TLegend(0.3, 0.5, 0.65, 0.8);
0204 co->SetLegend(l_data);
0205 if(i == 0) co->SetsPhenixHeaderLegend(l_head, "none", "All Jets");
0206 else if(i == 1) co->SetsPhenixHeaderLegend(l_head, true, "All Jets");
0207 else if(i == 2) co->SetsPhenixHeaderLegend(l_head, false, "All Jets");
0208 AllHeadLeg->at(i) = l_head;
0209 AllDataLeg->at(i) = l_data;
0210 }
0211
0212 for(int i=0; i<3; i++)
0213 {
0214 TLegend* l_head = new TLegend(0.6, 0.6, 0.8, 0.9);
0215 TLegend* l_data = new TLegend(0.3, 0.5, 0.65, 0.8);
0216 co->SetLegend(l_data);
0217 if(i == 0) co->SetsPhenixHeaderLegend(l_head, "none", "Lead Jets");
0218 else if(i == 1) co->SetsPhenixHeaderLegend(l_head, true, "Lead Jets");
0219 else if(i == 2) co->SetsPhenixHeaderLegend(l_head, false, "Lead Jets");
0220 LeadHeadLeg->at(i) = l_head;
0221 LeadDataLeg->at(i) = l_data;
0222 }
0223 AllDataLeg->at(0)->SetNColumns(3);
0224 LeadDataLeg->at(0)->SetNColumns(3);
0225 PlotThePlots(herwig_all, pythia_all, AllCanvi, AllHeadLeg, AllDataLeg, co, cuts);
0226 PlotThePlots(herwig_lead, pythia_lead, LeadCanvi, LeadHeadLeg, LeadDataLeg, co, cuts);
0227 return;
0228 }
0229
0230 void PlotCombinedSpectrum(std::vector<TFile*>* fs, std::vector<std::string> cutnames)
0231 {
0232 SetsPhenixStyle();
0233 TCanvas* cAll = new TCanvas("all_canvas", "all_Jets");
0234 TCanvas* cLead = new TCanvas("lead_canvas", "Lead_jets");
0235
0236 TCanvas* cAllPythia = new TCanvas("all_Pythia_canvas", "all_Pythia_Jets");
0237 TCanvas* cLeadPythia = new TCanvas("lead_Pythia_canvas", "Lead_Pythia_jets");
0238
0239 TCanvas* cAllHerwig = new TCanvas("all_Herwig_canvas", "all_Herwig_Jets");
0240 TCanvas* cLeadHerwig = new TCanvas("lead_Herwig_canvas", "Lead_Herwig_jets");
0241
0242
0243
0244 TCanvas* cAll_ratio_Pythia = new TCanvas("all_ratio_Pythia_canvas", "all_ratio_Pythia_Jets");
0245 TCanvas* cLead_ratio_Pythia = new TCanvas("lead_ratio_Pythia_canvas", "Lead_ratio_Pythia_jets");
0246
0247 TCanvas* cAll_ratio_Herwig = new TCanvas("all_ratio_Herwig_canvas", "all_ratio_Herwig_Jets");
0248 TCanvas* cLead_ratio_Herwig = new TCanvas("lead_ratio_Herwig_canvas", "Lead_ratio_Herwig_jets");
0249
0250
0251 std::array<TCanvas*, 3> All {cAll, cAllHerwig, cAllPythia};
0252 std::array<TCanvas*, 3> Lead {cLead, cLeadHerwig, cLeadPythia};
0253
0254 std::array<TCanvas*, 2> Herwig_ratios {cAll_ratio_Herwig, cLead_ratio_Herwig};
0255 std::array<TCanvas*, 2> Pythia_ratios {cAll_ratio_Pythia, cLead_ratio_Pythia};
0256
0257 std::array< std::array< TCanvas*, 2 >*, 2 > RatioCanvi {&Herwig_ratios, &Pythia_ratios};
0258 std::array< std::array< std::array<TLegend*, 2>*, 2 >*, 2 >* RatioLegs
0259 = new std::array< std::array< std::array< TLegend*, 2>*, 2>*, 2>{};
0260
0261 std::vector<TH1F*>* herwig_pt = new std::vector<TH1F*>();
0262 std::vector<TH1F*>* herwig_l_pt = new std::vector<TH1F*>();
0263
0264 std::vector<TH1F*>* pythia_pt = new std::vector<TH1F*>();
0265 std::vector<TH1F*>* pythia_l_pt = new std::vector<TH1F*>();
0266
0267 HerwigQAPlottingConfig* co = new HerwigQAPlottingConfig();
0268 Skaydis_colors* odd_colors = new Skaydis_colors();
0269 gStyle->SetPalette(100, odd_colors->Enby_gradient_PT);
0270
0271
0272 GetSampleSpectra("Herwig", herwig_pt, herwig_l_pt, fs);
0273 GetSampleSpectra("Pythia", pythia_pt, pythia_l_pt, fs);
0274
0275 for(int i=0; i<2; i++)
0276 {
0277 bool isHerwig = false;
0278 if( i==0 ) isHerwig = true;
0279 else isHerwig = false;
0280 std::array< std::array<TLegend*, 2>*, 2 >* Legs =
0281 new std::array<std::array<TLegend*, 2>*, 2>{};
0282 for(int j=0; j<2; j++)
0283 {
0284 RatioCanvi.at(i)->at(j)->cd();
0285 std::string LJ = "All Jets";
0286 if(j==1) LJ="Lead Jets";
0287 TLegend* l_head = new TLegend(0.7, 0.6, 0.9, 0.9);
0288 TLegend* l_data = new TLegend(0.7, 0.2, 0.9, 0.6);
0289
0290 co->SetLegend(l_data);
0291 co->SetsPhenixHeaderLegend(l_head, isHerwig, LJ);
0292 std::array<TLegend*, 2>* l = new std::array<TLegend*, 2> {l_head, l_data};
0293 Legs->at(j)=l;
0294 }
0295 RatioLegs->at(i)=Legs;
0296 }
0297
0298 TH1F* ha1=(TH1F*)herwig_pt->at(0)->Clone();
0299 TH1F* pa1=(TH1F*)pythia_pt->at(0)->Clone();
0300 for(int i = 1; i<(int)herwig_pt->size(); i++) ha1->Add(herwig_pt->at(i));
0301 for(int i = 1; i<(int)pythia_pt->size(); i++) pa1->Add(pythia_pt->at(i));
0302
0303 TH1F* hj1=(TH1F*)herwig_l_pt->at(0)->Clone();
0304 TH1F* pj1=(TH1F*)pythia_l_pt->at(0)->Clone();
0305 for(int i = 1; i<(int)herwig_l_pt->size(); i++) hj1->Add(herwig_l_pt->at(i));
0306 for(int i = 1; i<(int)pythia_l_pt->size(); i++) pj1->Add(pythia_l_pt->at(i));
0307 std::vector<TH1F*> rHA {};
0308 std::vector<TH1F*> rHL {};
0309 std::vector<TH1F*> rPA {};
0310 std::vector<TH1F*> rPL {};
0311 SampleRatios(herwig_pt, &rHA ,ha1,
0312 RatioCanvi.at(0)->at(0), RatioLegs->at(0)->at(0)->at(0) , RatioLegs->at(0)->at(0)->at(1),
0313 co, "Herwig", cutnames);
0314 SampleRatios(herwig_l_pt, &rHL ,hj1,
0315 RatioCanvi.at(0)->at(1), RatioLegs->at(0)->at(1)->at(0) , RatioLegs->at(0)->at(1)->at(1),
0316 co, "Herwig", cutnames);
0317 SampleRatios(pythia_pt, &rPA ,pa1,
0318 RatioCanvi.at(1)->at(0), RatioLegs->at(1)->at(0)->at(0) , RatioLegs->at(1)->at(0)->at(1),
0319 co, "Pythia", cutnames);
0320 SampleRatios(pythia_l_pt, &rPL ,pj1,
0321 RatioCanvi.at(1)->at(1), RatioLegs->at(1)->at(1)->at(0) , RatioLegs->at(0)->at(0)->at(1),
0322 co, "Pythia", cutnames);
0323 PlotBothThePlots(
0324 herwig_pt, herwig_l_pt,
0325 pythia_pt, pythia_l_pt,
0326 &All, &Lead,
0327 co, cutnames);
0328 All.at(0)->Print("~/Herwig_comb_pt_QA.pdf(");
0329 for(int i = 0; i<(int) All.size(); i++) All.at(i)->Print("~/Herwig_comb_pt_QA.pdf");
0330 for(int i = 0; i<(int) Lead.size(); i++) Lead.at(i)->Print("~/Herwig_comb_pt_QA.pdf");
0331 for(int i = 0; i< 2; i++)
0332 for(int j = 0; j < 2; j++)
0333 RatioCanvi.at(i)->at(j)->Print("~/Herwig_comb_pt_QA.pdf");
0334 All.at(0)->Print("~/Herwig_comb_pt_QA.pdf)");
0335
0336
0337 return;
0338 }
0339
0340
0341 void MakeParticleRatios( std::map<std::string, particle_colls*>* h, std::map<std::string, particle_colls*>* p, std::map<std::string, particle_colls*>* r)
0342 {
0343 for(auto m:*h)
0344 {
0345 if(!m.second) continue;
0346 auto pt = conf->GetRatioPlot(h->at(m.first)->pt, p->at(m.first)->pt);
0347 auto n = conf->GetRatioPlot(h->at(m.first)->n, p->at(m.first)->n);
0348 auto phi_eta = conf->GetRatioPlot(h->at(m.first)->phi_eta, p->at(m.first)->phi_eta);
0349 particle_colls* part = new particle_colls;
0350 part->pt = pt;
0351 part->n = n;
0352 part->phi_eta = phi_eta;
0353 r->insert(std::pair<std::string, particle_colls*> (m.first,part));
0354 }
0355 return;
0356 }
0357 void CollectEventPlots(TDirectory* event, std::vector<TH1F*>* particle_level, std::vector<TH2F*>* particle_correlations, std::map<std::string, particle_colls*>* particle_coll)
0358 {
0359
0360 event->cd();
0361
0362
0363 TH1F* particle_eta = (TH1F*) event->Get("h_particle_eta");
0364 TH1F* particle_phi = (TH1F*) event->Get("h_particle_phi");
0365 TH1F* particle_e = (TH1F*) event->Get("h_particle_e");
0366 TH1F* particle_et = (TH1F*) event->Get("h_particle_et");
0367 TH1F* particle_pt = (TH1F*) event->Get("h_particle_pt");
0368 TH1F* total_E = (TH1F*) event->Get("h_total_E");
0369 particle_eta->Scale(1/(float)total_E->GetEntries());
0370 particle_phi->Scale(1/(float)total_E->GetEntries());
0371 particle_eta->SetYTitle(" N_{hits} / N_{evts}");
0372 particle_phi->SetYTitle(" N_{hits} / N_{evts}");
0373 particle_level->push_back(particle_eta);
0374 particle_level->push_back(particle_phi);
0375 particle_level->push_back(particle_e);
0376 particle_level->push_back(particle_et);
0377 particle_level->push_back(particle_pt);
0378 particle_level->push_back(total_E);
0379
0380
0381 TH2F* h_particle_et_eta = (TH2F*) event->Get("h_particle_et_eta");
0382 TH2F* h_particle_et_phi = (TH2F*) event->Get("h_particle_et_phi");
0383 TH2F* h_particle_pt_eta = (TH2F*) event->Get("h_particle_pt_eta");
0384 TH2F* h_particle_pt_phi = (TH2F*) event->Get("h_particle_pt_phi");
0385 TH2F* h_particle_e_eta = (TH2F*) event->Get("h_particle_e_eta");
0386 TH2F* h_particle_e_phi = (TH2F*) event->Get("h_particle_e_phi");
0387 TH2F* h_particle_phi_eta = (TH2F*) event->Get("h_particle_phi_eta");
0388
0389 particle_correlations->push_back(h_particle_et_eta);
0390 particle_correlations->push_back(h_particle_et_phi);
0391 particle_correlations->push_back(h_particle_pt_eta);
0392 particle_correlations->push_back(h_particle_pt_phi);
0393 particle_correlations->push_back(h_particle_e_eta);
0394 particle_correlations->push_back(h_particle_e_phi);
0395 particle_correlations->push_back(h_particle_phi_eta);
0396
0397
0398 TDirectory* particles = (TDirectory*) event->GetDirectory("ParticleCat");
0399 particles->cd();
0400 std::vector<std::string> particle_names {"electron", "proton", "neutron", "pion", "photon"};
0401 for(auto n:particle_names)
0402 {
0403 TH1F* h_p_pt = (TH1F*) particles->Get(std::format("h_{}_pt", n).c_str());
0404 TH1I* h_p_n = (TH1I*) particles->Get(std::format("h_{}_n", n).c_str());
0405 TH2F* h_p_ph = (TH2F*) particles->Get(std::format("h_{}_phi_eta", n).c_str());
0406 if(!h_p_pt) continue;
0407 particle_colls* part = new particle_colls;
0408 part->pt = h_p_pt;
0409 part->n = h_p_n;
0410 part->phi_eta = h_p_ph;
0411 particle_coll->insert(std::pair<std::string, particle_colls*>(n, part));
0412 }
0413 return;
0414 }
0415 void PlotEventObs(TH1F* herwig_obs, TH1F* pythia_obs, TCanvas* c1)
0416 {
0417
0418 std::string var = herwig_obs->GetXaxis()->GetTitle();
0419 std::vector<TPad*>* pads = conf->AddPads(c1);
0420 pads->at(1)->cd();
0421 TLegend* l_data=new TLegend(0.7, 0.4, 1, 0.58);
0422 TLegend* l_header=new TLegend(0.5, 0.6, 0.7, 1);
0423 conf->SetsPhenixHeaderLegend(l_header, tag);
0424 l_header->AddEntry("", std::format("Event {}", var).c_str(), "");
0425 conf->SetLegend(l_data);
0426 if(var.find("[GeV]") != std::string::npos) pads->at(1)->SetLogy();
0427 auto ratio = conf->GetRatioPlot(herwig_obs, pythia_obs);
0428 pythia_obs->SetMarkerStyle(24);
0429 herwig_obs->SetMarkerStyle(20);
0430 THStack* s=new THStack("s", "s");
0431 s->Add(herwig_obs);
0432 s->Add(pythia_obs);
0433 s->Draw("axis");
0434 s->Draw("plc pmc nostack same e1");
0435 s->GetXaxis()->SetTitle(var.c_str());
0436 s->GetYaxis()->SetTitle(herwig_obs->GetYaxis()->GetTitle());
0437 l_data->AddEntry(herwig_obs);
0438 l_data->AddEntry(pythia_obs);
0439 l_header->Draw();
0440 l_data->Draw("same");
0441 pads->at(0)->cd();
0442 ratio->SetMarkerStyle(34);
0443 ratio->Draw("pmc plc e1");
0444 l_data->AddEntry(ratio, "Herwig / Pythia");
0445 c1->cd();
0446 pads->at(0)->Draw();
0447 pads->at(1)->Draw();
0448 return;
0449 }
0450 void PlotEventObs(TH2F* herwig_obs, TH2F* pythia_obs, TCanvas* c1)
0451 {
0452
0453 std::string var = herwig_obs->GetXaxis()->GetTitle();
0454 std::string var2 = herwig_obs->GetYaxis()->GetTitle();
0455 std::vector<TPad*>* pads = new std::vector<TPad*>();
0456 TPad* p1=new TPad("p1", "p1", 0, 0.52, 0.48, 1);
0457 TPad* p2=new TPad("p2", "p2", 0.52, 0.52, 1, 1);
0458 TPad* p3=new TPad("p3", "p3", 0, 0, 0.48, 0.48);
0459 TPad* p4=new TPad("p4", "p4", 0.52, 0, 1, 0.48);
0460 pads->push_back(p1);
0461 pads->push_back(p2);
0462 pads->push_back(p3);
0463 pads->push_back(p4);
0464 pads->at(0)->cd();
0465 TLegend* l_header=new TLegend(0.1, 0.1, 1, 1);
0466 conf->SetsPhenixHeaderLegend(l_header, tag);
0467 l_header->AddEntry("", std::format("Event {} - {}", var, var2).c_str(), "");
0468 if(var.find("[GeV]") != std::string::npos) pads->at(1)->SetLogx();
0469 if(var2.find("[GeV]") != std::string::npos) pads->at(1)->SetLogy();
0470 pads->at(1)->SetLogz();
0471 if(var.find("[GeV]") == std::string::npos && var2.find("[GeV]") == std::string::npos)
0472 {
0473 pads->at(1)->SetLogz(0);
0474 gStyle->SetPalette(100, style_points->Enby_log_gradient_PT);
0475 }
0476 else{
0477 gStyle->SetPalette(100, style_points->Enby_gradient_PT);
0478 }
0479 auto ratio = conf->GetRatioPlot(herwig_obs, pythia_obs);
0480 l_header->Draw();
0481 pads->at(1)->cd();
0482 herwig_obs->Draw("colz");
0483 TLegend* l_data=new TLegend(0.5, 0.8, 1, 1);
0484 conf->SetLegend(l_data);
0485 l_data->SetTextSize(0.05f);
0486 l_data->AddEntry(herwig_obs, std::format("Herwig {}", var).c_str(), "");
0487 l_data->Draw();
0488 pads->at(2)->cd();
0489 if(var.find("[GeV]") != std::string::npos) pads->at(2)->SetLogx();
0490 if(var2.find("[GeV]") != std::string::npos) pads->at(2)->SetLogy();
0491 pads->at(2)->SetLogz();
0492 if(var.find("[GeV]") == std::string::npos && var2.find("[GeV]") == std::string::npos) pads->at(2)->SetLogz(0);
0493 pythia_obs->Draw("colz");
0494 TLegend* l_data_p=new TLegend(0.5, 0.8, 1, 1);
0495 conf->SetLegend(l_data_p);
0496 l_data_p->SetTextSize(0.05f);
0497 l_data_p->AddEntry(pythia_obs, std::format("Pythia {}", var).c_str(), "");
0498 l_data_p->Draw();
0499
0500 pads->at(3)->cd();
0501 if(var.find("[GeV]") != std::string::npos) pads->at(3)->SetLogx();
0502 if(var2.find("[GeV]") != std::string::npos) pads->at(3)->SetLogy();
0503 pads->at(3)->SetLogz();
0504 if(var.find("[GeV]") == std::string::npos && var2.find("[GeV]") == std::string::npos) pads->at(3)->SetLogz(0);
0505 ratio->SetMarkerStyle(34);
0506 ratio->Draw("colz");
0507 TLegend* l_data_r=new TLegend(0.5, 0.8, 1, 1);
0508 conf->SetLegend(l_data_r);
0509 l_data_r->SetTextSize(0.05f);
0510 l_data_r->AddEntry(pythia_obs, std::format(" Herwig / Pythia {}", var).c_str(), "");
0511 l_data_r->Draw();
0512 c1->cd();
0513 pads->at(0)->Draw();
0514 pads->at(1)->Draw();
0515 pads->at(2)->Draw();
0516 pads->at(3)->Draw();
0517 return;
0518 }
0519 void PlotEventObs(TH1F* herwig_particle, TH1F* pythia_particle, std::map<std::string, particle_colls*>* h_pc, std::map<std::string, particle_colls*>* p_pc, std::map<std::string, particle_colls*>* r_pc, TCanvas* c1)
0520 {
0521
0522 std::vector<TPad*>* pads=conf->AddPads(c1);
0523 pads->at(1)->cd();
0524 pads->at(1)->SetLogy();
0525 TLegend* l_data=new TLegend(0.3, 0.4, 1, 0.58);
0526 TLegend* l_header=new TLegend(0.5, 0.6, 0.7, 1);
0527 conf->SetsPhenixHeaderLegend(l_header, tag);
0528 l_header->AddEntry("", "Particle Species p_{T}", "");
0529 conf->SetLegend(l_data);
0530 l_data->SetNColumns(3);
0531 THStack* herwig = new THStack("herwig","herwig");
0532 THStack* pythia = new THStack("pythia","pythia");
0533 THStack* ratio = new THStack("ratio","ratio");
0534 herwig_particle->SetMarkerStyle(20);
0535 pythia_particle->SetMarkerStyle(24);
0536 herwig->Add(herwig_particle);
0537 pythia->Add(pythia_particle);
0538 pads->at(0)->cd();
0539 TH1F* ratio_particle=conf->GetRatioPlot(herwig_particle, pythia_particle);
0540 ratio_particle->SetMarkerStyle(37);
0541 ratio->Add(ratio_particle);
0542 l_data->AddEntry(herwig_particle, "Herwig All Final State Particles");
0543 l_data->AddEntry(pythia_particle, "Pythia All Final State Particles");
0544 l_data->AddEntry(ratio_particle, "Herwig / Pythia Particles");
0545 int i=1;
0546 for(auto m: *h_pc)
0547 {
0548 h_pc->at(m.first)->pt->SetMarkerStyle(i+20);
0549 p_pc->at(m.first)->pt->SetMarkerStyle(i+24);
0550 r_pc->at(m.first)->pt->SetMarkerStyle(2*i+39);
0551 if(i >= 4){
0552 m.second->pt->SetMarkerStyle(2*(i-4)+34);
0553 r_pc->at(m.first)->pt->SetMarkerStyle(2*i+39);
0554 }
0555 herwig->Add(h_pc->at(m.first)->pt);
0556 pythia->Add(p_pc->at(m.first)->pt);
0557 ratio->Add(r_pc->at(m.first)->pt);
0558 l_data->AddEntry( m.second->pt, std::format("Herwig Final State {}", m.first).c_str());
0559 l_data->AddEntry( p_pc->at(m.first)->pt, std::format("Pythia Final State {}", m.first).c_str());
0560 l_data->AddEntry( r_pc->at(m.first)->pt, std::format("Herwig / Pythia {}", m.first).c_str());
0561 }
0562 c1->cd();
0563 pads->at(1)->cd();
0564 bool herwig_high = false;
0565 if (herwig->GetMaximum() > pythia->GetMaximum() ) herwig_high=true;
0566 if (herwig_high) herwig->Draw("axis");
0567 else pythia->Draw("axis");
0568 herwig->Draw("pmc plc nostack same e1");
0569 pythia->Draw("same pmc plc nostack e1");
0570 herwig->GetXaxis()->SetTitle(herwig_particle->GetXaxis()->GetTitle());
0571 herwig->GetYaxis()->SetTitle(herwig_particle->GetYaxis()->GetTitle());
0572 l_data->Draw();
0573 l_header->Draw();
0574 pads->at(0)->cd();
0575 ratio->Draw("pmc plc nostack e1");
0576 ratio->GetYaxis()->SetRangeUser(0.01, 2.);
0577 ratio->GetYaxis()->SetTitle(" Herwig / Pythia" );
0578 ratio->Draw("pmc plc nostack e1");
0579 c1->cd();
0580 pads->at(0)->Draw();
0581 pads->at(1)->Draw();
0582 return;
0583 }
0584 void PlotEventObs(TH1I* herwig_particle, TH1I* pythia_particle, std::map<std::string, particle_colls*>* h_pc, std::map<std::string, particle_colls*>* p_pc, std::map<std::string, particle_colls*>* r_pc, TCanvas* c1)
0585 {
0586
0587 std::vector<TPad*>* pads=conf->AddPads(c1);
0588 pads->at(1)->cd();
0589 pads->at(1)->SetLogy();
0590 TLegend* l_data=new TLegend(0.2, 0.4, 0.6, 0.58);
0591 TLegend* l_header=new TLegend(0.5, 0.6, 0.7, 1);
0592 conf->SetsPhenixHeaderLegend(l_header, tag);
0593 l_header->AddEntry("", "Particle Species Count", "");
0594 conf->SetLegend(l_data);
0595 l_data->SetNColumns(3);
0596 THStack* herwig = new THStack("herwig","herwig");
0597 THStack* pythia = new THStack("pythia","pythia");
0598 THStack* ratio = new THStack("ratio","ratio");
0599 herwig_particle->SetMarkerStyle(20);
0600 pythia_particle->SetMarkerStyle(24);
0601 herwig_particle->GetXaxis()->SetRangeUser(0,200);
0602 herwig->Add(herwig_particle);
0603 pythia->Add(pythia_particle);
0604 pads->at(0)->cd();
0605 TH1I* ratio_particle=conf->GetRatioPlot(herwig_particle, pythia_particle);
0606 ratio_particle->SetMarkerStyle(37);
0607 ratio->Add(ratio_particle);
0608 l_data->AddEntry(herwig_particle, "Herwig All Final State Particles");
0609 l_data->AddEntry(pythia_particle, "Pythia All Final State Particles");
0610 l_data->AddEntry(ratio_particle, "Herwig / Pythia Particles");
0611 int i=1;
0612 for(auto m: *h_pc)
0613 {
0614 h_pc->at(m.first)->n->SetMarkerStyle(i+20);
0615 p_pc->at(m.first)->n->SetMarkerStyle(i+24);
0616 r_pc->at(m.first)->n->SetMarkerStyle(2*i+39);
0617 if(i >= 4){
0618 h_pc->at(m.first)->n->SetMarkerStyle(2*(i-4)+34);
0619 r_pc->at(m.first)->n->SetMarkerStyle(2*i+39);
0620 }
0621 pads->at(1)->cd();
0622 pads->at(0)->cd();
0623 herwig->Add(h_pc->at(m.first)->n);
0624 pythia->Add(p_pc->at(m.first)->n);
0625 ratio->Add(r_pc->at(m.first)->n);
0626 l_data->AddEntry( h_pc->at(m.first)->n, std::format("Herwig Final State {}", m.first).c_str());
0627 l_data->AddEntry( p_pc->at(m.first)->n, std::format("Pythia Final State {}", m.first).c_str());
0628 l_data->AddEntry( r_pc->at(m.first)->n, std::format("Herwig / Pythia {}", m.first).c_str());
0629 }
0630 c1->cd();
0631 pads->at(1)->cd();
0632 bool herwig_high = false;
0633 if (herwig->GetMaximum() > pythia->GetMaximum() ) herwig_high=true;
0634 if (herwig_high) herwig->Draw("axis");
0635 else pythia->Draw("axis");
0636 herwig->Draw("pmc plc nostack same e1");
0637 pythia->Draw("same pmc plc nostack e1");
0638 herwig->GetXaxis()->SetRangeUser(0, 200);
0639 pythia->GetXaxis()->SetRangeUser(0, 200);
0640 herwig->GetXaxis()->SetTitle(herwig_particle->GetXaxis()->GetTitle());
0641 l_data->Draw();
0642 l_header->Draw();
0643 pads->at(0)->cd();
0644 ratio->Draw("pmc plc nostack e1");
0645 ratio->GetXaxis()->SetTitle(herwig_particle->GetXaxis()->GetTitle());
0646 ratio->GetYaxis()->SetTitle(" Herwig / Pythia" );
0647 ratio->GetXaxis()->SetRangeUser(0, 200);
0648 ratio->GetYaxis()->SetRangeUser(0.01, 2.);
0649 ratio->Draw("pmc plc nostack e1");
0650 c1->cd();
0651 pads->at(0)->Draw();
0652 pads->at(1)->Draw();
0653 return;
0654 }
0655 void PlotEventObs(TH2F* particle, std::map<std::string, particle_colls*>* pc, TCanvas* c1, std::string generator)
0656 {
0657
0658 std::vector<TPad*>* pads = conf->Canvas2DDivide(c1);
0659 pads->at(0)->cd();
0660 TLegend* l_header=new TLegend(0.5, 0.6, 1, 1);
0661 conf->SetsPhenixHeaderLegend(l_header, tag);
0662 l_header->SetTextSize(0.03f);
0663 l_header->AddEntry("", generator.c_str(), "");
0664 l_header->AddEntry("", "Final State #eta - #varphi hit distribution", "");
0665 particle->Draw("colz");
0666 l_header->Draw();
0667 int i=1;
0668 for(auto m:*pc)
0669 {
0670 pads->at(i)->cd();
0671 TLegend* l_data=new TLegend(0.5, 0.8, 1, 0.9);
0672 conf->SetLegend(l_data);
0673 l_data->AddEntry("", m.first.c_str(), "");
0674 m.second->phi_eta->Draw("colz");
0675 l_data->Draw("same");
0676 i++;
0677 }
0678 c1->cd();
0679 for(int i=0; i<(int)pads->size(); i++) pads->at(i)->Draw();
0680 return;
0681 }
0682
0683
0684 void PlotEventPlots(TDirectory* herwig_event, TDirectory* pythia_event, std::vector<TCanvas*>* Canvi)
0685 {
0686 std::vector<TH1F*>* herwig_particle_level = new std::vector<TH1F*> ();
0687 std::vector<TH2F*>* herwig_particle_correlations= new std::vector<TH2F*> ();
0688 TH1I* herwig_particle_n = (TH1I*) herwig_event->Get("h_particle_n");
0689 std::map<std::string, particle_colls*>* herwig_particle_coll = new std::map<std::string, particle_colls*> ();
0690 std::vector<TH1F*>* pythia_particle_level = new std::vector<TH1F*> ();
0691 std::vector<TH2F*>* pythia_particle_correlations= new std::vector<TH2F*> ();
0692 TH1I* pythia_particle_n = (TH1I*) pythia_event->Get("h_particle_n");
0693 std::map<std::string, particle_colls*>* pythia_particle_coll = new std::map<std::string, particle_colls*> ();
0694 CollectEventPlots(herwig_event, herwig_particle_level, herwig_particle_correlations, herwig_particle_coll);
0695 CollectEventPlots(pythia_event, pythia_particle_level, pythia_particle_correlations, pythia_particle_coll);
0696 std::map<std::string, particle_colls*>* ratio_particle_coll = new std::map<std::string, particle_colls*> ();
0697 MakeParticleRatios( herwig_particle_coll, pythia_particle_coll, ratio_particle_coll);
0698 gStyle->SetPalette(100, style_points->Lesbian_gradient_PT);
0699 for(int i=0; i<(int)herwig_particle_level->size(); i++){
0700 std::string var = herwig_particle_level->at(i)->GetXaxis()->GetTitle();
0701 TCanvas* c1=new TCanvas(std::format("Canv_{}", var).c_str(),std::format("Canv_{}", var).c_str());
0702 PlotEventObs(herwig_particle_level->at(i), pythia_particle_level->at(i), c1);
0703 Canvi->push_back(c1);
0704 if(var.find("p_{T}") != std::string::npos){
0705 TCanvas* c2 = new TCanvas("pt", "pt");
0706 PlotEventObs(herwig_particle_level->at(i), pythia_particle_level->at(i), herwig_particle_coll, pythia_particle_coll, ratio_particle_coll, c2);
0707 Canvi->push_back(c2);
0708 }
0709 }
0710 for(int i=0; i<(int)herwig_particle_correlations->size(); i++){
0711 std::string var = herwig_particle_correlations->at(i)->GetXaxis()->GetTitle();
0712 std::string var2 = herwig_particle_correlations->at(i)->GetYaxis()->GetTitle();
0713 TCanvas* c1=new TCanvas(std::format("Canv2d_{}_{}", var, var2).c_str(),std::format("Canv2d_{}_{}", var, var2).c_str());
0714 PlotEventObs(herwig_particle_correlations->at(i), pythia_particle_correlations->at(i), c1);
0715 Canvi->push_back(c1);
0716 if(var.find("eta") !=std::string::npos && var2.find("varphi") != std::string::npos)
0717 {
0718 TCanvas* ch = new TCanvas("etph_h", "etph_h");
0719 TCanvas* cp = new TCanvas("etph_p", "etph_p");
0720 TCanvas* cr = new TCanvas("etph_r", "etph_r");
0721 TH2F* ratio = conf->GetRatioPlot(herwig_particle_correlations->at(i), pythia_particle_correlations->at(i));
0722 PlotEventObs(herwig_particle_correlations->at(i), herwig_particle_coll, ch, "Herwig7.2");
0723 PlotEventObs(pythia_particle_correlations->at(i), pythia_particle_coll, cp, "Pythia8");
0724 PlotEventObs(ratio, ratio_particle_coll, cr, "Herwig / Pythia");
0725 }
0726 }
0727 gStyle->SetPalette(100, style_points->Trans_gradient_PT);
0728 TCanvas* c3 = new TCanvas("n", "n");
0729 PlotEventObs(herwig_particle_n, pythia_particle_n, herwig_particle_coll, pythia_particle_coll, ratio_particle_coll, c3);
0730 Canvi->push_back(c3);
0731 return;
0732
0733 }
0734 void PlotSingleGenPhotonJetObs(std::vector<TH2F*>* obs, TCanvas* c1, std::vector<TPad*>* pads, std::string label)
0735 {
0736 c1->cd();
0737 pads->at(0)->cd();
0738 TLegend* l_label=new TLegend(0.1, 0.1, 1, 1);
0739 conf->SetsPhenixHeaderLegend(l_label, tag);
0740 l_label->AddEntry("", label.c_str(), "");
0741 l_label->AddEntry("", std::format("Jet {} Versus Photon {}", obs->at(0)->GetXaxis()->GetTitle(), obs->at(0)->GetYaxis()->GetTitle()).c_str(), "");
0742 for(int i=0; i<(int)obs->size(); i++)
0743 {
0744 pads->at(i+1)->cd();
0745 TLegend* l_data=new TLegend(0.7, 0.9, 0.9, 1);
0746 conf->SetLegend(l_data);
0747 l_data->AddEntry(obs->at(i), obs->at(i)->GetTitle(), "");
0748 obs->at(i)->Draw("colz");
0749 l_data->Draw("same");
0750 c1->cd();
0751 pads->at(i+1)->Draw();
0752 }
0753 return;
0754 }
0755 void PlotPhotonJetObs(std::vector<TH2F*>* herwig_obs, std::vector<TH2F*>* pythia_obs, TCanvas* herwig_Canvas, TCanvas* pythia_Canvas, TCanvas* ratio_Canvas)
0756 {
0757 std::vector<TPad*>* subdivided_herwig = conf->Canvas2DDivide(herwig_Canvas);
0758 std::vector<TPad*>* subdivided_pythia = conf->Canvas2DDivide(pythia_Canvas);
0759 std::vector<TPad*>* subdivided_ratio = conf->Canvas2DDivide(ratio_Canvas);
0760 std::vector<TH2F*>* ratio_obs = conf->GetRatioPlots(herwig_obs, pythia_obs);
0761 PlotSingleGenPhotonJetObs(herwig_obs, herwig_Canvas, subdivided_herwig, "Herwig7.2");
0762 PlotSingleGenPhotonJetObs(pythia_obs, pythia_Canvas, subdivided_pythia, "Pythia8");
0763 PlotSingleGenPhotonJetObs(ratio_obs, ratio_Canvas, subdivided_ratio, "Herwig / Pythia");
0764 return;
0765 }
0766 void CollectJets(TDirectory* jets, std::array<std::vector<TH1F*>*, 4>* all_jets, std::array<std::vector<TH1F*>*, 4>* lead_jets, std::vector<TH1I*>* all_jet_n, std::vector<TH1I*>* all_jet_comp, std::vector<TH1I*>* lead_jet_comp)
0767 {
0768 for(int i=2; i<7; i++)
0769 {
0770 jets->cd();
0771 TDirectory* r_dir=(TDirectory*)jets->GetDirectory(std::format("R0{}Jets", i).c_str());
0772 r_dir->cd();
0773 all_jets->at(0)->push_back((TH1F*)r_dir->Get(std::format("h_jet_r0{}_pt", i).c_str()));
0774 all_jets->at(1)->push_back((TH1F*)r_dir->Get(std::format("h_jet_r0{}_e", i).c_str()));
0775 all_jets->at(2)->push_back((TH1F*)r_dir->Get(std::format("h_jet_r0{}_phi", i).c_str()));
0776 all_jets->at(3)->push_back((TH1F*)r_dir->Get(std::format("h_jet_r0{}_eta", i).c_str()));
0777 all_jet_n->push_back((TH1I*)r_dir->Get(std::format("h_jet_r0{}_n",i).c_str()));
0778 all_jet_comp->push_back((TH1I*)r_dir->Get(std::format("h_jet_r0{}_comp",i).c_str()));
0779 TDirectory* leaddir=(TDirectory*)r_dir->GetDirectory("Lead_Jets");
0780 lead_jets->at(0)->push_back((TH1F*)leaddir->Get(std::format("h_lead_jet_r0{}_pt", i).c_str()));
0781 lead_jets->at(1)->push_back((TH1F*)leaddir->Get(std::format("h_lead_jet_r0{}_e", i).c_str()));
0782 lead_jets->at(2)->push_back((TH1F*)leaddir->Get(std::format("h_lead_jet_r0{}_phi", i).c_str()));
0783 lead_jets->at(3)->push_back((TH1F*)leaddir->Get(std::format("h_lead_jet_r0{}_eta", i).c_str()));
0784 lead_jet_comp->push_back((TH1I*)leaddir->Get(std::format("h_lead_jet_r0{}_comp",i).c_str()));
0785 r_dir->cd();
0786 float n_evts = (float)lead_jets->at(0)->back()->GetEntries();
0787 all_jets->at(2)->back()->Scale(1/n_evts);
0788 all_jets->at(2)->back()->SetYTitle(" N_{jets} / N_{evts} ");
0789 all_jets->at(3)->back()->Scale(1/n_evts);
0790 all_jets->at(3)->back()->SetYTitle(" N_{jets} / N_{evts} ");
0791 lead_jets->at(2)->back()->Scale(1/n_evts);
0792 lead_jets->at(2)->back()->SetYTitle(" N_{jets} / N_{evts} ");
0793 lead_jets->at(3)->back()->Scale(1/n_evts);
0794 lead_jets->at(3)->back()->SetYTitle(" N_{jets} / N_{evts} ");
0795 }
0796 return;
0797
0798 }
0799 void CollectPhotons(TDirectory* photons, std::array<TH1F*, 4>* all_photons, std::array<TH1F*, 4>* lead_photons, std::array<TH1F*, 4>* direct_photons, std::array<TH1F*, 4>* frag_photons, TH1I* all_photons_n, TH1I* direct_photons_n, TH1I* frag_photons_n)
0800 {
0801 photons->cd();
0802 all_photons->at(0)=(TH1F*)photons->Get("h_photons_pt");
0803 all_photons->at(1)=(TH1F*)photons->Get("h_photons_e");
0804 all_photons->at(2)=(TH1F*)photons->Get("h_photons_phi");
0805 all_photons->at(3)=(TH1F*)photons->Get("h_photons_eta");
0806 all_photons_n=(TH1I*)photons->Get("h_photon_n");
0807 TDirectory* leaddir=(TDirectory*)photons->GetDirectory("Lead_Photons");
0808 lead_photons->at(0)=(TH1F*)leaddir->Get("h_lead_photons_pt");
0809 lead_photons->at(1)=(TH1F*)leaddir->Get("h_lead_photons_e");
0810 lead_photons->at(2)=(TH1F*)leaddir->Get("h_lead_photons_phi");
0811 lead_photons->at(3)=(TH1F*)leaddir->Get("h_lead_photons_eta");
0812 photons->cd();
0813 TDirectory* directdir=(TDirectory*)photons->GetDirectory("Direct_Photons");
0814 direct_photons->at(0)=(TH1F*)directdir->Get("h_direct_photons_pt");
0815 direct_photons->at(1)=(TH1F*)directdir->Get("h_direct_photons_e");
0816 direct_photons->at(2)=(TH1F*)directdir->Get("h_direct_photons_phi");
0817 direct_photons->at(3)=(TH1F*)directdir->Get("h_direct_photons_eta");
0818 direct_photons_n=(TH1I*)directdir->Get("h_direct_photon_n");
0819 photons->cd();
0820 TDirectory* fragdir=(TDirectory*)photons->GetDirectory("Fragmentation_Photons");
0821 frag_photons->at(0)=(TH1F*)fragdir->Get("h_frag_photons_pt");
0822 frag_photons->at(1)=(TH1F*)fragdir->Get("h_frag_photons_e");
0823 frag_photons->at(2)=(TH1F*)fragdir->Get("h_frag_photons_phi");
0824 frag_photons->at(3)=(TH1F*)fragdir->Get("h_frag_photons_eta");
0825 frag_photons_n=(TH1I*)fragdir->Get("h_frag_photon_n");
0826 photons->cd();
0827 float n_evts = (float) lead_photons->at(0)->GetEntries();
0828
0829 all_photons->at(2)->Scale(1/n_evts);
0830 all_photons->at(2)->SetYTitle(" N_{#gamma} / N_{evts} ");
0831 all_photons->at(3)->Scale(1/n_evts);
0832 all_photons->at(3)->SetYTitle(" N_{#gamma} / N_{evts} ");
0833 lead_photons->at(2)->Scale(1/n_evts);
0834 lead_photons->at(2)->SetYTitle(" N_{#gamma} / N_{evts} ");
0835 lead_photons->at(3)->Scale(1/n_evts);
0836 lead_photons->at(3)->SetYTitle(" N_{#gamma} / N_{evts} ");
0837 direct_photons->at(2)->Scale(1/n_evts);
0838 direct_photons->at(2)->SetYTitle(" N_{#gamma} / N_{evts} ");
0839 direct_photons->at(3)->Scale(1/n_evts);
0840 direct_photons->at(3)->SetYTitle(" N_{#gamma} / N_{evts} ");
0841 frag_photons->at(2)->Scale(1/n_evts);
0842 frag_photons->at(2)->SetYTitle(" N_{#gamma} / N_{evts} ");
0843 frag_photons->at(3)->Scale(1/n_evts);
0844 frag_photons->at(3)->SetYTitle(" N_{#gamma} / N_{evts} ");
0845 return;
0846
0847 }
0848 void PlotJetObs(std::vector<TH1F*>* herwig_obs, std::vector<TH1F*>* pythia_obs, TCanvas* obs_canv)
0849 {
0850
0851 TLegend* l_data=new TLegend(0.7, 0.4, 1, 0.58);
0852 TLegend* l_header=new TLegend(0.5, 0.6, 0.7, 1);
0853 conf->SetsPhenixHeaderLegend(l_header, tag);
0854 l_header->AddEntry("", std::format("Jet {}", herwig_obs->at(0)->GetXaxis()->GetTitle()).c_str(), "");
0855 conf->SetLegend(l_data);
0856 l_data->SetNColumns(3);
0857 std::vector<TPad*>* pads=conf->AddPads(obs_canv);
0858 std::string var=herwig_obs->at(0)->GetXaxis()->GetTitle();
0859 bool ispt = false;
0860 if(var.find("p_{T}") !=std::string::npos) ispt=true;
0861 if(ispt)
0862 {
0863 conf->ScaleXS(herwig_obs, true);
0864 conf->ScaleXS(pythia_obs, false);
0865 pads->at(1)->SetLogy();
0866 }
0867 else if(var.find("[GeV]") != std::string::npos) pads->at(1)->SetLogy();
0868 pads->at(1)->cd();
0869 THStack* herwig = new THStack("herwig", "herwig");
0870 THStack* pythia = new THStack("herwig", "herwig");
0871 for(int i= 0 ; i <(int)herwig_obs->size()-1; i++)
0872 {
0873 pads->at(1)->cd();
0874 herwig_obs->at(i)->SetMarkerStyle(i+20);
0875 herwig_obs->at(i)->SetMarkerSize(2);
0876 if(i==5) herwig_obs->at(i)->SetMarkerStyle(33);
0877 else if(i==6) herwig_obs->at(i)->SetMarkerStyle(34);
0878 herwig->Add(herwig_obs->at(i));
0879 pythia_obs->at(i)->SetLineColor(herwig_obs->at(i)->GetLineColor());
0880 pythia_obs->at(i)->SetMarkerColor(herwig_obs->at(i)->GetMarkerColor());
0881 pythia_obs->at(i)->SetMarkerStyle(i+24);
0882 pythia_obs->at(i)->SetMarkerSize(2);
0883 pythia->Add(pythia_obs->at(i));
0884 l_data->AddEntry(herwig_obs->at(i), std::format("Herwig {}", herwig_obs->at(i)->GetTitle()).c_str());
0885 l_data->AddEntry(pythia_obs->at(i), std::format("Pythia ", pythia_obs->at(i)->GetTitle()).c_str());
0886 pads->at(0)->cd();
0887 TH1F* h_ratio = conf->GetRatioPlot(herwig_obs->at(i), pythia_obs->at(i));
0888 h_ratio->SetMarkerStyle(2*i+37);
0889 h_ratio->Draw("plc pmc same e1");
0890 l_data->AddEntry(h_ratio);
0891 }
0892 pads->at(1)->cd();
0893 bool herwig_high = false;
0894 if (herwig->GetMaximum() > pythia->GetMaximum() ) herwig_high=true;
0895 if (herwig_high) herwig->Draw("axis nostack");
0896 else pythia->Draw("axis nostack");
0897 herwig->Draw("plc pmc nostack same e1");
0898 pythia->Draw("plc pmc same nostack e1");
0899 pythia->GetXaxis()->SetTitle(herwig_obs->at(0)->GetXaxis()->GetTitle());
0900 pythia->GetYaxis()->SetTitle(herwig_obs->at(0)->GetYaxis()->GetTitle());
0901 l_data->Draw();
0902 l_header->Draw();
0903 obs_canv->cd();
0904 pads->at(0)->Draw();
0905 pads->at(1)->Draw();
0906 return;
0907 }
0908 void PlotJetObs(std::vector<TH1I*>* herwig_obs, std::vector<TH1I*>* pythia_obs, TCanvas* obs_canv)
0909 {
0910
0911 TLegend* l_data=new TLegend(0.6, 0.3, 1, 0.5);
0912 TLegend* l_header=new TLegend(0.8, 0.6, 1, 1);
0913 conf->SetsPhenixHeaderLegend(l_header, tag);
0914 conf->SetLegend(l_data);
0915 l_data->SetNColumns(3);
0916 std::vector<TPad*>* pads=conf->AddPads(obs_canv);
0917 conf->ScaleXS(herwig_obs, true);
0918 conf->ScaleXS(pythia_obs, false);
0919 THStack* herwig = new THStack("herwig", "herwig");
0920 THStack* pythia = new THStack("herwig", "herwig");
0921 for(int i=0; i<(int)herwig_obs->size(); i++)
0922 {
0923 pads->at(1)->cd();
0924 herwig_obs->at(i)->SetMarkerStyle(i+20);
0925 herwig_obs->at(i)->SetMarkerSize(2);
0926 if(i==5) herwig_obs->at(i)->SetMarkerStyle(33);
0927 else if(i==6) herwig_obs->at(i)->SetMarkerStyle(34);
0928 herwig->Add(herwig_obs->at(i));
0929 pythia_obs->at(i)->SetMarkerStyle(i+24);
0930 pythia_obs->at(i)->SetMarkerSize(2);
0931 pythia->Add(pythia_obs->at(i));
0932 l_data->AddEntry(herwig_obs->at(i), std::format("Herwig {}", herwig_obs->at(i)->GetTitle()).c_str());
0933 l_data->AddEntry(pythia_obs->at(i), std::format("Pythia {}", pythia_obs->at(i)->GetTitle()).c_str());
0934 pads->at(0)->cd();
0935 TH1I* h_ratio = conf->GetRatioPlot(herwig_obs->at(i), pythia_obs->at(i));
0936 h_ratio->SetMarkerStyle(2*(i)+37);
0937 h_ratio->Draw("same plc pmc");
0938 l_data->AddEntry(h_ratio);
0939 }
0940 pads->at(1)->cd();
0941 pads->at(1)->SetLogy();
0942 l_data->Draw();
0943 l_header->Draw();
0944 bool herwig_high = false;
0945 if (herwig->GetMaximum() > pythia->GetMaximum() ) herwig_high=true;
0946 if (herwig_high) herwig->Draw("axis");
0947 else pythia->Draw("axis");
0948 herwig->Draw("plc pmc nostack same e1");
0949 pythia->Draw("plc pmc same nostack e1");
0950 pythia->GetXaxis()->SetTitle(herwig_obs->at(0)->GetXaxis()->GetTitle());
0951 pythia->GetYaxis()->SetTitle(herwig_obs->at(0)->GetYaxis()->GetTitle());
0952
0953 obs_canv->cd();
0954 pads->at(0)->Draw();
0955 pads->at(1)->Draw();
0956 return;
0957 }
0958 void PlotPhotonObs(TH1F* herwig_obs, TH1F* pythia_obs, TCanvas* obs_canv, int i)
0959 {
0960
0961 TLegend* l_data=new TLegend(0.6, 0.3, 1, 0.5);
0962 TLegend* l_header=new TLegend(0.8, 0.6, 1, 1);
0963 conf->SetsPhenixHeaderLegend(l_header, tag);
0964 conf->SetLegend(l_data);
0965 l_data->SetNColumns(3);
0966 std::vector<TPad*>* pads=conf->AddPads(obs_canv);
0967 conf->ScaleXS(herwig_obs, true);
0968 conf->ScaleXS(pythia_obs, false);
0969 pads->at(1)->cd();
0970 herwig_obs->SetMarkerStyle(i+20);
0971 herwig_obs->SetMarkerSize(2);
0972 if(i==5) herwig_obs->SetMarkerStyle(33);
0973 else if(i==6) herwig_obs->SetMarkerStyle(34);
0974 THStack* st=new THStack("s1", "s1");
0975 st->Add(herwig_obs);
0976 pythia_obs->SetMarkerStyle(i+24);
0977 pythia_obs->SetMarkerSize(2);
0978 st->Add(pythia_obs);
0979 st->Draw("axis");
0980 st->Draw("plc pmc nostack same e1");
0981 l_data->AddEntry(herwig_obs, std::format("Herwig {}", herwig_obs->GetTitle()).c_str());
0982 l_data->AddEntry(pythia_obs, std::format("Pythia {}", pythia_obs->GetTitle()).c_str());
0983 pads->at(0)->cd();
0984 TH1F* h_ratio = conf->GetRatioPlot(herwig_obs, pythia_obs);
0985 h_ratio->SetMarkerStyle(2*(i)+37);
0986 h_ratio->Draw("same");
0987 l_data->AddEntry(h_ratio);
0988 pads->at(1)->cd();
0989 l_data->Draw();
0990 obs_canv->cd();
0991 pads->at(0)->Draw();
0992 pads->at(1)->Draw();
0993 return;
0994 }
0995 void PlotPhotonObs(TH1I* herwig_obs, TH1I* pythia_obs, TCanvas* obs_canv, int i)
0996 {
0997
0998 TLegend* l_data=new TLegend(0.6, 0.3, 1, 0.5);
0999 TLegend* l_header=new TLegend(0.8, 0.6, 1, 1);
1000 conf->SetsPhenixHeaderLegend(l_header, tag);
1001 conf->SetLegend(l_data);
1002 l_data->SetNColumns(3);
1003 std::vector<TPad*>* pads=conf->AddPads(obs_canv);
1004 conf->ScaleXS(herwig_obs, true);
1005 conf->ScaleXS(pythia_obs, false);
1006 pads->at(1)->cd();
1007 herwig_obs->SetLineColor((i)*22+1);
1008 herwig_obs->SetMarkerColor(i*22+1);
1009 herwig_obs->SetMarkerStyle(i+20);
1010 herwig_obs->SetMarkerSize(2);
1011 if(i==5) herwig_obs->SetMarkerStyle(33);
1012 else if(i==6) herwig_obs->SetMarkerStyle(34);
1013 herwig_obs->Draw("same e1");
1014 pythia_obs->SetLineColor((i)*22+1);
1015 pythia_obs->SetMarkerColor((i)*22+1);
1016 pythia_obs->SetMarkerStyle(i+24);
1017 pythia_obs->SetMarkerSize(2);
1018 pythia_obs->Draw("same e1");
1019 l_data->AddEntry(herwig_obs, std::format("Herwig {}", herwig_obs->GetTitle()).c_str());
1020 l_data->AddEntry(pythia_obs, std::format("Pythia {}", pythia_obs->GetTitle()).c_str());
1021 pads->at(0)->cd();
1022 TH1I* h_ratio = conf->GetRatioPlot(herwig_obs, pythia_obs);
1023 h_ratio->SetMarkerStyle(2*(i)+37);
1024 h_ratio->Draw("same");
1025 l_data->AddEntry(h_ratio);
1026 pads->at(1)->cd();
1027 l_data->Draw();
1028 obs_canv->cd();
1029 pads->at(0)->Draw();
1030 pads->at(1)->Draw();
1031 return;
1032 }
1033 void PlotJetPlots(TDirectory* herwig_jets, TDirectory* pythia_jets, std::vector<TCanvas*>*Canvi)
1034 {
1035
1036 std::vector<TH1F*>* herwig_pt = new std::vector<TH1F*> ();
1037 std::vector<TH1F*>* herwig_e = new std::vector<TH1F*> ();
1038 std::vector<TH1F*>* herwig_phi = new std::vector<TH1F*> ();
1039 std::vector<TH1F*>* herwig_eta = new std::vector<TH1F*> ();
1040 std::vector<TH1I*>* herwig_n_jets = new std::vector<TH1I*> ();
1041 std::vector<TH1I*>* herwig_n_comp = new std::vector<TH1I*> ();
1042 std::array<std::vector<TH1F*>*, 4>* herwig_jet_array =new std::array<std::vector<TH1F*>*, 4>();
1043 herwig_jet_array->at(0)=herwig_pt;
1044 herwig_jet_array->at(1)=herwig_e;
1045 herwig_jet_array->at(2)=herwig_phi;
1046 herwig_jet_array->at(3)=herwig_eta;
1047
1048 std::vector<TH1F*>* herwig_lead_pt = new std::vector<TH1F*> ();
1049 std::vector<TH1F*>* herwig_lead_e = new std::vector<TH1F*> ();
1050 std::vector<TH1F*>* herwig_lead_phi = new std::vector<TH1F*> ();
1051 std::vector<TH1F*>* herwig_lead_eta = new std::vector<TH1F*> ();
1052 std::vector<TH1I*>* herwig_lead_n_comp = new std::vector<TH1I*> ();
1053 std::array<std::vector<TH1F*>*, 4>* herwig_lead_jet_array =new std::array<std::vector<TH1F*>*, 4>();
1054 herwig_lead_jet_array->at(0)=herwig_lead_pt;
1055 herwig_lead_jet_array->at(1)=herwig_lead_e;
1056 herwig_lead_jet_array->at(2)=herwig_lead_phi;
1057 herwig_lead_jet_array->at(3)=herwig_lead_eta;
1058
1059 CollectJets(herwig_jets, herwig_jet_array, herwig_lead_jet_array, herwig_n_jets, herwig_n_comp, herwig_lead_n_comp);
1060
1061 std::vector<TH1F*>* pythia_pt = new std::vector<TH1F*> ();
1062 std::vector<TH1F*>* pythia_e = new std::vector<TH1F*> ();
1063 std::vector<TH1F*>* pythia_phi = new std::vector<TH1F*> ();
1064 std::vector<TH1F*>* pythia_eta = new std::vector<TH1F*> ();
1065 std::vector<TH1I*>* pythia_n_jets = new std::vector<TH1I*> ();
1066 std::vector<TH1I*>* pythia_n_comp = new std::vector<TH1I*> ();
1067 std::array<std::vector<TH1F*>*, 4>* pythia_jet_array =new std::array<std::vector<TH1F*>*, 4>();
1068 pythia_jet_array->at(0)=pythia_pt;
1069 pythia_jet_array->at(1)=pythia_e;
1070 pythia_jet_array->at(2)=pythia_phi;
1071 pythia_jet_array->at(3)=pythia_eta;
1072
1073 std::vector<TH1F*>* pythia_lead_pt = new std::vector<TH1F*> ();
1074 std::vector<TH1F*>* pythia_lead_e = new std::vector<TH1F*> ();
1075 std::vector<TH1F*>* pythia_lead_phi = new std::vector<TH1F*> ();
1076 std::vector<TH1F*>* pythia_lead_eta = new std::vector<TH1F*> ();
1077 std::vector<TH1I*>* pythia_lead_n_comp = new std::vector<TH1I*> ();
1078 std::array<std::vector<TH1F*>*, 4>* pythia_lead_jet_array =new std::array<std::vector<TH1F*>*, 4>();
1079 pythia_lead_jet_array->at(0)=pythia_lead_pt;
1080 pythia_lead_jet_array->at(1)=pythia_lead_e;
1081 pythia_lead_jet_array->at(2)=pythia_lead_phi;
1082 pythia_lead_jet_array->at(3)=pythia_lead_eta;
1083 CollectJets(pythia_jets, pythia_jet_array, pythia_lead_jet_array, pythia_n_jets, pythia_n_comp, pythia_lead_n_comp);
1084 TCanvas* J_pt=new TCanvas("jet_pt", "jet_pt");
1085 PlotJetObs(herwig_jet_array->at(0), pythia_jet_array->at(0), J_pt);
1086 J_pt->SetLogy();
1087 TCanvas* J_l_pt=new TCanvas("jet_l_pt", "jet_l_pt");
1088 PlotJetObs(herwig_lead_jet_array->at(0), pythia_lead_jet_array->at(0), J_l_pt);
1089 J_l_pt->SetLogy();
1090 TCanvas* J_e=new TCanvas("jet_e", "jet_e");
1091 PlotJetObs(herwig_jet_array->at(1), pythia_jet_array->at(1), J_e);
1092 J_e->SetLogy();
1093 TCanvas* J_l_e=new TCanvas("jet_l_e", "jet_l_e");
1094 PlotJetObs(herwig_lead_jet_array->at(1), pythia_lead_jet_array->at(1), J_l_e);
1095 J_l_e->SetLogy();
1096 TCanvas* J_phi=new TCanvas("jet_phi", "jet_phi");
1097 PlotJetObs(herwig_jet_array->at(2), pythia_jet_array->at(2), J_phi);
1098 TCanvas* J_l_phi=new TCanvas("jet_l_phi", "jet_l_phi");
1099 PlotJetObs(herwig_lead_jet_array->at(2), pythia_lead_jet_array->at(2), J_l_phi);
1100 TCanvas* J_eta=new TCanvas("jet_eta", "jet_eta");
1101 PlotJetObs(herwig_jet_array->at(3), pythia_jet_array->at(3), J_eta);
1102 TCanvas* J_l_eta=new TCanvas("jet_l_eta", "jet_l_eta");
1103 PlotJetObs(herwig_lead_jet_array->at(3), pythia_lead_jet_array->at(3), J_l_eta);
1104 TCanvas* J_n_comp=new TCanvas("jet_n_comp", "jet_n_comp");
1105 PlotJetObs(herwig_n_comp, pythia_n_comp, J_n_comp);
1106 TCanvas* J_l_n_comp=new TCanvas("jet_l_n_comp", "jet_l_n_comp");
1107 PlotJetObs(herwig_lead_n_comp, pythia_lead_n_comp, J_l_n_comp);
1108 TCanvas* J_N=new TCanvas("jet_N", "jet_N");
1109 PlotJetObs(herwig_n_jets, pythia_n_jets, J_N);
1110
1111 Canvi->push_back(J_pt);
1112 Canvi->push_back(J_l_pt);
1113 Canvi->push_back(J_e);
1114 Canvi->push_back(J_l_e);
1115 Canvi->push_back(J_phi);
1116 Canvi->push_back(J_l_phi);
1117 Canvi->push_back(J_eta);
1118 Canvi->push_back(J_l_eta);
1119 Canvi->push_back(J_n_comp);
1120 Canvi->push_back(J_l_n_comp);
1121 Canvi->push_back(J_N);
1122
1123 storage->cd();
1124 TDirectory* hwj=(TDirectory*)storage->mkdir("Herwig_jets");
1125 hwj->cd();
1126 for(int i=0; i<(int)herwig_pt->size(); i++) herwig_pt->at(i)->Write();
1127 for(int i=0; i<(int)herwig_lead_pt->size(); i++) herwig_lead_pt->at(i)->Write();
1128 storage->cd();
1129 TDirectory* pj=(TDirectory*)storage->mkdir("Pythia_jets");
1130 pj->cd();
1131 for(int i=0; i<(int)pythia_pt->size(); i++) pythia_pt->at(i)->Write();
1132 for(int i=0; i<(int)pythia_lead_pt->size(); i++) pythia_lead_pt->at(i)->Write();
1133 storage->cd();
1134
1135 return;
1136
1137 }
1138
1139 void PlotPhotonPlots(TDirectory* herwig_photons, TDirectory* pythia_photons, std::vector<TCanvas*>*Canvi)
1140 {
1141
1142 TH1F* herwig_pt {};
1143 TH1F* herwig_e {};
1144 TH1F* herwig_phi {};
1145 TH1F* herwig_eta {};
1146 TH1I* herwig_n_photons {};
1147 std::array<TH1F*, 4>* herwig_photon_array =new std::array<TH1F*, 4>();
1148 herwig_photon_array->at(0)=herwig_pt;
1149 herwig_photon_array->at(1)=herwig_e;
1150 herwig_photon_array->at(2)=herwig_phi;
1151 herwig_photon_array->at(3)=herwig_eta;
1152
1153 TH1F* herwig_lead_pt {};
1154 TH1F* herwig_lead_e {};
1155 TH1F* herwig_lead_phi {};
1156 TH1F* herwig_lead_eta {};
1157 std::array<TH1F*, 4>* herwig_lead_photon_array =new std::array<TH1F*, 4>();
1158 herwig_lead_photon_array->at(0)=herwig_lead_pt;
1159 herwig_lead_photon_array->at(1)=herwig_lead_e;
1160 herwig_lead_photon_array->at(2)=herwig_lead_phi;
1161 herwig_lead_photon_array->at(3)=herwig_lead_eta;
1162
1163 TH1F* herwig_direct_pt {};
1164 TH1F* herwig_direct_e {};
1165 TH1F* herwig_direct_phi {};
1166 TH1F* herwig_direct_eta {};
1167 TH1I* herwig_direct_n_photons {};
1168 std::array<TH1F*, 4>* herwig_direct_photon_array =new std::array<TH1F*, 4>();
1169 herwig_direct_photon_array->at(0)=herwig_direct_pt;
1170 herwig_direct_photon_array->at(1)=herwig_direct_e;
1171 herwig_direct_photon_array->at(2)=herwig_direct_phi;
1172 herwig_direct_photon_array->at(3)=herwig_direct_eta;
1173
1174 TH1F* herwig_frag_pt {};
1175 TH1F* herwig_frag_e {};
1176 TH1F* herwig_frag_phi {};
1177 TH1F* herwig_frag_eta {};
1178 TH1I* herwig_frag_n_photons {};
1179 std::array<TH1F*, 4>* herwig_frag_photon_array =new std::array<TH1F*, 4>();
1180 herwig_frag_photon_array->at(0)=herwig_frag_pt;
1181 herwig_frag_photon_array->at(1)=herwig_frag_e;
1182 herwig_frag_photon_array->at(2)=herwig_frag_phi;
1183 herwig_frag_photon_array->at(3)=herwig_frag_eta;
1184 CollectPhotons(herwig_photons, herwig_photon_array, herwig_lead_photon_array, herwig_direct_photon_array, herwig_frag_photon_array, herwig_n_photons, herwig_direct_n_photons, herwig_frag_n_photons);
1185
1186
1187 TH1F* pythia_pt {};
1188 TH1F* pythia_e {};
1189 TH1F* pythia_phi {};
1190 TH1F* pythia_eta {};
1191 TH1I* pythia_n_photons {};
1192 std::array<TH1F*, 4>* pythia_photon_array =new std::array<TH1F*, 4>();
1193 pythia_photon_array->at(0)=pythia_pt;
1194 pythia_photon_array->at(1)=pythia_e;
1195 pythia_photon_array->at(2)=pythia_phi;
1196 pythia_photon_array->at(3)=pythia_eta;
1197
1198 TH1F* pythia_lead_pt {};
1199 TH1F* pythia_lead_e {};
1200 TH1F* pythia_lead_phi {};
1201 TH1F* pythia_lead_eta {};
1202 std::array<TH1F*, 4>* pythia_lead_photon_array =new std::array<TH1F*, 4>();
1203 pythia_lead_photon_array->at(0)=pythia_lead_pt;
1204 pythia_lead_photon_array->at(1)=pythia_lead_e;
1205 pythia_lead_photon_array->at(2)=pythia_lead_phi;
1206 pythia_lead_photon_array->at(3)=pythia_lead_eta;
1207
1208 TH1F* pythia_direct_pt {};
1209 TH1F* pythia_direct_e {};
1210 TH1F* pythia_direct_phi {};
1211 TH1F* pythia_direct_eta {};
1212 TH1I* pythia_direct_n_photons {};
1213 std::array<TH1F*, 4>* pythia_direct_photon_array =new std::array<TH1F*, 4>();
1214 pythia_direct_photon_array->at(0)=pythia_direct_pt;
1215 pythia_direct_photon_array->at(1)=pythia_direct_e;
1216 pythia_direct_photon_array->at(2)=pythia_direct_phi;
1217 pythia_direct_photon_array->at(3)=pythia_direct_eta;
1218
1219 TH1F* pythia_frag_pt {};
1220 TH1F* pythia_frag_e {};
1221 TH1F* pythia_frag_phi {};
1222 TH1F* pythia_frag_eta {};
1223 TH1I* pythia_frag_n_photons {};
1224 std::array<TH1F*, 4>* pythia_frag_photon_array =new std::array<TH1F*, 4>();
1225 pythia_frag_photon_array->at(0)=pythia_frag_pt;
1226 pythia_frag_photon_array->at(1)=pythia_frag_e;
1227 pythia_frag_photon_array->at(2)=pythia_frag_phi;
1228 pythia_frag_photon_array->at(3)=pythia_frag_eta;
1229 CollectPhotons(pythia_photons, pythia_photon_array, pythia_lead_photon_array, pythia_direct_photon_array, pythia_frag_photon_array, pythia_n_photons, pythia_direct_n_photons, pythia_frag_n_photons);
1230
1231 TCanvas* J_pt=new TCanvas("photon_pt", "photon_pt");
1232 PlotPhotonObs(herwig_photon_array->at(0), pythia_photon_array->at(0), J_pt, 0);
1233 TCanvas* J_l_pt=new TCanvas("photon_l_pt", "photon_l_pt");
1234 PlotPhotonObs(herwig_lead_photon_array->at(0), pythia_lead_photon_array->at(0), J_l_pt, 1);
1235 TCanvas* J_e=new TCanvas("photon_e", "photon_e");
1236 PlotPhotonObs(herwig_photon_array->at(1), pythia_photon_array->at(1), J_e, 0);
1237 TCanvas* J_l_e=new TCanvas("photon_l_e", "photon_l_e");
1238 PlotPhotonObs(herwig_lead_photon_array->at(1), pythia_lead_photon_array->at(1), J_l_e, 1);
1239 TCanvas* J_phi=new TCanvas("photon_phi", "photon_phi");
1240 PlotPhotonObs(herwig_photon_array->at(2), pythia_photon_array->at(2), J_phi, 0);
1241 TCanvas* J_l_phi=new TCanvas("photon_l_pt", "photon_l_pt");
1242 PlotPhotonObs(herwig_lead_photon_array->at(2), pythia_lead_photon_array->at(2), J_l_phi, 1);
1243 TCanvas* J_eta=new TCanvas("photon_eta", "photon_eta");
1244 PlotPhotonObs(herwig_photon_array->at(3), pythia_photon_array->at(3), J_eta, 0);
1245 TCanvas* J_l_eta=new TCanvas("photon_l_eta", "photon_l_eta");
1246 PlotPhotonObs(herwig_lead_photon_array->at(3), pythia_lead_photon_array->at(3), J_l_eta, 1);
1247 TCanvas* J_N=new TCanvas("photon_N", "photon_N");
1248 PlotPhotonObs(herwig_n_photons, pythia_n_photons, J_N, 0);
1249
1250 Canvi->push_back(J_pt);
1251 Canvi->push_back(J_l_pt);
1252 Canvi->push_back(J_e);
1253 Canvi->push_back(J_l_e);
1254 Canvi->push_back(J_phi);
1255 Canvi->push_back(J_l_phi);
1256 Canvi->push_back(J_eta);
1257 Canvi->push_back(J_l_eta);
1258 Canvi->push_back(J_N);
1259
1260 TCanvas* J_d_pt=new TCanvas("direct_photon_pt", "direct_photon_pt");
1261 PlotPhotonObs(herwig_direct_photon_array->at(0), pythia_direct_photon_array->at(0), J_d_pt, 2);
1262 TCanvas* J_f_pt=new TCanvas("frag_photon_pt", "frag_photon_pt");
1263 PlotPhotonObs(herwig_frag_photon_array->at(0), pythia_frag_photon_array->at(0), J_f_pt, 3);
1264 TCanvas* J_d_e=new TCanvas("direct_photone", "direct_photone");
1265 PlotPhotonObs(herwig_direct_photon_array->at(1), pythia_direct_photon_array->at(1), J_d_e, 2);
1266 TCanvas* J_f_e=new TCanvas("frag_photon_e", "frag_photon_e");
1267 PlotPhotonObs(herwig_frag_photon_array->at(1), pythia_frag_photon_array->at(1), J_f_e, 3);
1268 TCanvas* J_d_phi=new TCanvas("direct_photonphi", "direct_photonphi");
1269 PlotPhotonObs(herwig_direct_photon_array->at(2), pythia_direct_photon_array->at(2), J_d_phi, 2);
1270 TCanvas* J_f_phi=new TCanvas("frag_photon_pt", "frag_photon_pt");
1271 PlotPhotonObs(herwig_frag_photon_array->at(2), pythia_frag_photon_array->at(2), J_f_phi, 3);
1272 TCanvas* J_d_eta=new TCanvas("direct_photoneta", "direct_photoneta");
1273 PlotPhotonObs(herwig_direct_photon_array->at(3), pythia_direct_photon_array->at(3), J_d_eta, 2);
1274 TCanvas* J_f_eta=new TCanvas("frag_photon_eta", "frag_photon_eta");
1275 PlotPhotonObs(herwig_frag_photon_array->at(3), pythia_frag_photon_array->at(3), J_f_eta, 3);
1276 TCanvas* J_d_N=new TCanvas("direct_photonN", "direct_photonN");
1277 PlotPhotonObs(herwig_direct_n_photons, pythia_direct_n_photons, J_d_N, 2);
1278 TCanvas* J_f_N=new TCanvas("frag_photonN", "frag_photonN");
1279 PlotPhotonObs(herwig_direct_n_photons, pythia_frag_n_photons, J_f_N, 3);
1280
1281 Canvi->push_back(J_d_pt);
1282 Canvi->push_back(J_f_pt);
1283 Canvi->push_back(J_d_e);
1284 Canvi->push_back(J_f_e);
1285 Canvi->push_back(J_d_phi);
1286 Canvi->push_back(J_f_phi);
1287 Canvi->push_back(J_d_eta);
1288 Canvi->push_back(J_f_eta);
1289 Canvi->push_back(J_d_N);
1290 Canvi->push_back(J_f_N);
1291 return;
1292
1293 }
1294 void PlotPhotonJetPlots(TDirectory* herwig_photons, TDirectory* pythia_photons, std::vector<TCanvas*>* Canvi)
1295 {
1296
1297 TDirectory* H_pj = (TDirectory*)herwig_photons->GetDirectory("Photon-Jets");
1298 std::vector<TH2F*>* herwig_pt = new std::vector<TH2F*> ();
1299 std::vector<TH2F*>* herwig_eta = new std::vector<TH2F*> ();
1300 std::vector<TH2F*>* herwig_phi = new std::vector<TH2F*> ();
1301 std::vector<TH2F*>* herwig_e = new std::vector<TH2F*> ();
1302 std::vector<TH1F*>* herwig_dphi = new std::vector<TH1F*> ();
1303
1304
1305 TDirectory* P_pj = (TDirectory*)pythia_photons->GetDirectory("Photon-Jets");
1306 std::vector<TH2F*>* pythia_pt = new std::vector<TH2F*> ();
1307 std::vector<TH2F*>* pythia_eta = new std::vector<TH2F*> ();
1308 std::vector<TH2F*>* pythia_phi = new std::vector<TH2F*> ();
1309 std::vector<TH2F*>* pythia_e = new std::vector<TH2F*> ();
1310 std::vector<TH1F*>* pythia_dphi = new std::vector<TH1F*> ();
1311
1312
1313 TCanvas* J_pt=new TCanvas("photon_jet_pt");
1314 TCanvas* J_h_pt=new TCanvas("herwig_photon_jet_pt");
1315 TCanvas* J_p_pt=new TCanvas("pythia_photon_jet_pt");
1316 PlotPhotonJetObs(herwig_pt, pythia_pt, J_pt, J_h_pt, J_p_pt);
1317
1318 TCanvas* J_eta=new TCanvas("photon_jet_eta");
1319 TCanvas* J_h_eta=new TCanvas("photon_herwig_jet_eta");
1320 TCanvas* J_p_eta=new TCanvas("pythia_photon_jet_eta");
1321 PlotPhotonJetObs(herwig_eta, pythia_eta, J_eta, J_h_eta, J_p_eta);
1322
1323 TCanvas* J_phi=new TCanvas("photon_herwig_jet_phi");
1324 TCanvas* J_h_phi=new TCanvas("photon_herwig_jet_phi");
1325 TCanvas* J_p_phi=new TCanvas("pythia_photon_jet_phi");
1326 PlotPhotonJetObs(herwig_phi, pythia_phi, J_phi, J_h_phi, J_p_phi);
1327
1328 TCanvas* J_e=new TCanvas("photon_herwig_jet_e");
1329 TCanvas* J_h_e=new TCanvas("photon_herwig_jet_e");
1330 TCanvas* J_p_e=new TCanvas("pythia_photon_jet_e");
1331 PlotPhotonJetObs(herwig_e, pythia_e, J_e, J_h_e, J_p_e);
1332
1333 TCanvas* J_dphi=new TCanvas("photon_jet_dphi");
1334 PlotJetObs(herwig_dphi, pythia_dphi, J_dphi);
1335 Canvi->push_back(J_dphi);
1336 return;
1337 }
1338 void DoAllThePlotting(TFile* herwig_file, TFile* pythia_file, std::string trigger_tag="Jet30", float herwig_xs=1., float pythia_xs=1.)
1339 {
1340
1341 SetsPhenixStyle();
1342 storage=new TFile(std::format("{}_scaled_pt.root", trigger_tag).c_str(), "RECREATE");
1343 conf = new HerwigQAPlottingConfig(herwig_xs, pythia_xs);
1344 style_points=new Skaydis_colors();
1345 gStyle->SetPalette(100, style_points->Trans_gradient_PT);
1346 conf->ExtractType(herwig_file);
1347 std::map<std::string, TDirectory*> top_dirs;
1348 std::vector<TCanvas*>* Canvi =new std::vector<TCanvas*> ();
1349 tag=trigger_tag;
1350 std::cout<<"Tag is: " <<tag<<std::endl;
1351 std::cout<<"isPhotons: " <<conf->isPhoton() <<std::endl;
1352
1353 if(conf->isJet() || trigger_tag.find("MB") != std::string::npos){
1354 TDirectory* HJets=(TDirectory*)herwig_file->GetDirectory("Jets");
1355 TDirectory* PJets=(TDirectory*)pythia_file->GetDirectory("Jets");
1356 top_dirs["herwig jets"]=HJets;
1357 top_dirs["pythia jets"]=PJets;
1358 PlotJetPlots(HJets, PJets, Canvi);
1359 }
1360 if(conf->isPhoton() || trigger_tag.find("MB") == std::string::npos )
1361 {
1362 TDirectory* HPh=(TDirectory*)herwig_file->GetDirectory("Photons");
1363 TDirectory* PPh=(TDirectory*)pythia_file->GetDirectory("Photons");
1364 top_dirs["herwig photons"]=HPh;
1365 top_dirs["pythia photons"]=PPh;
1366 PlotPhotonPlots(HPh, PPh, Canvi);
1367 }
1368 if(conf->isPhoton() && conf->isJet() && trigger_tag.find("MB") == std::string::npos)
1369 {
1370 PlotPhotonJetPlots(top_dirs["herwig photons"], top_dirs["pythia photons"], Canvi);
1371 }
1372
1373 TDirectory* HEvent=(TDirectory*)herwig_file->GetDirectory("Event");
1374 TDirectory* PEvent=(TDirectory*)pythia_file->GetDirectory("Event");
1375 top_dirs["herwig event"]=HEvent;
1376 top_dirs["pythia event"]=PEvent;
1377 PlotEventPlots(HEvent, PEvent, Canvi);
1378 conf->DumpHistos(std::format("~/{}_output.pdf", trigger_tag), Canvi);
1379 storage->cd();
1380 storage->Write();
1381 storage->Close();
1382 return;
1383 }
1384
1385 #endif