00001
00002
00003
00004
00005 #include <vector.h>
00006 #include <map>
00007
00008 void loadPresentationStyle()
00009 {
00010 gROOT->SetStyle("Plain");
00011 gStyle->SetOptTitle(0);
00012 gStyle->SetPadTickX(1);
00013 gStyle->SetPadTickY(1);
00014 }
00015
00016 std::vector<Float_t> rgaufit( TH1F *h, int iter )
00017 {
00018 h->Fit("gaus","q");
00019 float m;
00020 float s;
00021 TF1 *f;
00022 for (int i=0; i<iter; i++) {
00023 f = (TF1*)h->GetFunction("gaus");
00024 m = f->GetParameter(1);
00025 s = f->GetParameter(2);
00026 h->Fit("gaus","qr","",m-1.15*s,m+3.*s);
00027
00028 }
00029
00030 f = (TF1*)h->GetFunction("gaus");
00031 std::vector<Float_t> par;
00032 for (int i=0; i<f->GetNumberFreeParameters(); i++) par.push_back(f->GetParameter(i));
00033 for (int i=0; i<f->GetNumberFreeParameters(); i++) par.push_back(f->GetParError(i));
00034 return par;
00035 }
00036
00037 void singlee_nicePlots()
00038 {
00039 loadPresentationStyle();
00040
00041
00042 char suffix[] = "eps";
00043
00044 char outDir[] = "Figs";
00045
00046
00047 char str[128];
00048
00049 TFile *finResolutions = new TFile("histosFrame.root");
00050 TNtuple *ntuple = (TNtuple *) finResolutions->Get("ntu");
00051
00052 vector<TH1F *> histosE, histosP, histosComb;
00053
00054 float start = 5., stop = 100., step = 5;
00055 float upper = (int)(stop-start)/step;
00056 char stmp[10];
00057 for (int ih = 0; ih < upper; ih++){
00058 sprintf(stmp,"hE%d",ih);
00059 histosE.push_back(new TH1F(stmp, stmp, 2000, -2., 2.));
00060 sprintf(stmp,"hP%d",ih);
00061 histosP.push_back(new TH1F(stmp, stmp, 2000, -2., 2.));
00062 sprintf(stmp,"hComb%d",ih);
00063 histosComb.push_back(new TH1F(stmp, stmp, 2000, -2., 2.));
00064 }
00065
00066
00067 float iev ,ie, ne, ETrue, Euncorr, E, p, comb, etaTrue;
00068
00069 ntuple->SetBranchAddress("iev",&iev);
00070 ntuple->SetBranchAddress("ne",&ne);
00071 ntuple->SetBranchAddress("ie",&ie);
00072 ntuple->SetBranchAddress("ETrue",&ETrue);
00073 ntuple->SetBranchAddress("Euncorr",&Euncorr);
00074 ntuple->SetBranchAddress("E",&E);
00075 ntuple->SetBranchAddress("p",&p);
00076 ntuple->SetBranchAddress("comb",&comb);
00077 ntuple->SetBranchAddress("etaTrue",&etaTrue);
00078
00079 for (int i = 0; i < ntuple->GetEntries(); i++) {
00080 ntuple->GetEntry(i);
00081
00082 if (fabs(etaTrue) > 1.460 || ETrue > stop) continue;
00083
00084 int idh = (int)(ETrue-start)/step;
00085 Axis_t eRat = (E - ETrue)/ETrue;
00086 Axis_t pRat = (p - ETrue)/ETrue;
00087 Axis_t combRat = (comb-ETrue)/ETrue;
00088 histosE[idh]->Fill(eRat);
00089 histosP[idh]->Fill(pRat);
00090 histosComb[idh]->Fill(combRat);
00091 }
00092
00093
00094
00095
00096 TGraph *gEffRMSE = new TGraph();
00097 TGraph *gEffRMSP = new TGraph();
00098 TGraph *gEffRMSComb = new TGraph();
00099
00100 for (int ih = 0; ih < upper; ih++){
00101
00102
00103 float effRMSE = effRMS(histosE[ih]);
00104 float effRMSP = effRMS(histosP[ih]);
00105 float effRMSComb = effRMS(histosComb[ih]);
00106 cout << ih << " | " << effRMSE << " | " << effRMSP << " | " << effRMSComb << endl;
00107 gEffRMSE->SetPoint(ih,start+ih*step+step/2.,effRMSE);
00108 gEffRMSP->SetPoint(ih,start+ih*step+step/2.,effRMSP);
00109 gEffRMSComb->SetPoint(ih,start+ih*step+step/2.,effRMSComb);
00110
00111 }
00112
00113 TMultiGraph *mg = new TMultiGraph();
00114 TCanvas *cRes = new TCanvas("cEffRMS","cEffRMS");
00115 cRes->cd();
00116
00117 mg->Add(gEffRMSE);
00118 gEffRMSE->SetMarkerStyle(20);
00119 gEffRMSE->SetMarkerColor(2);
00120 gEffRMSE->SetMarkerSize(.75);
00121
00122
00123 mg->Add(gEffRMSP);
00124 gEffRMSP->SetMarkerStyle(20);
00125 gEffRMSP->SetMarkerColor(3);
00126 gEffRMSP->SetMarkerSize(.75);
00127
00128
00129 mg->Add(gEffRMSComb);
00130 gEffRMSComb->SetMarkerStyle(20);
00131 gEffRMSComb->SetMarkerColor(4);
00132 gEffRMSComb->SetMarkerSize(.75);
00133
00134 mg->Draw("AP");
00135 mg->GetXaxis()->SetTitle("E [GeV]");
00136 mg->GetYaxis()->SetTitle("eff RMS");
00137 gPad->Modified();
00138 gPad->Update();
00139 sprintf(str,"%s/effRMS.%s",outDir,suffix);
00140 gPad->Print(str);
00141
00142
00143 TFile *finElectronHLTClass = new TFile("histosFrame.root");
00144
00145
00146 TH1F *hElectronHLTEta = (TH1F*)finElectronHLTClass->Get("hElectronHLTEta");
00147 TH1F *hElectronEta = (TH1F*)finElectronHLTClass->Get("hElectronEta");
00148 TH1F *hElectronHLTEtaClass[9];
00149 hElectronHLTEtaClass[0] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass0");
00150 hElectronHLTEtaClass[1] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass1");
00151 hElectronHLTEtaClass[2] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass2");
00152 hElectronHLTEtaClass[3] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass3");
00153 hElectronHLTEtaClass[4] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass4");
00154 hElectronHLTEtaClass[5] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass10");
00155 hElectronHLTEtaClass[6] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass11");
00156 hElectronHLTEtaClass[7] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass12");
00157 hElectronHLTEtaClass[8] = (TH1F*)finElectronHLTClass->Get("hElectronHLTEtaClass13");
00158 TH1F *hElectronEtaClass[9];
00159 hElectronEtaClass[0] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass0");
00160 hElectronEtaClass[1] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass1");
00161 hElectronEtaClass[2] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass2");
00162 hElectronEtaClass[3] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass3");
00163 hElectronEtaClass[4] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass4");
00164 hElectronEtaClass[5] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass10");
00165 hElectronEtaClass[6] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass11");
00166 hElectronEtaClass[7] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass12");
00167 hElectronEtaClass[8] = (TH1F*)finElectronHLTClass->Get("hElectronEtaClass13");
00168 cout << hElectronEtaClass[0]->GetEntries() << endl;
00169
00170 char className[5][64];
00171 sprintf(className[0],"golden");
00172 sprintf(className[1],"big brem");
00173 sprintf(className[2],"narrow");
00174 sprintf(className[3],"showering");
00175 sprintf(className[4],"cracks");
00176
00177 int hColors[5] = { 3, 4, 6, 7, 2 };
00178
00179 TLegend *legClass = new TLegend(.125,.62,.35,.885,"","NDC");
00180 legClass->SetFillColor(0);
00181 legClass->SetBorderSize(1);
00182 TLegend *legHLTClass = new TLegend(.625,.625,.85,.89,"","NDC");
00183 legHLTClass->SetFillColor(0);
00184 legHLTClass->SetBorderSize(1);
00185
00186 THStack *hsElectronHLTEtaClass = new THStack("hsElectronHLTEtaClass","hsElectronHLTEtaClass");
00187 THStack *hsElectronEtaClass = new THStack("hsElectronEtaClass","hsElectronEtaClass");
00188 for (int ih=0; ih<9; ih++) {
00189 if (ih==4) continue;
00190 for (int ibin=0; ibin<hElectronHLTEta->GetNbinsX(); ibin++) {
00191 if (hElectronHLTEta->GetBinContent(ibin+1)==0) continue;
00192 if (hElectronEtaClass[ih]->GetBinContent(ibin+1)!=0)
00193 hElectronHLTEtaClass[ih]->SetBinContent( ibin+1,
00194
00195 hElectronHLTEtaClass[ih]->GetBinContent(ibin+1)/hElectronEtaClass[ih]->GetBinContent(ibin+1));
00196 hsElectronHLTEtaClass->Add(hElectronHLTEtaClass[ih]);
00197 hElectronHLTEtaClass[ih]->SetLineColor( hColors[ih%5] );
00198 hElectronEtaClass[ih]->SetBinContent( ibin+1,
00199
00200 hElectronEtaClass[ih]->GetBinContent(ibin+1)/hElectronEta->GetBinContent(ibin+1));
00201 hsElectronEtaClass->Add(hElectronEtaClass[ih]);
00202 hElectronEtaClass[ih]->SetLineColor( hColors[ih%5] );
00203 }
00204 if (ih<5) {
00205 sprintf(str,"%s",className[ih]);
00206 legClass->AddEntry(hElectronHLTEtaClass[ih],str,"l");
00207 legHLTClass->AddEntry(hElectronHLTEtaClass[ih],str,"l");
00208 }
00209 }
00210 hsElectronHLTEtaClass->Draw("nostack");
00211 hsElectronHLTEtaClass->SetMaximum(1.2);
00212 hsElectronHLTEtaClass->GetXaxis()->SetTitle("#eta");
00213 hsElectronHLTEtaClass->GetYaxis()->SetTitle("fraction of HLT electrons");
00214 hsElectronHLTEtaClass->Draw("nostack");
00215 legHLTClass->Draw();
00216 sprintf(str,"%s/electronHLTEtaClass.%s",outDir,suffix);
00217 gPad->Print(str);
00218 hsElectronEtaClass->Draw("nostack");
00219 hsElectronEtaClass->SetMaximum(1.2);
00220 hsElectronEtaClass->GetXaxis()->SetRangeUser(0,2.5);
00221 hsElectronEtaClass->GetXaxis()->SetTitle("#eta");
00222 hsElectronEtaClass->GetYaxis()->SetTitle("fraction of electrons");
00223 hsElectronEtaClass->Draw("nostack");
00224 legClass->Draw();
00225 sprintf(str,"%s/electronEtaClass.%s",outDir,suffix);
00226 gPad->Print(str);
00227
00228
00229
00230 TFile *finElectronHLTPtClass = new TFile("histosFrame.root");
00231
00232
00233 TH1F *hElectronHLTPt = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPt");
00234 TH1F *hElectronHLTPtClass[9];
00235 hElectronHLTPtClass[0] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass0");
00236 hElectronHLTPtClass[1] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass1");
00237 hElectronHLTPtClass[2] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass2");
00238 hElectronHLTPtClass[3] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass3");
00239 hElectronHLTPtClass[4] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass4");
00240 hElectronHLTPtClass[5] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass10");
00241 hElectronHLTPtClass[6] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass11");
00242 hElectronHLTPtClass[7] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass12");
00243 hElectronHLTPtClass[8] = (TH1F*)finElectronHLTPtClass->Get("hElectronHLTPtClass13");
00244 TH1F *hElectronPtClass[9];
00245 hElectronPtClass[0] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass0");
00246 hElectronPtClass[1] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass1");
00247 hElectronPtClass[2] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass2");
00248 hElectronPtClass[3] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass3");
00249 hElectronPtClass[4] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass4");
00250 hElectronPtClass[5] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass10");
00251 hElectronPtClass[6] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass11");
00252 hElectronPtClass[7] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass12");
00253 hElectronPtClass[8] = (TH1F*)finElectronHLTPtClass->Get("hElectronPtClass13");
00254 cout << hElectronPtClass[0]->GetEntries() << endl;
00255
00256 char className[5][64];
00257 sprintf(className[0],"golden");
00258 sprintf(className[1],"big brem");
00259 sprintf(className[2],"narrow");
00260 sprintf(className[3],"showering");
00261 sprintf(className[4],"cracks");
00262
00263 int hColors[5] = { 3, 4, 6, 7, 2 };
00264
00265 TLegend *legClass = new TLegend(.625,.225,.85,.49,"","NDC");
00266 legClass->SetFillColor(0);
00267 legClass->SetBorderSize(1);
00268
00269 THStack *hsElectronHLTPtClass = new THStack("hsElectronHLTPtClass","hsElectronHLTPtClass");
00270 for (int ih=0; ih<4; ih++) {
00271 for (int ibin=0; ibin<hElectronHLTPt->GetNbinsX(); ibin++) {
00272 if (hElectronHLTPt->GetBinContent(ibin+1)==0) continue;
00273 if (hElectronPtClass[ih]->GetBinContent(ibin+1)!=0 || hElectronPtClass[5+ih]->GetBinContent(ibin+1)!=0)
00274 hElectronHLTPtClass[ih]->SetBinContent( ibin+1,
00275
00276 (hElectronHLTPtClass[ih]->GetBinContent(ibin+1) + hElectronHLTPtClass[5+ih]->GetBinContent(ibin+1))
00277 / ( hElectronPtClass[ih]->GetBinContent(ibin+1) + hElectronPtClass[5+ih]->GetBinContent(ibin+1)));
00278 hsElectronHLTPtClass->Add(hElectronHLTPtClass[ih]);
00279 hElectronHLTPtClass[ih]->SetLineColor( hColors[ih%5] );
00280 hElectronHLTPtClass[ih]->SetMarkerColor( hColors[ih%5] );
00281 hElectronHLTPtClass[ih]->SetMarkerStyle( 20 );
00282 hElectronHLTPtClass[ih]->SetMarkerSize( .75 );
00283 }
00284 if (ih<5) {
00285 sprintf(str,"%s",className[ih]);
00286 legClass->AddEntry(hElectronHLTPtClass[ih],str,"l");
00287 }
00288 }
00289 hsElectronHLTPtClass->Draw("nostack");
00290 hsElectronHLTPtClass->SetMaximum(1.2);
00291 hsElectronHLTPtClass->GetXaxis()->SetTitle("p_{T}");
00292 hsElectronHLTPtClass->GetYaxis()->SetTitle("fraction of HLT electrons");
00293 hsElectronHLTPtClass->Draw("nostack");
00294 legClass->Draw();
00295 sprintf(str,"%s/electronHLTPtClass.%s",outDir,suffix);
00296 gPad->Print(str);
00297
00298
00299 gStyle->SetPalette(1);
00300 gStyle->SetOptStat(0);
00301 TFile *finElectronEP = new TFile("histosFrame.root");
00302 TH1F *h2ElectronEOverEtrueEPClass[9];
00303 h2ElectronEOverEtrueEPClass[0] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass0");
00304 h2ElectronEOverEtrueEPClass[1] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass1");
00305 h2ElectronEOverEtrueEPClass[2] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass2");
00306 h2ElectronEOverEtrueEPClass[3] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass3");
00307 h2ElectronEOverEtrueEPClass[4] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass4");
00308 h2ElectronEOverEtrueEPClass[5] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass10");
00309 h2ElectronEOverEtrueEPClass[6] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass11");
00310 h2ElectronEOverEtrueEPClass[7] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass12");
00311 h2ElectronEOverEtrueEPClass[8] = (TH1F*)finElectronEP->Get("h2ElectronEOverEtrueEPClass13");
00312 TH1F *h2ElectronPOverEtrueEPClass[9];
00313 h2ElectronPOverEtrueEPClass[0] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass0");
00314 h2ElectronPOverEtrueEPClass[1] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass1");
00315 h2ElectronPOverEtrueEPClass[2] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass2");
00316 h2ElectronPOverEtrueEPClass[3] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass3");
00317 h2ElectronPOverEtrueEPClass[4] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass4");
00318 h2ElectronPOverEtrueEPClass[5] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass10");
00319 h2ElectronPOverEtrueEPClass[6] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass11");
00320 h2ElectronPOverEtrueEPClass[7] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass12");
00321 h2ElectronPOverEtrueEPClass[8] = (TH1F*)finElectronEP->Get("h2ElectronPOverEtrueEPClass13");
00322 TH1F *h2ElectronCombOverEtrueEPClass[9];
00323 h2ElectronCombOverEtrueEPClass[0] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass0");
00324 h2ElectronCombOverEtrueEPClass[1] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass1");
00325 h2ElectronCombOverEtrueEPClass[2] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass2");
00326 h2ElectronCombOverEtrueEPClass[3] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass3");
00327 h2ElectronCombOverEtrueEPClass[4] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass4");
00328 h2ElectronCombOverEtrueEPClass[5] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass10");
00329 h2ElectronCombOverEtrueEPClass[6] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass11");
00330 h2ElectronCombOverEtrueEPClass[7] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass12");
00331 h2ElectronCombOverEtrueEPClass[8] = (TH1F*)finElectronEP->Get("h2ElectronCombOverEtrueEPClass13");
00332
00333
00334 h2ElectronEOverEtrueEPClass[0]->Add(h2ElectronEOverEtrueEPClass[1]);
00335 h2ElectronEOverEtrueEPClass[0]->Draw("colz");
00336 gPad->SetRightMargin(0.15);
00337 h2ElectronEOverEtrueEPClass[0]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00338 h2ElectronEOverEtrueEPClass[0]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00339 sprintf(str,"%s/EOverEtrue_vs_EOverP_EB_golden.%s",outDir,suffix);
00340 gPad->Print(str);
00341 h2ElectronEOverEtrueEPClass[1]->Add(h2ElectronEOverEtrueEPClass[1]);
00342 h2ElectronEOverEtrueEPClass[1]->Draw("colz");
00343 gPad->SetRightMargin(0.15);
00344 h2ElectronEOverEtrueEPClass[1]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00345 h2ElectronEOverEtrueEPClass[1]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00346 sprintf(str,"%s/EOverEtrue_vs_EOverP_EB_bigBrem.%s",outDir,suffix);
00347 gPad->Print(str);
00348 h2ElectronEOverEtrueEPClass[2]->Add(h2ElectronEOverEtrueEPClass[1]);
00349 h2ElectronEOverEtrueEPClass[2]->Draw("colz");
00350 gPad->SetRightMargin(0.15);
00351 h2ElectronEOverEtrueEPClass[2]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00352 h2ElectronEOverEtrueEPClass[2]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00353 sprintf(str,"%s/EOverEtrue_vs_EOverP_EB_narrow.%s",outDir,suffix);
00354 gPad->Print(str);
00355 h2ElectronEOverEtrueEPClass[3]->Add(h2ElectronEOverEtrueEPClass[1]);
00356 h2ElectronEOverEtrueEPClass[3]->Draw("colz");
00357 gPad->SetRightMargin(0.15);
00358 h2ElectronEOverEtrueEPClass[3]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00359 h2ElectronEOverEtrueEPClass[3]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00360 sprintf(str,"%s/EOverEtrue_vs_EOverP_EB_showering.%s",outDir,suffix);
00361 gPad->Print(str);
00362
00363 h2ElectronEOverEtrueEPClass[0]->Add(h2ElectronEOverEtrueEPClass[1]);
00364 h2ElectronEOverEtrueEPClass[0]->Add(h2ElectronEOverEtrueEPClass[2]);
00365 h2ElectronEOverEtrueEPClass[0]->Add(h2ElectronEOverEtrueEPClass[3]);
00366 h2ElectronEOverEtrueEPClass[0]->Draw("colz");
00367 gPad->SetRightMargin(0.15);
00368 h2ElectronEOverEtrueEPClass[0]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00369 h2ElectronEOverEtrueEPClass[0]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00370 sprintf(str,"%s/EOverEtrue_vs_EOverP_EB.%s",outDir,suffix);
00371 gPad->Print(str);
00372 h2ElectronPOverEtrueEPClass[0]->Add(h2ElectronPOverEtrueEPClass[1]);
00373 h2ElectronPOverEtrueEPClass[0]->Add(h2ElectronPOverEtrueEPClass[2]);
00374 h2ElectronPOverEtrueEPClass[0]->Add(h2ElectronPOverEtrueEPClass[3]);
00375 h2ElectronPOverEtrueEPClass[0]->Draw("colz");
00376 gPad->SetRightMargin(0.15);
00377 h2ElectronPOverEtrueEPClass[0]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00378 h2ElectronPOverEtrueEPClass[0]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00379 sprintf(str,"%s/POverEtrue_vs_EOverP_EB.%s",outDir,suffix);
00380 gPad->Print(str);
00381 h2ElectronCombOverEtrueEPClass[0]->Add(h2ElectronCombOverEtrueEPClass[1]);
00382 h2ElectronCombOverEtrueEPClass[0]->Add(h2ElectronCombOverEtrueEPClass[2]);
00383 h2ElectronCombOverEtrueEPClass[0]->Add(h2ElectronCombOverEtrueEPClass[3]);
00384 h2ElectronCombOverEtrueEPClass[0]->Draw("colz");
00385 gPad->SetRightMargin(0.15);
00386 h2ElectronCombOverEtrueEPClass[0]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00387 h2ElectronCombOverEtrueEPClass[0]->GetYaxis()->SetTitle("#tilde{E}_{calo}/E_{kine}");
00388 sprintf(str,"%s/combOverEtrue_vs_EOverP_EB.%s",outDir,suffix);
00389 gPad->Print(str);
00390
00391 h2ElectronEOverEtrueEPClass[5]->Add(h2ElectronEOverEtrueEPClass[1]);
00392 h2ElectronEOverEtrueEPClass[5]->Draw("colz");
00393 gPad->SetRightMargin(0.15);
00394 h2ElectronEOverEtrueEPClass[5]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00395 h2ElectronEOverEtrueEPClass[5]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00396 sprintf(str,"%s/EOverEtrue_vs_EOverP_EE_golden.%s",outDir,suffix);
00397 gPad->Print(str);
00398 h2ElectronEOverEtrueEPClass[6]->Add(h2ElectronEOverEtrueEPClass[1]);
00399 h2ElectronEOverEtrueEPClass[6]->Draw("colz");
00400 gPad->SetRightMargin(0.15);
00401 h2ElectronEOverEtrueEPClass[6]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00402 h2ElectronEOverEtrueEPClass[6]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00403 sprintf(str,"%s/EOverEtrue_vs_EOverP_EE_bigBrem.%s",outDir,suffix);
00404 gPad->Print(str);
00405 h2ElectronEOverEtrueEPClass[7]->Add(h2ElectronEOverEtrueEPClass[1]);
00406 h2ElectronEOverEtrueEPClass[7]->Draw("colz");
00407 gPad->SetRightMargin(0.15);
00408 h2ElectronEOverEtrueEPClass[7]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00409 h2ElectronEOverEtrueEPClass[7]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00410 sprintf(str,"%s/EOverEtrue_vs_EOverP_EE_narrow.%s",outDir,suffix);
00411 gPad->Print(str);
00412 h2ElectronEOverEtrueEPClass[8]->Add(h2ElectronEOverEtrueEPClass[1]);
00413 h2ElectronEOverEtrueEPClass[8]->Draw("colz");
00414 gPad->SetRightMargin(0.15);
00415 h2ElectronEOverEtrueEPClass[8]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00416 h2ElectronEOverEtrueEPClass[8]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00417 sprintf(str,"%s/EOverEtrue_vs_EOverP_EE_showering.%s",outDir,suffix);
00418 gPad->Print(str);
00419
00420 h2ElectronEOverEtrueEPClass[5]->Add(h2ElectronEOverEtrueEPClass[6]);
00421 h2ElectronEOverEtrueEPClass[5]->Add(h2ElectronEOverEtrueEPClass[6]);
00422 h2ElectronEOverEtrueEPClass[5]->Add(h2ElectronEOverEtrueEPClass[8]);
00423 h2ElectronEOverEtrueEPClass[5]->Draw("colz");
00424 gPad->SetRightMargin(0.15);
00425 h2ElectronEOverEtrueEPClass[5]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00426 h2ElectronEOverEtrueEPClass[5]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00427 sprintf(str,"%s/EOverEtrue_vs_EOverP_EE.%s",outDir,suffix);
00428 gPad->Print(str);
00429 h2ElectronPOverEtrueEPClass[5]->Add(h2ElectronPOverEtrueEPClass[6]);
00430 h2ElectronPOverEtrueEPClass[5]->Add(h2ElectronPOverEtrueEPClass[6]);
00431 h2ElectronPOverEtrueEPClass[5]->Add(h2ElectronPOverEtrueEPClass[8]);
00432 h2ElectronPOverEtrueEPClass[5]->Draw("colz");
00433 gPad->SetRightMargin(0.15);
00434 h2ElectronPOverEtrueEPClass[5]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00435 h2ElectronPOverEtrueEPClass[5]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00436 sprintf(str,"%s/POverEtrue_vs_EOverP_EE.%s",outDir,suffix);
00437 gPad->Print(str);
00438 h2ElectronCombOverEtrueEPClass[5]->Add(h2ElectronCombOverEtrueEPClass[6]);
00439 h2ElectronCombOverEtrueEPClass[5]->Add(h2ElectronCombOverEtrueEPClass[6]);
00440 h2ElectronCombOverEtrueEPClass[5]->Add(h2ElectronCombOverEtrueEPClass[8]);
00441 h2ElectronCombOverEtrueEPClass[5]->Draw("colz");
00442 gPad->SetRightMargin(0.15);
00443 h2ElectronCombOverEtrueEPClass[5]->GetXaxis()->SetTitle("E_{calo}/p_{tk}");
00444 h2ElectronCombOverEtrueEPClass[5]->GetYaxis()->SetTitle("E_{calo}/E_{kine}");
00445 sprintf(str,"%s/combOverEtrue_vs_EOverP_EE.%s",outDir,suffix);
00446 gPad->Print(str);
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471 }
00472
00473
00474 float effRMS(TH1F *h){
00475
00476 int nbin = h->GetNbinsX();
00477
00478 int nevent = h->GetEntries();
00479
00480 int integral = h->Integral();
00481
00482 int maxBin = h->GetMaximumBin();
00483 int leftBin = maxBin, rightBin = maxBin;
00484 --leftBin;
00485 ++rightBin;
00486
00487 float sum = h->GetBinContent(maxBin);
00488
00489 float add = 0;
00490 int last = 0;
00491
00492
00493
00494
00495 while (sum < 0.6827*integral) {
00496 if (h->GetBinContent(leftBin) > h->GetBinContent(rightBin))
00497 {
00498 add = h->GetBinContent(leftBin);
00499 --leftBin;
00500 last = 1;
00501 } else {
00502 add = h->GetBinContent(rightBin);
00503 ++rightBin;
00504 last = 2;
00505 }
00506 sum = sum + add;
00507 }
00508
00509
00510
00511 if (last = 0) return -999.;
00512 if (last == 1) ++leftBin;
00513 if (last == 2) --rightBin;
00514
00515 float effRMS = (h->GetBinCenter(rightBin) - h->GetBinCenter(leftBin))/2.;
00516 return effRMS;
00517
00518 }