File indexing completed on 2024-04-06 12:32:32
0001 #include "TH1.h"
0002 #include "TH2.h"
0003 #include "TLegend.h"
0004 #include "TCanvas.h"
0005 #include "TProfile.h"
0006 #include "TPaveStats.h"
0007 #include "TFile.h"
0008 #include "TString.h"
0009 #include "TList.h"
0010 #include "TStyle.h"
0011 #include "TClass.h"
0012 #include "TKey.h"
0013 #include "TDirectory.h"
0014
0015 #include <cstdio>
0016 #include <string>
0017 #include <iostream>
0018
0019
0020 void PlotHGChitCalibration(const TString valfile, const TString reffile, std::string val_ver, std::string ref_ver) {
0021
0022 TFile *f1 = new TFile(valfile);
0023 TFile *f2 = new TFile(reffile);
0024
0025
0026 const int type = 4;
0027 const int part = 6;
0028 const int NHist = type*part;
0029 std::string particle[part] = {"All", "Electron", "Muon", "Photon", "ChgHad",
0030 "NeutHad"};
0031 std::string xtitl[type] = {"E/E_{True}", "E/E_{True}", "E/E_{True}",
0032 "Layer #"};
0033 std::string ytitl[type] = {"Clusters", "Clusters", "Clusters", "Clusters"};
0034 std::string xname[type] = {"in 100#mum Silicon", "in 200#mum Silicon",
0035 "in 300#mum Silicon", "Occupancy"};
0036 TH1* f1_hist[NHist];
0037 TH1* f2_hist[NHist];
0038 char name[64];
0039 std::vector<std::string>label;
0040 for (int i=0; i<part; ++i) {
0041 sprintf(name, "h_EoP_CPene_100_calib_fraction_%s",particle[i].c_str());
0042 label.push_back(name);
0043 sprintf(name,"h_EoP_CPene_200_calib_fraction_%s",particle[i].c_str());
0044 label.push_back(name);
0045 sprintf(name,"h_EoP_CPene_300_calib_fraction_%s",particle[i].c_str());
0046 label.push_back(name);
0047 sprintf(name,"h_LayerOccupancy_%s",particle[i].c_str());
0048 label.push_back(name);
0049 }
0050 for (int i=0; i<NHist; ++i) {
0051 int it = (i%type);
0052 int ip = (i - it)/type;
0053 sprintf(name, "hgcalHitCalibration/%s",label[i].c_str());
0054
0055
0056 f1_hist[i] = (TH1*)f1->Get(name);
0057 f2_hist[i] = (TH1*)f2->Get(name);
0058
0059 sprintf(name, "%s",label[i].c_str());
0060
0061
0062 TCanvas *myc = new TCanvas("myc","",800,600);
0063 gStyle->SetOptStat(1111);
0064
0065 f1_hist[i]->SetStats(kTRUE);
0066 f2_hist[i]->SetStats(kTRUE);
0067
0068 char txt[200];
0069 sprintf (txt, "%s %s",particle[ip].c_str(),xname[it].c_str());
0070 f1_hist[i]->SetTitle(txt);
0071 f2_hist[i]->SetTitle(txt);
0072
0073 f1_hist[i]->SetLineWidth(2);
0074 f2_hist[i]->SetLineWidth(2);
0075
0076
0077 f1_hist[i]->SetLineColor(4);
0078 f1_hist[i]->SetLineStyle(1);
0079 f1_hist[i]->GetYaxis()->SetTitle(ytitl[it].c_str());
0080 f1_hist[i]->GetXaxis()->SetTitle(xtitl[it].c_str());
0081
0082 f2_hist[i]->SetLineColor(1);
0083 f2_hist[i]->SetLineStyle(2);
0084 f2_hist[i]->GetYaxis()->SetTitle(ytitl[it].c_str());
0085 f2_hist[i]->GetXaxis()->SetTitle(xtitl[it].c_str());
0086
0087
0088 if (f1_hist[i]->GetMaximum() < f2_hist[i]->GetMaximum()) f1_hist[i]->SetMaximum(1.05 * f2_hist[i]->GetMaximum());
0089
0090 TLegend *leg = new TLegend(0.0, 0.91, 0.3, 0.99, "","brNDC");
0091
0092 leg->SetBorderSize(2);
0093
0094 leg->SetFillStyle(1001);
0095 leg->AddEntry(f1_hist[i],("CMSSW_"+val_ver).c_str(),"l");
0096 leg->AddEntry(f2_hist[i],("CMSSW_"+ref_ver).c_str(),"l");
0097
0098 TPaveStats *ptstats = new TPaveStats(0.85,0.86,0.98,0.98,"brNDC");
0099 ptstats->SetTextColor(4);
0100 f1_hist[i]->GetListOfFunctions()->Add(ptstats);
0101 ptstats->SetParent(f1_hist[i]->GetListOfFunctions());
0102 TPaveStats *ptstats2 = new TPaveStats(0.85,0.74,0.98,0.86,"brNDC");
0103 ptstats2->SetTextColor(1);
0104 f2_hist[i]->GetListOfFunctions()->Add(ptstats2);
0105 ptstats2->SetParent(f2_hist[i]->GetListOfFunctions());
0106
0107 f1_hist[i]->Draw("");
0108 f2_hist[i]->Draw("histsames");
0109
0110 leg->Draw();
0111
0112 myc->SaveAs((std::string(name)+".png").c_str());
0113 if(myc) delete myc;
0114
0115 }
0116 }