11 //gSystem->Load("libANALYSIS");
12 //gSystem->Load("libANALYSISalice");
13 //#include "AliESDtrackCuts.h"
15 void MakeSensitivityPlots2();
17 TCanvas * GetSensitivityPlot(TString cutname = "Ncl",
18 Int_t projectionAxis = 1,
19 Int_t particleType = 5,
20 Double_t lowCut = 80.,
21 Double_t highCut = 1e4,
22 TString inFileNameData = "data_LHC10d.root",
23 TString inFileNameMC = "mc_LHC10d.root");
25 TH1D * GetAcceptedFraction(TString cutname = "Ncl",
26 Int_t projectionAxis = 1,
27 Int_t particleType = 5,
28 Double_t lowCut = 80.,
29 Double_t highCut = 1e4,
30 TString inFileName = "data_LHC10d.root");
32 void PrintCutGallery(TString inFileNameData = "data_LHC10d.root",
33 TString inFileNameMC = "mc_LHC10d.root",
34 TString outFileName = "plots/10d.pdf");
37 TH1D *GetITSTPCMatchingEff(TString inFileNameData = "data_LHC10d.root",
38 Int_t particleType = 5,
39 Int_t projectionAxis = 1);
42 TH1D *GetITSTPCMatchingHisto(TString inFileNameData = "data_LHC10d.root",
43 Int_t particleType = 5,
44 Bool_t isMatched = kTRUE,
45 Int_t projectionAxis = 1);
48 //______________________________________________________________________________
49 void MakeSensitivityPlots2() {
51 // make all the senstivity plots
53 //PrintCutGallery("output/LHC10b_data.root", "output/LHC10b_MC.root", "plots/10b.pdf");
54 PrintCutGallery("data_LHC10d.root", "mc_LHC10d.root", "plots/10d.pdf");
55 //PrintCutGallery("output/LHC10e_data.root", "output/LHC10e_MC.root", "plots/10e.pdf");
56 //PrintCutGallery("output/LHC10h_data.root", "output/LHC10h_MC.root", "plots/10h.pdf");
60 //______________________________________________________________________________
61 void PrintCutGallery(TString inFileNameData, TString inFileNameMC, TString outFileName) {
63 // print a gallery of cuts
65 TCanvas * canvMaster = new TCanvas("canvMaster","canvMaster");
66 canvMaster->Divide(3,2);
67 //TCanvas * canv = GetSensitivityPlot();
69 TCanvas * canvSens[6];
70 for(Int_t i=0; i < 6; i++) {
71 canvSens[i]= GetSensitivityPlot("Ncl", 1, 5, 50 + i*10, 1e4, inFileNameData.Data(), inFileNameMC.Data());
72 //canvSens[i]= GetSensitivityPlot("Chi2Tpc", 1, 5, -1e4, 2.5 + i*0.5, inFileNameData.Data(), inFileNameMC.Data());
73 canvSens[i]->SetName(Form("canvSens_%i",i));
75 canvSens[i]->DrawClonePad();
78 canvMaster->Print(outFileName.Data());
83 //______________________________________________________________________________
84 TCanvas * GetSensitivityPlot(TString cutname,
89 TString inFileNameData,
90 TString inFileNameMC) {
94 TH1D * nclAcceptedData = GetAcceptedFraction(cutname.Data(), projectionAxis, particleType, lowCut, highCut, inFileNameData);
95 nclAcceptedData->SetNameTitle(Form("%s_DATA",nclAcceptedData->GetName()), Form("%s_DATA",nclAcceptedData->GetName()));
98 nclAcceptedData->GetXaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
99 nclAcceptedData->GetYaxis()->SetTitle("accepted fraction");
100 nclAcceptedData->GetYaxis()->SetLabelSize(0.04);
101 nclAcceptedData->GetYaxis()->SetTitleSize(0.06);
102 nclAcceptedData->GetYaxis()->SetTitleOffset(1);
103 nclAcceptedData->SetMaximum(1.07);
104 nclAcceptedData->SetMinimum(0.625);
105 nclAcceptedData->SetLineColor(kRed -3);
107 TH1D * nclAcceptedMc = GetAcceptedFraction(cutname.Data(), projectionAxis, particleType, lowCut, highCut, inFileNameMC);
108 nclAcceptedMc->SetNameTitle(Form("%s_MC",nclAcceptedMc->GetName()), Form("%s_MC",nclAcceptedMc->GetName()));
109 nclAcceptedMc->SetLineColor(kBlue -3);
111 // create the complicated splitted canvas
113 gStyle->SetOptStat(0);
114 gStyle->SetOptTitle(0);
115 TCanvas * canvCut = new TCanvas("canvCut",Form("sensitivity to %s cut",cutname.Data()),600,600);
116 canvCut->Divide(1,2);
118 TPad* canvas_up = (TPad*) canvCut->GetListOfPrimitives()->FindObject(Form("canvCut_1"));
119 TPad* canvas_dw = (TPad*) canvCut->GetListOfPrimitives()->FindObject(Form("canvCut_2"));
121 canvas_up->SetLogx();
122 canvas_dw->SetLogx();
125 double up_height = 0.75; // please tune so that the upper figures size will meet your requirement
126 double dw_correction = 1.30; // please tune so that the smaller canvas size will work in your environment
128 //double font_size_dw = 0.1; // please tune the font size parameter for bottom figure
129 double dw_height = (1. - up_height) * dw_correction;
131 canvas_up->SetPad(0., 1 - up_height, 1., 1.);
132 canvas_dw->SetPad(0., 0., 1., dw_height);
133 canvas_up->SetFrameFillColor(0);
134 canvas_up->SetFillColor(0);
135 canvas_dw->SetFillColor(0);
136 canvas_dw->SetFrameFillColor(0);
138 // set top margin 0 for bottom figure
139 canvas_dw->SetTopMargin(0);
140 canvas_dw->SetLeftMargin(0.12);
141 canvas_dw->SetBottomMargin(0.3);
143 //set margins for top figure
144 canvas_up->SetLeftMargin(0.12);
147 nclAcceptedData->GetYaxis()->SetLabelFont(62);
148 nclAcceptedData->SetObjectStat(0);
149 nclAcceptedMc->SetObjectStat(0);
151 nclAcceptedData->DrawCopy();
152 nclAcceptedMc->DrawCopy("SAME");
154 TLegend *leg = new TLegend(0.65,0.2,.85,0.4);
155 leg->AddEntry(nclAcceptedData,"Data","f");
156 leg->AddEntry(nclAcceptedMc,"MC","f");
157 leg->SetBorderSize(0);
158 gStyle->SetFillColor(0);
160 Float_t lowCutTitle = lowCut < -999. ? 0 : lowCut;
161 TLatex * tex = new TLatex(0.9654768,1.032485,Form("%4.2f < %s < %4.2f", lowCutTitle, cutname.Data(), highCut));
166 TH1D * nclAcceptedMcDataRatio = (TH1D*)nclAcceptedData->Clone();
168 canvCut->cd(2)->SetLogx();
169 // gPad->SetTicky(2);
170 gPad->SetFillStyle(0);
172 nclAcceptedMcDataRatio->Divide(nclAcceptedMc);
173 nclAcceptedMcDataRatio->GetYaxis()->SetTitle("ratio");
174 nclAcceptedMcDataRatio->GetXaxis()->SetLabelSize(0.1);
175 nclAcceptedMcDataRatio->GetXaxis()->SetTitleSize(0.11);
176 nclAcceptedMcDataRatio->GetYaxis()->SetLabelSize(0.07);
177 nclAcceptedMcDataRatio->GetYaxis()->SetTitleSize(0.11);
178 nclAcceptedMcDataRatio->GetXaxis()->SetTitleOffset(1.23);
179 nclAcceptedMcDataRatio->GetYaxis()->SetTitleOffset(0.5);
180 nclAcceptedMcDataRatio->GetYaxis()->CenterTitle();
181 nclAcceptedMcDataRatio->SetMaximum(1.18);
182 nclAcceptedMcDataRatio->SetMinimum(0.8);
183 nclAcceptedMcDataRatio->GetYaxis()->SetLabelFont(62);
184 nclAcceptedMcDataRatio->SetLineColor(kGreen+2);
185 nclAcceptedMcDataRatio->Draw();
186 canvas_dw->SetFillStyle(1001);
195 //______________________________________________________________________________
196 TH1D * GetAcceptedFraction(TString cutname,
197 Int_t projectionAxis,
201 TString inFileName) {
203 // accepted fraction of tracks for ncl cut vs. pT
205 TFile * inFileData = TFile::Open(inFileName);
206 TList * l = (TList * ) inFileData->Get("akalweit_TrackingUncert");
207 THnF * histNcl = (THnF *) l->FindObject(Form("hist%s",cutname.Data()));
209 // select particleType
211 histNcl->GetAxis(4)->SetRangeUser(particleType, particleType);
213 // restrict eta-range
215 histNcl->GetAxis(2)->SetRangeUser(-0.75, 0.75);
217 // determine sensitivities
219 TH1D * hAll = histNcl->Projection(projectionAxis);
220 hAll->SetNameTitle("hAll","hAll");
222 const Int_t kVeryBig = 10000;
223 histNcl->GetAxis(0)->SetRangeUser(lowCut, highCut);
224 TH1D * hAccepted = histNcl->Projection(1);
225 hAccepted->SetNameTitle(Form("hAccepted_%s_%f_%f",cutname.Data(),lowCut,highCut),Form("hAccepted_%s_%f_%f",cutname.Data(),lowCut,highCut));
227 hAccepted->Divide(hAll);
231 hAccepted->SetLineWidth(3);
232 hAccepted->SetDirectory(0);
242 //______________________________________________________________________________
243 TH1D *GetITSTPCMatchingEff(TString inFileNameData,
245 Int_t projectionAxis){
248 // make a single plot
250 TH1D * hMatching = GetITSTPCMatchingHisto(inFileNameData, particleType, kTRUE, projectionAxis);
251 hMatching->SetNameTitle(Form("PID: %d\t proj: %d",particleType,projectionAxis), Form("PID: %d\t proj: %d",particleType,projectionAxis));
254 TH1D *hNoMatching = GetITSTPCMatchingHisto(inFileNameData, particleType, kFALSE, projectionAxis);
255 hNoMatching->SetNameTitle(Form("PID: %d\t proj: %d",particleType,projectionAxis), Form("PID: %d\t proj: %d",particleType,projectionAxis));
256 hNoMatching->Sumw2();
258 hMatching->Divide(hMatching,hNoMatching,1,1,"B");
260 //TCanvas * canvEff = new TCanvas("canvEff","matching efficiency",600,600);
270 //______________________________________________________________________________
271 TH1D *GetITSTPCMatchingHisto(TString inFileNameData,
274 Int_t projectionAxis){
277 // ITS-TPC matching histograms as a funct. of pT, eta, phi, for each species
279 TFile * inFileData = TFile::Open(inFileNameData);
280 TList * l = (TList * ) inFileData->Get("akalweit_TrackingUncert");
281 THnF * histITSTPC = (THnF *) l->FindObject("histTpcItsMatch");
284 // select particleType
286 histITSTPC->GetAxis(4)->SetRangeUser(particleType, particleType);
289 // extract isMatched = kFALSE or kTRUE
292 histITSTPC->GetAxis(0)->SetRangeUser(1,1);
294 histITSTPC->GetAxis(0)->SetRangeUser(0,0);
296 TH1D * hProj = histITSTPC->Projection(projectionAxis);
297 hProj->SetDirectory(0);
298 hProj->SetNameTitle(Form("h%d",projectionAxis),Form("h%d",projectionAxis));