/
AxEffSyst.C
69 lines (56 loc) · 2.24 KB
/
AxEffSyst.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "TFile.h"
#include "TH1D.h"
#include "TCanvas.h"
#include "iostream"
#include "TStyle.h"
using namespace std;
void AxEffSyst(TString modOCDBOutputPath, TString stdOCDBOutputPath){
gStyle->SetOptStat(0);
TFile *axEffModOCDBFile = new TFile(modOCDBOutputPath.Data(),"READONLY");
TFile *axEffStdOCDBFile = new TFile(stdOCDBOutputPath.Data(),"READONLY");
TH1D *axEffModOCDBHisto = 0x0;
axEffModOCDBFile->GetObject("ratio1", axEffModOCDBHisto);
axEffModOCDBHisto->SetLineColor(kBlue);
axEffModOCDBHisto->SetLineWidth(2);
axEffModOCDBHisto->SetTitle("A#times#epsilon");
axEffModOCDBHisto->GetXaxis()->SetTitle("Rapidity");
axEffModOCDBHisto->GetYaxis()->SetTitle("A#times#epsilon");
TH1D *axEffStdOCDBHisto = 0x0;
axEffStdOCDBFile->GetObject("ratio1", axEffStdOCDBHisto);
axEffStdOCDBHisto->SetLineColor(kRed);
axEffStdOCDBHisto->SetTitle("A#times#epsilon Std OCDB");
axEffStdOCDBHisto->GetXaxis()->SetTitle("Rapidity");
axEffStdOCDBHisto->GetYaxis()->SetTitle("A#times#epsilon");
axEffModOCDBHisto->Sumw2(kTRUE);
axEffStdOCDBHisto->Sumw2(kTRUE);
TH1D *ratio = (TH1D*)axEffStdOCDBHisto->Clone();
ratio->Sumw2(kTRUE);
ratio->SetLineWidth(1);
ratio->Add(axEffModOCDBHisto, -1.);
ratio->Divide(axEffStdOCDBHisto);
ratio->SetLineColor(kBlack);
ratio->SetTitle("#frac{A#times#epsilon_{Std OCDB}-A#times#epsilon_{Mod OCDB}}{A#times#epsilon_{Std OCDB}}");
ratio->GetXaxis()->SetTitle("Rapidity");
ratio->GetYaxis()->SetTitle("Ratio (%)");
for (Int_t iBinsRatio = 0; iBinsRatio <= ratio->GetNbinsX()+1; iBinsRatio++) {
Double_t binContent = ratio->GetBinContent(iBinsRatio);
cout<<binContent<<"->";
if ( binContent<0. ) ratio->SetBinContent(iBinsRatio, -binContent*100.);
else ratio->SetBinContent(iBinsRatio, binContent*100.);
binContent = ratio->GetBinContent(iBinsRatio);
cout<<binContent<<endl;
}
TCanvas *canv = new TCanvas("canv");
canv->Divide(2,1);
canv->cd(1);
axEffModOCDBHisto->SetDirectory(0);
axEffModOCDBHisto->Draw("E");
axEffStdOCDBHisto->SetDirectory(0);
axEffStdOCDBHisto->Draw("SAME E");
canv->cd(2);
ratio->GetYaxis()->SetRangeUser(-0.5,ratio->GetMaximum()*2);
ratio->SetDirectory(0);
ratio->Draw("E");
axEffModOCDBFile->Close();
axEffStdOCDBFile->Close();
}