#include "rootstyle.cc" void plot(){ rootstyle(); // vector with variable name vector v_file{"road60", "road90", "road120"}; vector v_var{"innerClosePrecHits", "middleClosePrecHits", "outerClosePrecHits", "extendedClosePrecHits"}; vector v_type{"prompt", "non_iso", "hadron", "other"}; vector v_pt{"3-5", "5-10", "10-20", "gt20"}; vector v_color{kRed, kBlack, kBlue, kGreen}; // hist const int n_file = v_file.size(); const int n_var = v_var .size(); const int n_type = v_type.size(); const int n_pt = v_pt .size(); TH1D *hist[n_file][n_var][n_type][n_pt]; string name; for (int file=0; file Sumw2(); } // variable int innerClosePrecHits(-99); int middleClosePrecHits(-99); int outerClosePrecHits(-99); int extendedClosePrecHits(-99); int TruthType(-99); float pt(-99.); for(int file=0; fileGet("IDTracksTree"); tree->SetBranchAddress("innerClosePrecHits" , &innerClosePrecHits); tree->SetBranchAddress("middleClosePrecHits" , &middleClosePrecHits); tree->SetBranchAddress("outerClosePrecHits" , &outerClosePrecHits); tree->SetBranchAddress("extendedClosePrecHits", &extendedClosePrecHits); tree->SetBranchAddress("TruthType" , &TruthType); tree->SetBranchAddress("pt" , &pt); // number of entrie int entries = tree->GetEntries(); cout<<"entries: "<GetEntry(i); bool is_prompt {0}; bool is_non_iso{0}; bool is_hadron {0}; bool is_other {0}; bool pt_3_5 {0}; bool pt_5_10 {0}; bool pt_10_20 {0}; bool pt_gt20 {0}; // conditions if (TruthType==6) is_prompt = true; else if (TruthType==7) is_non_iso = true; else if (TruthType==8 || TruthType==17) is_hadron = true; else is_other = true; if (pt>3 && pt<=5 ) pt_3_5 = true; else if(pt>5 && pt<=10) pt_5_10 = true; else if(pt>10 && pt<=20) pt_10_20 = true; else if(pt>20) pt_gt20 = true; // TH1D *hist[n_file][n_type][n_pt][n_var]; if(is_prompt) { if(pt_3_5) { if(innerClosePrecHits != 0) hist[file][0][0][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][0][0][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][0][0][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][0][0][3]->Fill(extendedClosePrecHits); } if(pt_5_10) { if(innerClosePrecHits != 0) hist[file][0][1][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][0][1][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][0][1][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][0][1][3]->Fill(extendedClosePrecHits); } if(pt_10_20) { if(innerClosePrecHits != 0) hist[file][0][2][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][0][2][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][0][2][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][0][2][3]->Fill(extendedClosePrecHits); } if(pt_gt20) { if(innerClosePrecHits != 0) hist[file][0][3][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][0][3][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][0][3][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][0][3][3]->Fill(extendedClosePrecHits); } } // is_prompt if(is_non_iso){ if(pt_3_5) { if(innerClosePrecHits != 0) hist[file][1][0][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][1][0][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][1][0][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][1][0][3]->Fill(extendedClosePrecHits); } if(pt_5_10) { if(innerClosePrecHits != 0) hist[file][1][1][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][1][1][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][1][1][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][1][1][3]->Fill(extendedClosePrecHits); } if(pt_10_20) { if(innerClosePrecHits != 0) hist[file][1][2][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][1][2][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][1][2][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][1][2][3]->Fill(extendedClosePrecHits); } if(pt_gt20) { if(innerClosePrecHits != 0) hist[file][1][3][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][1][3][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][1][3][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][1][3][3]->Fill(extendedClosePrecHits); } } // is_non_iso if(is_hadron) { if(pt_3_5) { if(innerClosePrecHits != 0) hist[file][2][0][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][2][0][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][2][0][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][2][0][3]->Fill(extendedClosePrecHits); } if(pt_5_10) { if(innerClosePrecHits != 0) hist[file][2][1][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][2][1][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][2][1][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][2][1][3]->Fill(extendedClosePrecHits); } if(pt_10_20) { if(innerClosePrecHits != 0) hist[file][2][2][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][2][2][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][2][2][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][2][2][3]->Fill(extendedClosePrecHits); } if(pt_gt20) { if(innerClosePrecHits != 0) hist[file][2][3][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][2][3][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][2][3][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][2][3][3]->Fill(extendedClosePrecHits); } } // is_hadron if(is_other) { if(pt_3_5) { if(innerClosePrecHits != 0) hist[file][3][0][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][3][0][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][3][0][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][3][0][3]->Fill(extendedClosePrecHits); } if(pt_5_10) { if(innerClosePrecHits != 0) hist[file][3][1][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][3][1][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][3][1][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][3][1][3]->Fill(extendedClosePrecHits); } if(pt_10_20) { if(innerClosePrecHits != 0) hist[file][3][2][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][3][2][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][3][2][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][3][2][3]->Fill(extendedClosePrecHits); } if(pt_gt20) { if(innerClosePrecHits != 0) hist[file][3][3][0]->Fill(innerClosePrecHits); if(middleClosePrecHits != 0) hist[file][3][3][1]->Fill(middleClosePrecHits); if(outerClosePrecHits != 0) hist[file][3][3][2]->Fill(outerClosePrecHits); if(extendedClosePrecHits != 0) hist[file][3][3][3]->Fill(extendedClosePrecHits); } } // is_other } // entries } // files TCanvas *canvas[n_var]; for (int canva=0; canvaDivide(n_file, n_pt); } // legend auto legend = new TLegend(0.2, 0.1, 0.9, 0.9); legend ->SetTextSize(0.08); legend ->SetTextFont(102); for (int var=0; varcd(file+next); //gPad->SetLogy(); for (int type=n_type-1; type>=0; type--) // plot prompt last { // write hist on canvas name = "pT: "+v_pt[pt]+" GeV"; hist[file][type][pt][var]->SetTitle(name.c_str()); hist[file][type][pt][var]->SetLineWidth(2); hist[file][type][pt][var]->SetLineColor(v_color[type]); // hist[file][type][pt][var]->GetYaxis()->SetRangeUser(0., 1); //hist[file][type][pt][var]->GetYaxis()->SetRangeUser(0., 400); hist[file][type][pt][var]->GetXaxis()->SetTitle(v_var[var].c_str()); hist[file][type][pt][var]->GetYaxis()->SetTitle("Event [scaled to area]"); hist[file][type][pt][var]->GetXaxis()->SetTitleOffset(1.); hist[file][type][pt][var]->GetYaxis()->SetTitleOffset(1.); hist[file][type][pt][var]->GetXaxis()->SetTitleSize(0.05); hist[file][type][pt][var]->GetYaxis()->SetTitleSize(0.05); double norm = hist[file][type][pt][var]->Integral(); if (norm==0) continue; //if (norm!=0) hist[file][type][pt][var]->Scale(1/norm); //hist[file][type][pt][var]->Draw("hist&same"); auto clone = hist[file][type][pt][var]->DrawNormalized("hist&same"); clone->GetYaxis()->SetRangeUser(0., 1.); if(file ==0 && pt==0 && var==0) legend->AddEntry(hist[file][type][pt][var], v_type[type].c_str(), "l"); } // type next+=3; } // pt } // file } // var //TCanvas *canva_leg = new TCanvas("leg", "leg", 500, 500); //canva_leg->cd(); //legend->Draw(); }