1 #if !defined (__CINT__) || defined (__CLING__) 5 #include <TDirectoryFile.h> 15 #include <TFractionFitter.h> 16 #include <TObjArray.h> 17 #include <TDatabasePDG.h> 48 const double ptlims[] = {0.3,0.5,0.75,1.,1.5,2.,3.,5.,10.};
67 void SetTH1Style(TH1F* histo,
int markerstyle,
int markercolor,
float markersize,
int linewidth,
int linecolor,
int fillcolor,
float labelsize=-1,
float titlesize=-1);
79 cout <<
"\n\n********************\n" << endl;
80 cout << nPtbins <<
" p_T bins (GeV/c):" << endl;
81 for(
int iPt=0; iPt<nPtbins; iPt++) {
89 TH2F *hNsigmaTPCPionVsPtMCTrue, *hNsigmaTPCKaonVsPtMCTrue, *hNsigmaTPCProtonVsPtMCTrue;
90 TH2F *hNsigmaTOFPionVsPtMCTrue, *hNsigmaTOFKaonVsPtMCTrue, *hNsigmaTOFProtonVsPtMCTrue;
92 TH1F *hNsigmaTPCPionMCTrue[nPtbins], *hNsigmaTPCKaonMCTrue[nPtbins], *hNsigmaTPCProtonMCTrue[nPtbins];
93 TH1F *hNsigmaTOFPionMCTrue[nPtbins], *hNsigmaTOFKaonMCTrue[nPtbins], *hNsigmaTOFProtonMCTrue[nPtbins];
96 TH1F *hNsigmaTPCPionMCV0tag[nPtbins][
nPDGcodes], *hNsigmaTPCKaonMCKinktag[nPtbins][
nPDGcodes], *hNsigmaTPCKaonMCTOFtag[nPtbins][
nPDGcodes], *hNsigmaTPCProtonMCV0tag[nPtbins][
nPDGcodes];
97 TH1F *hNsigmaTOFPionMCV0tag[nPtbins][
nPDGcodes], *hNsigmaTOFKaonMCKinktag[nPtbins][
nPDGcodes], *hNsigmaTOFKaonMCTPCtag[nPtbins][
nPDGcodes], *hNsigmaTOFProtonMCV0tag[nPtbins][
nPDGcodes];
100 TH1F *hNsigmaTPCPionDataV0tag[nPtbins], *hNsigmaTPCKaonDataKinktag[nPtbins], *hNsigmaTPCKaonDataTOFtag[nPtbins], *hNsigmaTPCProtonDataV0tag[nPtbins];
101 TH1F *hNsigmaTOFPionDataV0tag[nPtbins], *hNsigmaTOFKaonDataKinktag[nPtbins], *hNsigmaTOFKaonDataTPCtag[nPtbins], *hNsigmaTOFProtonDataV0tag[nPtbins];
103 for(
int iPt=0; iPt<nPtbins; iPt++) {
104 for(
int iPart=0; iPart<
nPDGcodes; iPart++) {
105 hNsigmaTPCPionMCV0tag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTPCPionMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(#pi);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
106 hNsigmaTPCKaonMCKinktag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTPCKaonMCKinktag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
107 hNsigmaTPCKaonMCTOFtag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTPCKaonMCTOFtag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
108 hNsigmaTPCProtonMCV0tag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTPCProtonMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(p);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
110 hNsigmaTOFPionMCV0tag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTOFPionMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(#pi);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
111 hNsigmaTOFKaonMCKinktag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTOFKaonMCKinktag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
112 hNsigmaTOFKaonMCTPCtag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTOFKaonMCTPCtag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
113 hNsigmaTOFProtonMCV0tag[iPt][iPart] =
new TH1F(Form(
"hNsigmaTOFProtonMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(p);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
125 hNsigmaTPCPionDataV0tag[iPt] =
new TH1F(Form(
"hNsigmaTPCPionDataV0tag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(#pi);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
126 hNsigmaTPCKaonDataKinktag[iPt] =
new TH1F(Form(
"hNsigmaTPCKaonDataKinktag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
127 hNsigmaTPCKaonDataTOFtag[iPt] =
new TH1F(Form(
"hNsigmaTPCKaonDataTOFtag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
128 hNsigmaTPCProtonDataV0tag[iPt] =
new TH1F(Form(
"hNsigmaTPCProtonDataV0tag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TPC}(p);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
130 hNsigmaTOFPionDataV0tag[iPt] =
new TH1F(Form(
"hNsigmaTOFPionDataV0tag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(#pi);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
131 hNsigmaTOFKaonDataKinktag[iPt] =
new TH1F(Form(
"hNsigmaTOFKaonDataKinktag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
132 hNsigmaTOFKaonDataTPCtag[iPt] =
new TH1F(Form(
"hNsigmaTOFKaonDataTPCtag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(K);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
133 hNsigmaTOFProtonDataV0tag[iPt] =
new TH1F(Form(
"hNsigmaTOFProtonDataV0tag_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),Form(
"%0.2f < #it{p}_{T} < %0.2f GeV/#it{c};N_{#sigma}^{TOF}(p);Normalised entries",
ptlims[iPt],
ptlims[iPt+1]),1000,-50,50);
148 TFile* infileMC = TFile::Open(infileNameMC.Data());
149 if(!infileMC || !infileMC->IsOpen())
return 2;
150 TDirectoryFile* indirMC = (TDirectoryFile*)infileMC->Get(indirNameMC.Data());
151 if(!indirMC)
return 3;
153 hNsigmaTPCPionVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTPCvsPt_Pion");
154 hNsigmaTPCKaonVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTPCvsPt_Kaon");
155 hNsigmaTPCProtonVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTPCvsPt_Proton");
156 hNsigmaTOFPionVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTOFvsPt_Pion");
157 hNsigmaTOFKaonVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTOFvsPt_Kaon");
158 hNsigmaTOFProtonVsPtMCTrue = (
TH2F*)listMC->FindObject(
"fHistNsigmaTOFvsPt_Proton");
159 TTree* treePIDMC = (
TTree*)indirMC->Get(
"fPIDtree");
160 if(!treePIDMC)
return 4;
161 treePIDMC->SetName(
"treePIDMC");
163 for(
int iPt=0; iPt<nPtbins; iPt++) {
164 int ptbinmin = hNsigmaTPCPionVsPtMCTrue->GetXaxis()->FindBin(
ptlims[iPt]*1.0001);
165 int ptbinmax = hNsigmaTPCPionVsPtMCTrue->GetXaxis()->FindBin(
ptlims[iPt+1]*0.9999);
167 hNsigmaTPCPionMCTrue[iPt] = (TH1F*)hNsigmaTPCPionVsPtMCTrue->ProjectionY(Form(
"hNsigmaTPCPionMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
168 hNsigmaTPCKaonMCTrue[iPt] = (TH1F*)hNsigmaTPCKaonVsPtMCTrue->ProjectionY(Form(
"hNsigmaTPCKaonMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
169 hNsigmaTPCProtonMCTrue[iPt] = (TH1F*)hNsigmaTPCProtonVsPtMCTrue->ProjectionY(Form(
"hNsigmaTPCProtonMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
171 hNsigmaTOFPionMCTrue[iPt] = (TH1F*)hNsigmaTOFPionVsPtMCTrue->ProjectionY(Form(
"hNsigmaTOFPionMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
172 hNsigmaTOFKaonMCTrue[iPt] = (TH1F*)hNsigmaTOFKaonVsPtMCTrue->ProjectionY(Form(
"hNsigmaTOFKaonMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
173 hNsigmaTOFProtonMCTrue[iPt] = (TH1F*)hNsigmaTOFProtonVsPtMCTrue->ProjectionY(Form(
"hNsigmaTOFProtonMCTrue_p%0.f_%0.f",
ptlims[iPt]*10,
ptlims[iPt+1]*10),ptbinmin,ptbinmax);
184 unsigned char tagMC = 0;
185 short n_sigma_TPC_pi_MC = -999;
186 short n_sigma_TPC_K_MC = -999;
187 short n_sigma_TPC_p_MC = -999;
188 short n_sigma_TOF_pi_MC = -999;
189 short n_sigma_TOF_K_MC = -999;
190 short n_sigma_TOF_p_MC = -999;
191 unsigned short pT_MC = 0;
193 treePIDMC->SetBranchAddress(
"PDGcode",&pdgMC);
194 treePIDMC->SetBranchAddress(
"tag",&tagMC);
195 treePIDMC->SetBranchAddress(
"n_sigma_TPC_pi",&n_sigma_TPC_pi_MC);
196 treePIDMC->SetBranchAddress(
"n_sigma_TPC_K",&n_sigma_TPC_K_MC);
197 treePIDMC->SetBranchAddress(
"n_sigma_TPC_p",&n_sigma_TPC_p_MC);
198 treePIDMC->SetBranchAddress(
"n_sigma_TOF_pi",&n_sigma_TOF_pi_MC);
199 treePIDMC->SetBranchAddress(
"n_sigma_TOF_K",&n_sigma_TOF_K_MC);
200 treePIDMC->SetBranchAddress(
"n_sigma_TOF_p",&n_sigma_TOF_p_MC);
201 treePIDMC->SetBranchAddress(
"pT",&pT_MC);
203 cout <<
"\n********** Loop on MC tracks **********\n" << endl;
205 for(
int iEntry=0; iEntry<treePIDMC->GetEntriesFast(); iEntry++) {
207 if(iEntry>maxEntries)
break;
209 if(iEntry%1000000==0 || iEntry==treePIDMC->GetEntriesFast()-1) cout << Form(
"MC Track %010d",iEntry) << endl;
211 treePIDMC->GetEntry(iEntry);
213 if(iPt<0 || iPt>=static_cast<int>(nPtbins))
continue;
216 hNsigmaTPCPionMCV0tag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TPC_pi_MC)/100);
217 hNsigmaTOFPionMCV0tag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TOF_pi_MC)/100);
220 hNsigmaTPCKaonMCKinktag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TPC_K_MC)/100);
221 hNsigmaTOFKaonMCKinktag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TOF_K_MC)/100);
224 hNsigmaTPCKaonMCTOFtag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TPC_K_MC)/100);
227 hNsigmaTOFKaonMCTPCtag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TOF_K_MC)/100);
230 hNsigmaTPCProtonMCV0tag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TPC_p_MC)/100);
231 hNsigmaTOFProtonMCV0tag[iPt][
kAll]->Fill(static_cast<float>(n_sigma_TOF_p_MC)/100);
237 hNsigmaTPCPionMCV0tag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TPC_pi_MC)/100);
238 hNsigmaTOFPionMCV0tag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TOF_pi_MC)/100);
240 if(tagMC&AliAnalysisTaskSEHFSystPID::kIsKaonFromKinks) {
241 hNsigmaTPCKaonMCKinktag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TPC_K_MC)/100);
242 hNsigmaTOFKaonMCKinktag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TOF_K_MC)/100);
244 if(tagMC&AliAnalysisTaskSEHFSystPID::kIsKaonFromTOF) {
245 hNsigmaTPCKaonMCTOFtag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TPC_K_MC)/100);
247 if(tagMC&AliAnalysisTaskSEHFSystPID::kIsKaonFromTPC) {
248 hNsigmaTOFKaonMCTPCtag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TOF_K_MC)/100);
250 if(tagMC&AliAnalysisTaskSEHFSystPID::kIsProtonFromL) {
251 hNsigmaTPCProtonMCV0tag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TPC_p_MC)/100);
252 hNsigmaTOFProtonMCV0tag[iPt][iHisto]->Fill(static_cast<float>(n_sigma_TOF_p_MC)/100);
260 TFile* infileData = TFile::Open(infileNameData.Data());
261 if(!infileData || !infileData->IsOpen())
return 5;
262 TDirectoryFile* indirData = (TDirectoryFile*)infileData->Get(indirNameData.Data());
263 if(!indirData)
return 6;
264 TList* listData = (
TList*)indirData->Get(inlistNameData.Data());
265 TTree* treePIDData = (
TTree*)indirData->Get(
"fPIDtree");
266 if(!treePIDData)
return 7;
267 treePIDData->SetName(
"treePIDData");
269 unsigned char tagData = 0;
270 short n_sigma_TPC_pi_Data = -999;
271 short n_sigma_TPC_K_Data = -999;
272 short n_sigma_TPC_p_Data = -999;
273 short n_sigma_TOF_pi_Data = -999;
274 short n_sigma_TOF_K_Data = -999;
275 short n_sigma_TOF_p_Data = -999;
276 unsigned short pT_Data = 0;
278 treePIDData->SetBranchAddress(
"tag",&tagData);
279 treePIDData->SetBranchAddress(
"n_sigma_TPC_pi",&n_sigma_TPC_pi_Data);
280 treePIDData->SetBranchAddress(
"n_sigma_TPC_K",&n_sigma_TPC_K_Data);
281 treePIDData->SetBranchAddress(
"n_sigma_TPC_p",&n_sigma_TPC_p_Data);
282 treePIDData->SetBranchAddress(
"n_sigma_TOF_pi",&n_sigma_TOF_pi_Data);
283 treePIDData->SetBranchAddress(
"n_sigma_TOF_K",&n_sigma_TOF_K_Data);
284 treePIDData->SetBranchAddress(
"n_sigma_TOF_p",&n_sigma_TOF_p_Data);
285 treePIDData->SetBranchAddress(
"pT",&pT_Data);
287 cout <<
"\n********** Loop on data tracks **********\n" << endl;
289 TH2F* hNsigmaTPCKaonTPCtagged =
new TH2F(
"hNsigmaTPCKaonTPCtagged",
";#it{p}_{T} (GeV/#it{c});N_{#sigma}(K)",100,0.,10.,1000,-50,50.);
290 hNsigmaTPCKaonTPCtagged->SetMarkerColor(kBlue);
291 TH2F* hNsigmaTPCKaon =
new TH2F(
"hNsigmaTPCKaon",
";#it{p}_{T} (GeV/#it{c});N_{#sigma}^{TPC}(K)",100,0.,10.,1000,-50,50.);
292 hNsigmaTPCKaon->SetMarkerColor(kBlack);
293 TH2F* hNsigmaTOFKaonTOFtagged =
new TH2F(
"hNsigmaTOFKaonTOFtagged",
";#it{p}_{T} (GeV/#it{c});N_{#sigma}(K)",100,0.,10.,1000,-50,50.);
294 hNsigmaTOFKaonTOFtagged->SetMarkerColor(kBlue);
295 TH2F* hNsigmaTOFKaon =
new TH2F(
"hNsigmaTOFKaon",
";#it{p}_{T} (GeV/#it{c});N_{#sigma}^{TOF}(K)",100,0.,10.,1000,-50,50.);
296 hNsigmaTOFKaon->SetMarkerColor(kBlack);
298 for(
int iEntry=0; iEntry<treePIDData->GetEntriesFast(); iEntry++) {
300 if(iEntry>maxEntries)
break;
302 if(iEntry%1000000==0 || iEntry==treePIDData->GetEntriesFast()-1) cout << Form(
"Data Track %010d",iEntry) << endl;
304 treePIDData->GetEntry(iEntry);
306 if(iPt<0 || iPt>=static_cast<int>(nPtbins))
continue;
307 hNsigmaTPCKaon->Fill(static_cast<float>(pT_Data)/1000,static_cast<float>(n_sigma_TPC_K_Data)/100);
308 hNsigmaTOFKaon->Fill(static_cast<float>(pT_Data)/1000,static_cast<float>(n_sigma_TOF_K_Data)/100);
310 hNsigmaTPCPionDataV0tag[iPt]->Fill(static_cast<float>(n_sigma_TPC_pi_Data)/100);
311 hNsigmaTOFPionDataV0tag[iPt]->Fill(static_cast<float>(n_sigma_TOF_pi_Data)/100);
314 hNsigmaTPCKaonDataKinktag[iPt]->Fill(static_cast<float>(n_sigma_TPC_K_Data)/100);
315 hNsigmaTOFKaonDataKinktag[iPt]->Fill(static_cast<float>(n_sigma_TOF_K_Data)/100);
318 hNsigmaTPCKaonDataTOFtag[iPt]->Fill(static_cast<float>(n_sigma_TPC_K_Data)/100);
319 hNsigmaTOFKaonTOFtagged->Fill(static_cast<float>(pT_Data)/1000,static_cast<float>(n_sigma_TOF_K_Data)/100);
322 hNsigmaTOFKaonDataTPCtag[iPt]->Fill(static_cast<float>(n_sigma_TOF_K_Data)/100);
323 hNsigmaTPCKaonTPCtagged->Fill(static_cast<float>(pT_Data)/1000,static_cast<float>(n_sigma_TPC_K_Data)/100);
326 hNsigmaTPCProtonDataV0tag[iPt]->Fill(static_cast<float>(n_sigma_TPC_p_Data)/100);
327 hNsigmaTOFProtonDataV0tag[iPt]->Fill(static_cast<float>(n_sigma_TOF_p_Data)/100);
330 cout <<
"\n********************\n" << endl;
336 TLatex* latAll =
new TLatex();
338 latAll->SetTextFont(42);
339 latAll->SetTextColor(kBlack);
340 latAll->SetTextSize(0.045);
341 TLatex* latTag =
new TLatex();
343 latTag->SetTextFont(42);
344 latTag->SetTextColor(kBlue);
345 latTag->SetTextSize(0.045);
347 TCanvas* cProva =
new TCanvas(
"cProva",
"",1920,1080);
350 hNsigmaTPCKaon->DrawCopy(
"");
351 hNsigmaTPCKaonTPCtagged->DrawCopy(
"same");
352 latAll->DrawLatex(0.65,0.25,
"All tags");
353 latTag->DrawLatex(0.65,0.2,
"TPC tag");
355 hNsigmaTOFKaon->DrawCopy(
"");
356 hNsigmaTOFKaonTOFtagged->DrawCopy(
"same");
357 latAll->DrawLatex(0.65,0.25,
"All tags");
358 latTag->DrawLatex(0.65,0.2,
"TOF tag");
360 cProva->SaveAs(
"TPC_TOF_tag.pdf");
361 cProva->SaveAs(
"TPC_TOF_tag.png");
365 double intNsigmaTPCPionMCV0tag[nPtbins][
nPDGcodes];
366 double intNsigmaTPCKaonMCKinktag[nPtbins][
nPDGcodes];
367 double intNsigmaTPCKaonMCTOFtag[nPtbins][
nPDGcodes];
368 double intNsigmaTPCProtonMCV0tag[nPtbins][
nPDGcodes];
369 double intNsigmaTOFPionMCV0tag[nPtbins][
nPDGcodes];
370 double intNsigmaTOFKaonMCKinktag[nPtbins][
nPDGcodes];
371 double intNsigmaTOFKaonMCTPCtag[nPtbins][
nPDGcodes];
372 double intNsigmaTOFProtonMCV0tag[nPtbins][
nPDGcodes];
374 double intNsigmaTPCPionDataV0tag[nPtbins];
375 double intNsigmaTPCKaonDataKinktag[nPtbins];
376 double intNsigmaTPCKaonDataTOFtag[nPtbins];
377 double intNsigmaTPCProtonDataV0tag[nPtbins];
378 double intNsigmaTOFPionDataV0tag[nPtbins];
379 double intNsigmaTOFKaonDataKinktag[nPtbins];
380 double intNsigmaTOFKaonDataTPCtag[nPtbins];
381 double intNsigmaTOFProtonDataV0tag[nPtbins];
383 for(
int iPt=0; iPt<nPtbins; iPt++) {
385 intNsigmaTPCPionMCV0tag[iPt][iPart] = hNsigmaTPCPionMCV0tag[iPt][iPart]->Integral() / hNsigmaTPCPionMCV0tag[iPt][iPart]->GetBinWidth(1);
386 intNsigmaTPCKaonMCKinktag[iPt][iPart] = hNsigmaTPCKaonMCKinktag[iPt][iPart]->Integral() / hNsigmaTPCKaonMCKinktag[iPt][iPart]->GetBinWidth(1);
387 intNsigmaTPCKaonMCTOFtag[iPt][iPart] = hNsigmaTPCKaonMCTOFtag[iPt][iPart]->Integral() / hNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetBinWidth(1);
388 intNsigmaTPCProtonMCV0tag[iPt][iPart] = hNsigmaTPCProtonMCV0tag[iPt][iPart]->Integral() / hNsigmaTPCProtonMCV0tag[iPt][iPart]->GetBinWidth(1);
389 intNsigmaTOFPionMCV0tag[iPt][iPart] = hNsigmaTOFPionMCV0tag[iPt][iPart]->Integral() / hNsigmaTOFPionMCV0tag[iPt][iPart]->GetBinWidth(1);
390 intNsigmaTOFKaonMCKinktag[iPt][iPart] = hNsigmaTOFKaonMCKinktag[iPt][iPart]->Integral() / hNsigmaTOFKaonMCKinktag[iPt][iPart]->GetBinWidth(1);
391 intNsigmaTOFKaonMCTPCtag[iPt][iPart] = hNsigmaTOFKaonMCTPCtag[iPt][iPart]->Integral() / hNsigmaTOFKaonMCTPCtag[iPt][iPart]->GetBinWidth(1);
392 intNsigmaTOFProtonMCV0tag[iPt][iPart] = hNsigmaTOFProtonMCV0tag[iPt][iPart]->Integral() / hNsigmaTOFProtonMCV0tag[iPt][iPart]->GetBinWidth(1);
395 intNsigmaTPCPionDataV0tag[iPt] = hNsigmaTPCPionDataV0tag[iPt]->Integral() / hNsigmaTPCPionDataV0tag[iPt]->GetBinWidth(1);
396 intNsigmaTPCKaonDataKinktag[iPt] = hNsigmaTPCKaonDataKinktag[iPt]->Integral() / hNsigmaTPCKaonDataKinktag[iPt]->GetBinWidth(1);
397 intNsigmaTPCKaonDataTOFtag[iPt] = hNsigmaTPCKaonDataTOFtag[iPt]->Integral() / hNsigmaTPCKaonDataTOFtag[iPt]->GetBinWidth(1);
398 intNsigmaTPCProtonDataV0tag[iPt] = hNsigmaTPCProtonDataV0tag[iPt]->Integral() / hNsigmaTPCProtonDataV0tag[iPt]->GetBinWidth(1);
399 intNsigmaTOFPionDataV0tag[iPt] = hNsigmaTOFPionDataV0tag[iPt]->Integral() / hNsigmaTOFPionDataV0tag[iPt]->GetBinWidth(1);
400 intNsigmaTOFKaonDataKinktag[iPt] = hNsigmaTOFKaonDataKinktag[iPt]->Integral() / hNsigmaTOFKaonDataKinktag[iPt]->GetBinWidth(1);
401 intNsigmaTOFKaonDataTPCtag[iPt] = hNsigmaTOFKaonDataTPCtag[iPt]->Integral() / hNsigmaTOFKaonDataTPCtag[iPt]->GetBinWidth(1);
402 intNsigmaTOFProtonDataV0tag[iPt] = hNsigmaTOFProtonDataV0tag[iPt]->Integral() / hNsigmaTOFProtonDataV0tag[iPt]->GetBinWidth(1);
409 hFractionTPCPionMCV0tag[iPart] =
new TH1F(Form(
"hFractionTPCPionMCV0tag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
410 hFractionTOFPionMCV0tag[iPart] =
new TH1F(Form(
"hFractionTOFPionMCV0tag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
411 hFractionTPCKaonMCKinktag[iPart] =
new TH1F(Form(
"hFractionTPCKaonMCKinktag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
412 hFractionTPCKaonMCTOFtag[iPart] =
new TH1F(Form(
"hFractionTPCKaonMCTOFtag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
413 hFractionTOFKaonMCKinktag[iPart] =
new TH1F(Form(
"hFractionTOFKaonMCKinktag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
414 hFractionTOFKaonMCTPCtag[iPart] =
new TH1F(Form(
"hFractionTOFKaonMCTPCtag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
415 hFractionTPCProtonMCV0tag[iPart] =
new TH1F(Form(
"hFractionTPCProtonMCV0tag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
416 hFractionTOFProtonMCV0tag[iPart] =
new TH1F(Form(
"hFractionTOFProtonMCV0tag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Contamination",nPtbins,
ptlims);
428 for(
int iPt=0; iPt<nPtbins; iPt++) {
429 double eff=-1, unc=-1;
432 hFractionTPCPionMCV0tag[iPart]->SetBinContent(iPt+1,eff);
433 hFractionTPCPionMCV0tag[iPart]->SetBinError(iPt+1,unc);
435 ComputeEfficiency(intNsigmaTOFPionMCV0tag[iPt][iPart],intNsigmaTOFPionMCV0tag[iPt][kAll],eff,unc);
436 hFractionTOFPionMCV0tag[iPart]->SetBinContent(iPt+1,eff);
437 hFractionTOFPionMCV0tag[iPart]->SetBinError(iPt+1,unc);
439 ComputeEfficiency(intNsigmaTPCKaonMCKinktag[iPt][iPart],intNsigmaTPCKaonMCKinktag[iPt][kAll],eff,unc);
440 hFractionTPCKaonMCKinktag[iPart]->SetBinContent(iPt+1,eff);
441 hFractionTPCKaonMCKinktag[iPart]->SetBinError(iPt+1,unc);
443 ComputeEfficiency(intNsigmaTPCKaonMCTOFtag[iPt][iPart],intNsigmaTPCKaonMCTOFtag[iPt][kAll],eff,unc);
444 hFractionTPCKaonMCTOFtag[iPart]->SetBinContent(iPt+1,eff);
445 hFractionTPCKaonMCTOFtag[iPart]->SetBinError(iPt+1,unc);
447 ComputeEfficiency(intNsigmaTOFKaonMCKinktag[iPt][iPart],intNsigmaTOFKaonMCKinktag[iPt][kAll],eff,unc);
448 hFractionTOFKaonMCKinktag[iPart]->SetBinContent(iPt+1,eff);
449 hFractionTOFKaonMCKinktag[iPart]->SetBinError(iPt+1,unc);
451 ComputeEfficiency(intNsigmaTOFKaonMCTPCtag[iPt][iPart],intNsigmaTOFKaonMCTPCtag[iPt][kAll],eff,unc);
452 hFractionTOFKaonMCTPCtag[iPart]->SetBinContent(iPt+1,eff);
453 hFractionTOFKaonMCTPCtag[iPart]->SetBinError(iPt+1,unc);
455 ComputeEfficiency(intNsigmaTPCProtonMCV0tag[iPt][iPart],intNsigmaTPCProtonMCV0tag[iPt][kAll],eff,unc);
456 hFractionTPCProtonMCV0tag[iPart]->SetBinContent(iPt+1,eff);
457 hFractionTPCProtonMCV0tag[iPart]->SetBinError(iPt+1,unc);
459 ComputeEfficiency(intNsigmaTOFProtonMCV0tag[iPt][iPart],intNsigmaTOFProtonMCV0tag[iPt][kAll],eff,unc);
460 hFractionTOFProtonMCV0tag[iPart]->SetBinContent(iPt+1,eff);
461 hFractionTOFProtonMCV0tag[iPart]->SetBinError(iPt+1,unc);
465 TLegend* legFracMC =
new TLegend(0.2,0.4,0.45,0.7);
466 legFracMC->SetTextSize(0.05);
468 legFracMC->AddEntry(hFractionTOFProtonMCV0tag[iPart],pdgnames[iPart].
Data(),
"lpe");
471 TCanvas* cFractionTPCMC =
new TCanvas(
"cFractionTPCMC",
"cFractionTPCMC",1920,1080);
472 cFractionTPCMC->Divide(2,2);
473 cFractionTPCMC->cd(1)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TPC #pi from K_{s}^{0};#it{p}_{T} (GeV/#it{c});Purity / Contamination");
474 cFractionTPCMC->cd(1)->SetLogy();
475 cFractionTPCMC->cd(1)->SetLogx();
477 legFracMC->Draw(
"same");
479 cFractionTPCMC->cd(2)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TPC K from kinks;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
480 cFractionTPCMC->cd(2)->SetLogy();
481 cFractionTPCMC->cd(2)->SetLogx();
482 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTPCKaonMCKinktag[iPart]->
Draw(
"same");
484 cFractionTPCMC->cd(3)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TPC K TOF tagged;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
485 cFractionTPCMC->cd(3)->SetLogy();
486 cFractionTPCMC->cd(3)->SetLogx();
487 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTPCKaonMCTOFtag[iPart]->
Draw(
"same");
489 cFractionTPCMC->cd(4)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TPC p from #Lambda;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
490 cFractionTPCMC->cd(4)->SetLogy();
491 cFractionTPCMC->cd(4)->SetLogx();
492 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTPCProtonMCV0tag[iPart]->
Draw(
"same");
494 TCanvas* cFractionTOFMC =
new TCanvas(
"cFractionTOFMC",
"cFractionTOFMC",1920,1080);
495 cFractionTOFMC->Divide(2,2);
496 cFractionTOFMC->cd(1)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF #pi from K_{s}^{0};#it{p}_{T} (GeV/#it{c});Purity / Contamination");
497 cFractionTOFMC->cd(1)->SetLogy();
498 cFractionTOFMC->cd(1)->SetLogx();
500 legFracMC->Draw(
"same");
502 cFractionTOFMC->cd(2)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF K from kinks;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
503 cFractionTOFMC->cd(2)->SetLogy();
504 cFractionTOFMC->cd(2)->SetLogx();
505 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTOFKaonMCKinktag[iPart]->
Draw(
"same");
507 cFractionTOFMC->cd(3)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF K TPC tag;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
508 cFractionTOFMC->cd(3)->SetLogy();
509 cFractionTOFMC->cd(3)->SetLogx();
510 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTOFKaonMCTPCtag[iPart]->
Draw(
"same");
512 cFractionTOFMC->cd(4)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF p from #Lambda;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
513 cFractionTOFMC->cd(4)->SetLogy();
514 cFractionTOFMC->cd(45)->SetLogx();
515 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hFractionTOFProtonMCV0tag[iPart]->
Draw(
"same");
520 TFractionFitter *fNsigmaTOFKaonTPCtagFitter[nPtbins];
521 TFractionFitter *fNsigmaTOFProtonV0tagFitter[nPtbins];
522 TH1F *hFractionTOFKaonDataTPCtag[
nPDGcodes-1];
523 TH1F *hFractionTOFProtonDataV0tag[
nPDGcodes-1];
524 TH1F *hNsigmaTOFKaonDataTPCtag_Fit[nPtbins][
nPDGcodes];
525 TH1F *hNsigmaTOFProtonDataV0tag_Fit[nPtbins][
nPDGcodes];
527 hFractionTOFKaonDataTPCtag[iPart] =
new TH1F(Form(
"hFractionTOFKaonDataTPCtag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Fraction",nPtbins,
ptlims);
528 hFractionTOFProtonDataV0tag[iPart] =
new TH1F(Form(
"hFractionTOFProtonDataV0tag_%s",pdgnames[iPart].
Data()),
";#it{p}_{T} (GeV/#it{c});Fraction",nPtbins,
ptlims);
533 TCanvas* cFitResultTOFKaonFromTPCtag =
new TCanvas(
"cFitResultTOFKaonFromTPCtag",
"cFitResultTOFKaonFromTPCtag",1920,1080);
535 TCanvas* cFitResultTOFProtonFromV0tag =
new TCanvas(
"cFitResultTOFProtonFromV0tag",
"cFitResultTOFProtonFromV0tag",1920,1080);
537 TCanvas* cTOFFractionData =
new TCanvas(
"cTOFFractionData",
"cTOFFractionData",1920,1080);
538 cTOFFractionData->Divide(3,1);
540 TLegend* legTOFFitter =
new TLegend(0.14,0.62,0.52,0.86);
541 legTOFFitter->SetTextSize(0.04);
542 legTOFFitter->AddEntry(hNsigmaTOFKaonDataTPCtag[0],
"Data",
"p");
544 legTOFFitter->AddEntry(hNsigmaTOFKaonMCTPCtag[0][iPart],Form(
"Templ %s",pdgnames[iPart].
Data()),
"l");
547 for(
int iPt=0; iPt<nPtbins; iPt++) {
549 vector<int> templUsedTOFKaonMCTPCtag;
550 GetTOFFractionsFromData(
kKaon,iPt,hFractionTOFKaonMCTPCtag,hFractionTOFKaonDataTPCtag,hNsigmaTOFKaonMCTPCtag[iPt],hNsigmaTOFKaonDataTPCtag[iPt],fNsigmaTOFKaonTPCtagFitter[iPt],templUsedTOFKaonMCTPCtag);
552 if(templUsedTOFKaonMCTPCtag.size()>1) {
553 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll] = (TH1F*)fNsigmaTOFKaonTPCtagFitter[iPt]->GetPlot();
554 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetLineColor(kRed);
555 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetFillStyle(0);
556 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetFillColor(kWhite);
558 for(
unsigned int iTempl=0; iTempl<templUsedTOFKaonMCTPCtag.size(); iTempl++) {
560 fNsigmaTOFKaonTPCtagFitter[iPt]->GetResult(iTempl, frac, err);
561 hNsigmaTOFKaonDataTPCtag_Fit[iPt][templUsedTOFKaonMCTPCtag[iTempl]] = (TH1F*)fNsigmaTOFKaonTPCtagFitter[iPt]->GetMCPrediction(iTempl);
562 hNsigmaTOFKaonDataTPCtag_Fit[iPt][templUsedTOFKaonMCTPCtag[iTempl]]->Scale(frac/hNsigmaTOFKaonDataTPCtag_Fit[iPt][templUsedTOFKaonMCTPCtag[iTempl]]->Integral()*hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->Integral());
563 hNsigmaTOFKaonDataTPCtag_Fit[iPt][templUsedTOFKaonMCTPCtag[iTempl]]->SetFillColor(kWhite);
564 hNsigmaTOFKaonDataTPCtag_Fit[iPt][templUsedTOFKaonMCTPCtag[iTempl]]->SetFillStyle(0);
568 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll] = (TH1F*)hNsigmaTOFKaonDataTPCtag[iPt]->Clone();
569 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetLineColor(kRed);
570 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetFillStyle(0);
571 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kAll]->SetFillColor(kWhite);
572 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kKaon] = (TH1F*)hNsigmaTOFKaonDataTPCtag[iPt]->Clone();
573 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kKaon]->SetFillColor(kWhite);
574 hNsigmaTOFKaonDataTPCtag_Fit[iPt][
kKaon]->SetFillStyle(0);
576 cFitResultTOFKaonFromTPCtag->cd(iPt+1)->SetLogy();
577 hNsigmaTOFKaonDataTPCtag[iPt]->DrawCopy(
"E");
579 vector<int>::iterator it = find(templUsedTOFKaonMCTPCtag.begin(),templUsedTOFKaonMCTPCtag.end(),iPart);
580 if(it!=templUsedTOFKaonMCTPCtag.end()) {
581 hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart]->DrawCopy(
"hist same");
584 hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart]=
nullptr;
587 legTOFFitter->Draw(
"same");
589 vector<int> templUsedTOFProtonMCV0tag;
590 GetTOFFractionsFromData(
kProton,iPt,hFractionTOFProtonMCV0tag,hFractionTOFProtonDataV0tag,hNsigmaTOFProtonMCV0tag[iPt],hNsigmaTOFProtonDataV0tag[iPt],fNsigmaTOFProtonV0tagFitter[iPt],templUsedTOFProtonMCV0tag);
592 if(templUsedTOFProtonMCV0tag.size()>1) {
593 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll] = (TH1F*)fNsigmaTOFProtonV0tagFitter[iPt]->GetPlot();
594 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetLineColor(kRed);
595 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetFillStyle(0);
596 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetFillColor(kWhite);
598 for(
unsigned int iTempl=0; iTempl<templUsedTOFProtonMCV0tag.size(); iTempl++) {
600 fNsigmaTOFProtonV0tagFitter[iPt]->GetResult(iTempl, frac, err);
601 hNsigmaTOFProtonDataV0tag_Fit[iPt][templUsedTOFProtonMCV0tag[iTempl]] = (TH1F*)fNsigmaTOFProtonV0tagFitter[iPt]->GetMCPrediction(iTempl);
602 hNsigmaTOFProtonDataV0tag_Fit[iPt][templUsedTOFProtonMCV0tag[iTempl]]->Scale(frac/hNsigmaTOFProtonDataV0tag_Fit[iPt][templUsedTOFProtonMCV0tag[iTempl]]->Integral()*hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->Integral());
603 hNsigmaTOFProtonDataV0tag_Fit[iPt][templUsedTOFProtonMCV0tag[iTempl]]->SetFillColor(kWhite);
604 hNsigmaTOFProtonDataV0tag_Fit[iPt][templUsedTOFProtonMCV0tag[iTempl]]->SetFillStyle(0);
608 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll] = (TH1F*)hNsigmaTOFProtonDataV0tag[iPt]->Clone();
609 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetLineColor(kRed);
610 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetFillStyle(0);
611 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kAll]->SetFillColor(kWhite);
612 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kProton] = (TH1F*)hNsigmaTOFProtonDataV0tag[iPt]->Clone();
613 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kProton]->SetFillColor(kWhite);
614 hNsigmaTOFProtonDataV0tag_Fit[iPt][
kProton]->SetFillStyle(0);
616 cFitResultTOFProtonFromV0tag->cd(iPt+1)->SetLogy();
617 hNsigmaTOFProtonDataV0tag[iPt]->DrawCopy(
"E");
619 vector<int>::iterator it = find(templUsedTOFProtonMCV0tag.begin(),templUsedTOFProtonMCV0tag.end(),iPart);
620 if(it!=templUsedTOFProtonMCV0tag.end()) {
621 hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart]->DrawCopy(
"hist same");
624 hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart]=
nullptr;
627 legTOFFitter->Draw(
"same");
630 cTOFFractionData->cd(1)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF K TPC tag;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
631 cTOFFractionData->cd(1)->SetLogy();
632 cTOFFractionData->cd(1)->SetLogx();
633 for(
int iPart=0; iPart<=
kProton; iPart++) {
634 hFractionTOFKaonDataTPCtag[iPart]->DrawCopy(
"same");
636 cTOFFractionData->cd(2)->DrawFrame(
ptlims[0],1.e-5,
ptlims[nPtbins],10.,
"TOF p from #Lambda;#it{p}_{T} (GeV/#it{c});Purity / Contamination");
637 cTOFFractionData->cd(2)->SetLogy();
638 cTOFFractionData->cd(2)->SetLogx();
639 for(
int iPart=0; iPart<=
kProton; iPart++) {
640 hFractionTOFProtonDataV0tag[iPart]->DrawCopy(
"same");
642 TLegend* legFracData =
new TLegend(0.3,0.3,0.8,0.8);
643 legFracData->SetTextSize(0.05);
645 legFracData->AddEntry(hFractionTOFProtonDataV0tag[iPart],pdgnames[iPart].
Data(),
"lpe");
647 cTOFFractionData->cd(3);
648 legFracData->Draw(
"same");
653 for(
int iPt=0; iPt<nPtbins; iPt++) {
655 hNsigmaTPCPionMCV0tag[iPt][iPart]->Scale(1./hNsigmaTPCPionMCV0tag[iPt][
kAll]->Integral());
656 hNsigmaTPCKaonMCKinktag[iPt][iPart]->Scale(1./hNsigmaTPCKaonMCKinktag[iPt][
kAll]->Integral());
657 hNsigmaTPCKaonMCTOFtag[iPt][iPart]->Scale(1./hNsigmaTPCKaonMCTOFtag[iPt][
kAll]->Integral());
658 hNsigmaTPCProtonMCV0tag[iPt][iPart]->Scale(1./hNsigmaTPCProtonMCV0tag[iPt][
kAll]->Integral());
659 hNsigmaTOFPionMCV0tag[iPt][iPart]->Scale(1./hNsigmaTOFPionMCV0tag[iPt][
kAll]->Integral());
660 hNsigmaTOFKaonMCKinktag[iPt][iPart]->Scale(1./hNsigmaTOFKaonMCKinktag[iPt][
kAll]->Integral());
661 hNsigmaTOFKaonMCTPCtag[iPt][iPart]->Scale(1./hNsigmaTOFKaonMCTPCtag[iPt][
kAll]->Integral());
662 hNsigmaTOFProtonMCV0tag[iPt][iPart]->Scale(1./hNsigmaTOFProtonMCV0tag[iPt][
kAll]->Integral());
664 if(iPart==
kAll || hFractionTOFKaonDataTPCtag[iPart]->GetBinContent(iPt+1)>0) hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart]->Scale(1./hNsigmaTOFKaonDataTPCtag[iPt]->Integral());
665 if(iPart==
kAll || hFractionTOFProtonDataV0tag[iPart]->GetBinContent(iPt+1)>0) hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart]->Scale(1./hNsigmaTOFProtonDataV0tag[iPt]->Integral());
668 hNsigmaTPCPionDataV0tag[iPt]->Scale(1./hNsigmaTPCPionDataV0tag[iPt]->Integral());
669 hNsigmaTPCKaonDataKinktag[iPt]->Scale(1./hNsigmaTPCKaonDataKinktag[iPt]->Integral());
670 hNsigmaTPCKaonDataTOFtag[iPt]->Scale(1./hNsigmaTPCKaonDataTOFtag[iPt]->Integral());
671 hNsigmaTPCProtonDataV0tag[iPt]->Scale(1./hNsigmaTPCProtonDataV0tag[iPt]->Integral());
672 hNsigmaTOFPionDataV0tag[iPt]->Scale(1./hNsigmaTOFPionDataV0tag[iPt]->Integral());
673 hNsigmaTOFKaonDataKinktag[iPt]->Scale(1./hNsigmaTOFKaonDataKinktag[iPt]->Integral());
674 hNsigmaTOFKaonDataTPCtag[iPt]->Scale(1./hNsigmaTOFKaonDataTPCtag[iPt]->Integral());
675 hNsigmaTOFProtonDataV0tag[iPt]->Scale(1./hNsigmaTOFProtonDataV0tag[iPt]->Integral());
681 TCanvas* cPionMCV0tagTPC =
new TCanvas(
"cPionMCV0tagTPC",
"cPionMCV0tagTPC",1920,1080);
683 TCanvas* cKaonMCKinkstagTPC =
new TCanvas(
"cKaonMCKinkstagTPC",
"cKaonMCKinkstagTPC",1920,1080);
685 TCanvas* cKaonMCTOFtagTPC =
new TCanvas(
"cKaonMCTOFtagTPC",
"cKaonMCTOFtagTPC",1920,1080);
687 TCanvas* cProtonMCV0tagTPC =
new TCanvas(
"cProtonMCV0tagTPC",
"cProtonMCV0tagTPC",1920,1080);
689 TCanvas* cPionMCV0tagTOF =
new TCanvas(
"cPionMCV0tagTOF",
"cPionMCV0tagTOF",1920,1080);
691 TCanvas* cKaonMCKinkstagTOF =
new TCanvas(
"cKaonMCKinkstagTOF",
"cKaonMCKinkstagTOF",1920,1080);
693 TCanvas* cKaonMCTPCtagTOF =
new TCanvas(
"cKaonMCTPCtagTOF",
"cKaonMCTPCtagTOF",1920,1080);
695 TCanvas* cProtonMCV0tagTOF =
new TCanvas(
"cProtonMCV0tagTOF",
"cProtonMCV0tagTOF",1920,1080);
698 TCanvas* cPionDataV0tagTPC =
new TCanvas(
"cPionDataV0tagTPC",
"cPionDataV0tagTPC",1920,1080);
700 TCanvas* cKaonDataKinkstagTPC =
new TCanvas(
"cKaonDataKinkstagTPC",
"cKaonDataKinkstagTPC",1920,1080);
702 TCanvas* cKaonDataTOFtagTPC =
new TCanvas(
"cKaonDataTOFtagTPC",
"cKaonDataTOFtagTPC",1920,1080);
704 TCanvas* cProtonDataV0tagTPC =
new TCanvas(
"cProtonDataV0tagTPC",
"cProtonDataV0tagTPC",1920,1080);
706 TCanvas* cPionDataV0tagTOF =
new TCanvas(
"cPionDataV0tagTOF",
"cPionDataV0tagTOF",1920,1080);
708 TCanvas* cKaonDataKinkstagTOF =
new TCanvas(
"cKaonDataKinkstagTOF",
"cKaonDataKinkstagTOF",1920,1080);
710 TCanvas* cKaonDataTPCtagTOF =
new TCanvas(
"cKaonDataTPCtagTOF",
"cKaonDataTPCtagTOF",1920,1080);
712 TCanvas* cProtonDataV0tagTOF =
new TCanvas(
"cProtonDataV0tagTOF",
"cProtonDataV0tagTOF",1920,1080);
716 TF1 *fNsigmaTPCPionMCV0tag[nPtbins][
nPDGcodes-1], *fNsigmaTPCKaonMCKinktag[nPtbins][
nPDGcodes-1], *fNsigmaTPCKaonMCTOFtag[nPtbins][
nPDGcodes-1], *fNsigmaTPCProtonMCV0tag[nPtbins][
nPDGcodes-1];
718 TF1* fNsigmaTPCPionDataV0tag[nPtbins][
nPDGcodes], *fNsigmaTPCKaonDataKinktag[nPtbins][
nPDGcodes], *fNsigmaTPCKaonDataTOFtag[nPtbins][
nPDGcodes], *fNsigmaTPCProtonDataV0tag[nPtbins][
nPDGcodes];
721 TH1F *hNsigmaTOFPionDataV0tag_sub[nPtbins], *hNsigmaTOFKaonDataKinktag_sub[nPtbins], *hNsigmaTOFKaonDataTPCtag_sub[nPtbins], *hNsigmaTOFProtonDataV0tag_sub[nPtbins];
723 TLegend* legMCdist =
new TLegend(0.14,0.62,0.44,0.86);
724 legMCdist->SetTextSize(0.04);
725 legMCdist->AddEntry(hNsigmaTPCPionMCV0tag[0][
kAll],
"MC All",
"p");
727 legMCdist->AddEntry(hNsigmaTPCPionMCV0tag[0][iPart],Form(
"MC %s",pdgnames[iPart].
Data()),
"f");
730 TLegend* legTPCFitter =
new TLegend(0.14,0.62,0.48,0.86);
731 legTPCFitter->SetTextSize(0.04);
732 legTPCFitter->AddEntry(hNsigmaTPCPionDataV0tag[0],
"Data",
"p");
734 TLegend* legTOFPionDataV0tag =
new TLegend(0.14,0.7,0.48,0.8);
735 legTOFPionDataV0tag->SetTextSize(0.05);
737 TLegend* legTOFKaonDataKinkstag =
new TLegend(0.14,0.7,0.48,0.8);
738 legTOFKaonDataKinkstag->SetTextSize(0.05);
740 TLegend* legTOFKaonDataTPCtag =
new TLegend(0.14,0.7,0.48,0.8);
741 legTOFKaonDataTPCtag->SetTextSize(0.05);
743 TLegend* legTOFProtonDataV0tag =
new TLegend(0.14,0.7,0.48,0.8);
744 legTOFProtonDataV0tag->SetTextSize(0.05);
746 for(
int iPt=0; iPt<nPtbins; iPt++) {
749 fNsigmaTPCPionMCV0tag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCPionMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
750 fNsigmaTPCKaonMCKinktag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCKaonMCKinktag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
751 fNsigmaTPCKaonMCTOFtag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCKaonMCTOFtag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
752 fNsigmaTPCProtonMCV0tag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCProtonMCV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
755 cPionMCV0tagTPC->cd(iPt+1)->SetLogy();
756 hNsigmaTPCPionMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
758 hNsigmaTPCPionMCV0tag[iPt][iPart]->DrawCopy(
"hist same");
759 if(iPart==
kPion || hFractionTPCPionMCV0tag[iPart]->GetBinContent(iPt+1)>1.e-5) hNsigmaTPCPionMCV0tag[iPt][iPart]->Fit(fNsigmaTPCPionMCV0tag[iPt][iPart],
"L0R");
760 else fNsigmaTPCPionMCV0tag[iPt][iPart]->SetParameter(0,0);
762 hNsigmaTPCPionMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
763 legMCdist->Draw(
"same");
764 cKaonMCKinkstagTPC->cd(iPt+1)->SetLogy();
765 hNsigmaTPCKaonMCKinktag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
767 hNsigmaTPCKaonMCKinktag[iPt][iPart]->DrawCopy(
"hist same");
768 if(iPart==
kKaon || hFractionTPCKaonMCKinktag[iPart]->GetBinContent(iPt+1)>1.e-5) hNsigmaTPCKaonMCKinktag[iPt][iPart]->Fit(fNsigmaTPCKaonMCKinktag[iPt][iPart],
"L0R");
769 else fNsigmaTPCKaonMCKinktag[iPt][iPart]->SetParameter(0,0);
771 hNsigmaTPCKaonMCKinktag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
772 legMCdist->Draw(
"same");
773 cKaonMCTOFtagTPC->cd(iPt+1)->SetLogy();
774 hNsigmaTPCKaonMCTOFtag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
776 hNsigmaTPCKaonMCTOFtag[iPt][iPart]->DrawCopy(
"hist same");
777 if(iPart==
kKaon || hFractionTPCKaonMCTOFtag[iPart]->GetBinContent(iPt+1)>1.e-5) hNsigmaTPCKaonMCTOFtag[iPt][iPart]->Fit(fNsigmaTPCKaonMCTOFtag[iPt][iPart],
"L0R");
778 else fNsigmaTPCKaonMCTOFtag[iPt][iPart]->SetParameter(0,0);
780 hNsigmaTPCKaonMCTOFtag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
781 legMCdist->Draw(
"same");
782 cProtonMCV0tagTPC->cd(iPt+1)->SetLogy();
783 hNsigmaTPCProtonMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
785 hNsigmaTPCProtonMCV0tag[iPt][iPart]->DrawCopy(
"hist same");
786 if(iPart==
kProton || hFractionTPCProtonMCV0tag[iPart]->GetBinContent(iPt+1)>1.e-5) hNsigmaTPCProtonMCV0tag[iPt][iPart]->Fit(fNsigmaTPCProtonMCV0tag[iPt][iPart],
"L0R");
787 else fNsigmaTPCProtonMCV0tag[iPt][iPart]->SetParameter(0,0);
789 hNsigmaTPCProtonMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
790 legMCdist->Draw(
"same");
792 cPionMCV0tagTOF->cd(iPt+1)->SetLogy();
793 hNsigmaTOFPionMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
794 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hNsigmaTOFPionMCV0tag[iPt][iPart]->DrawCopy(
"hist same");
795 hNsigmaTOFPionMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
796 legMCdist->Draw(
"same");
797 cKaonMCKinkstagTOF->cd(iPt+1)->SetLogy();
798 hNsigmaTOFKaonMCKinktag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
799 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hNsigmaTOFKaonMCKinktag[iPt][iPart]->DrawCopy(
"hist same");
800 hNsigmaTOFKaonMCKinktag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
801 legMCdist->Draw(
"same");
802 cKaonMCTPCtagTOF->cd(iPt+1)->SetLogy();
803 hNsigmaTOFKaonMCTPCtag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
804 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hNsigmaTOFKaonMCTPCtag[iPt][iPart]->DrawCopy(
"hist same");
805 hNsigmaTOFKaonMCTPCtag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
806 legMCdist->Draw(
"same");
807 cProtonMCV0tagTOF->cd(iPt+1)->SetLogy();
808 hNsigmaTOFProtonMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"E");
809 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) hNsigmaTOFProtonMCV0tag[iPt][iPart]->DrawCopy(
"hist same");
810 hNsigmaTOFProtonMCV0tag[iPt][
nPDGcodes-1]->DrawCopy(
"Esame");
811 legMCdist->Draw(
"same");
821 for(
int iPar=0; iPar<3; iPar++) {
822 fNsigmaTPCPionDataV0tag[iPt][
kAll]->SetParameter(iPart*3+iPar,fNsigmaTPCPionMCV0tag[iPt][iPart]->GetParameter(iPar));
823 fNsigmaTPCKaonDataKinktag[iPt][
kAll]->SetParameter(iPart*3+iPar,fNsigmaTPCKaonMCKinktag[iPt][iPart]->GetParameter(iPar));
824 fNsigmaTPCKaonDataTOFtag[iPt][
kAll]->SetParameter(iPart*3+iPar,fNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetParameter(iPar));
825 fNsigmaTPCProtonDataV0tag[iPt][
kAll]->SetParameter(iPart*3+iPar,fNsigmaTPCProtonMCV0tag[iPt][iPart]->GetParameter(iPar));
827 if(iPart*3+iPar!=
kPion*3+1) {
828 fNsigmaTPCPionDataV0tag[iPt][
kAll]->SetParLimits(iPart*3+iPar,fNsigmaTPCPionMCV0tag[iPt][iPart]->GetParameter(iPar)-TMath::Abs(fNsigmaTPCPionMCV0tag[iPt][iPart]->GetParameter(iPar))*toll,fNsigmaTPCPionMCV0tag[iPt][iPart]->GetParameter(iPar)+TMath::Abs(fNsigmaTPCPionMCV0tag[iPt][iPart]->GetParameter(iPar))*toll);
830 if(iPart*3+iPar!=
kKaon*3+1) {
831 fNsigmaTPCKaonDataKinktag[iPt][
kAll]->SetParLimits(iPart*3+iPar,fNsigmaTPCKaonMCKinktag[iPt][iPart]->GetParameter(iPar)-TMath::Abs(fNsigmaTPCKaonMCKinktag[iPt][iPart]->GetParameter(iPar))*toll,fNsigmaTPCKaonMCKinktag[iPt][iPart]->GetParameter(iPar)+TMath::Abs(fNsigmaTPCKaonMCKinktag[iPt][iPart]->GetParameter(iPar))*toll);
833 fNsigmaTPCKaonDataTOFtag[iPt][
kAll]->SetParLimits(iPart*3+iPar,fNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetParameter(iPar)-TMath::Abs(fNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetParameter(iPar))*toll,fNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetParameter(iPar)+TMath::Abs(fNsigmaTPCKaonMCTOFtag[iPt][iPart]->GetParameter(iPar))*toll);
835 if(iPart*3+iPar!=
kProton*3+1) {
836 fNsigmaTPCProtonDataV0tag[iPt][
kAll]->SetParLimits(iPart*3+iPar,fNsigmaTPCProtonMCV0tag[iPt][iPart]->GetParameter(iPar)-TMath::Abs(fNsigmaTPCProtonMCV0tag[iPt][iPart]->GetParameter(iPar))*toll,fNsigmaTPCProtonMCV0tag[iPt][iPart]->GetParameter(iPar)+TMath::Abs(fNsigmaTPCProtonMCV0tag[iPt][iPart]->GetParameter(iPar))*toll);
841 hNsigmaTPCPionDataV0tag[iPt]->Fit(fNsigmaTPCPionDataV0tag[iPt][kAll],
"L0R");
842 hNsigmaTPCKaonDataKinktag[iPt]->Fit(fNsigmaTPCKaonDataKinktag[iPt][kAll],
"L0R");
843 hNsigmaTPCKaonDataTOFtag[iPt]->Fit(fNsigmaTPCKaonDataTOFtag[iPt][kAll],
"L0R");
844 hNsigmaTPCProtonDataV0tag[iPt]->Fit(fNsigmaTPCProtonDataV0tag[iPt][kAll],
"L0R");
847 fNsigmaTPCPionDataV0tag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCPionDataV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
848 fNsigmaTPCKaonDataKinktag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCKaonDataKinktag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
849 fNsigmaTPCKaonDataTOFtag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCKaonDataTOFtag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
850 fNsigmaTPCProtonDataV0tag[iPt][iPart] =
new TF1(Form(
"fNsigmaTPCProtonDataV0tag_%s_p%0.f_%0.f",pdgnames[iPart].
Data(),
ptlims[iPt]*10,
ptlims[iPt+1]*10),
"gaus",-50,50);
852 for(
int iPar=0; iPar<3; iPar++) {
853 fNsigmaTPCPionDataV0tag[iPt][iPart]->SetParameter(iPar,fNsigmaTPCPionDataV0tag[iPt][kAll]->GetParameter(iPart*3+iPar));
854 fNsigmaTPCKaonDataKinktag[iPt][iPart]->SetParameter(iPar,fNsigmaTPCKaonDataKinktag[iPt][kAll]->GetParameter(iPart*3+iPar));
855 fNsigmaTPCKaonDataTOFtag[iPt][iPart]->SetParameter(iPar,fNsigmaTPCKaonDataTOFtag[iPt][kAll]->GetParameter(iPart*3+iPar));
856 fNsigmaTPCProtonDataV0tag[iPt][iPart]->SetParameter(iPar,fNsigmaTPCProtonDataV0tag[iPt][kAll]->GetParameter(iPart*3+iPar));
858 fNsigmaTPCPionDataV0tag[iPt][iPart]->SetLineColor(
pdgcolors[iPart]);
859 fNsigmaTPCKaonDataKinktag[iPt][iPart]->SetLineColor(
pdgcolors[iPart]);
860 fNsigmaTPCKaonDataTOFtag[iPt][iPart]->SetLineColor(
pdgcolors[iPart]);
861 fNsigmaTPCProtonDataV0tag[iPt][iPart]->SetLineColor(
pdgcolors[iPart]);
862 if(iPt==0) legTPCFitter->AddEntry(fNsigmaTPCProtonDataV0tag[iPt][iPart],Form(
"Func %s",pdgnames[iPart].
Data()),
"l");
865 cPionDataV0tagTPC->cd(iPt+1)->SetLogy();
866 hNsigmaTPCPionDataV0tag[iPt]->DrawCopy(
"E");
867 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) fNsigmaTPCPionDataV0tag[iPt][iPart]->
Draw(
"same");
868 legTPCFitter->Draw(
"same");
869 cKaonDataKinkstagTPC->cd(iPt+1)->SetLogy();
870 hNsigmaTPCKaonDataKinktag[iPt]->DrawCopy(
"E");
871 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) fNsigmaTPCKaonDataKinktag[iPt][iPart]->
Draw(
"same");
872 legTPCFitter->Draw(
"same");
873 cKaonDataTOFtagTPC->cd(iPt+1)->SetLogy();
874 hNsigmaTPCKaonDataTOFtag[iPt]->DrawCopy(
"E");
875 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) fNsigmaTPCKaonDataTOFtag[iPt][iPart]->
Draw(
"same");
876 legTPCFitter->Draw(
"same");
877 cProtonDataV0tagTPC->cd(iPt+1)->SetLogy();
878 hNsigmaTPCProtonDataV0tag[iPt]->DrawCopy(
"E");
879 for(
int iPart=
kElectron; iPart<=
kProton; iPart++) fNsigmaTPCProtonDataV0tag[iPt][iPart]->
Draw(
"same");
880 legTPCFitter->Draw(
"same");
883 TString name = hNsigmaTOFPionDataV0tag[iPt]->GetName();
884 name.ReplaceAll(
"hNsigmaTOFPionDataV0tag",
"hNsigmaTOFPionDataV0tag_sub");
885 hNsigmaTOFPionDataV0tag_sub[iPt] = (TH1F*)hNsigmaTOFPionDataV0tag[iPt]->Clone(name.Data());
887 name = hNsigmaTOFKaonDataKinktag[iPt]->GetName();
888 name.ReplaceAll(
"hNsigmaTOFKaonDataKinktag",
"hNsigmaTOFKaonDataKinktag_sub");
889 hNsigmaTOFKaonDataKinktag_sub[iPt] = (TH1F*)hNsigmaTOFKaonDataKinktag[iPt]->Clone(name.Data());
891 name = hNsigmaTOFKaonDataTPCtag[iPt]->GetName();
892 name.ReplaceAll(
"hNsigmaTOFKaonDataTPCtag",
"hNsigmaTOFKaonDataTPCtag_sub");
893 hNsigmaTOFKaonDataTPCtag_sub[iPt] = (TH1F*)hNsigmaTOFKaonDataTPCtag[iPt]->Clone(name.Data());
895 name = hNsigmaTOFProtonDataV0tag[iPt]->GetName();
896 name.ReplaceAll(
"hNsigmaTOFProtonDataV0tag",
"hNsigmaTOFProtonDataV0tag_sub");
897 hNsigmaTOFProtonDataV0tag_sub[iPt] = (TH1F*)hNsigmaTOFProtonDataV0tag[iPt]->Clone(name.Data());
900 if(iPart!=
kPion) hNsigmaTOFPionDataV0tag_sub[iPt]->Add(hNsigmaTOFPionMCV0tag[iPt][iPart],-1.);
902 hNsigmaTOFKaonDataKinktag_sub[iPt]->Add(hNsigmaTOFKaonMCKinktag[iPt][iPart],-1.);
903 if(hFractionTOFKaonDataTPCtag[iPart]->GetBinContent(iPt+1)>0) {
904 hNsigmaTOFKaonDataTPCtag_sub[iPt]->Add(hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart],-1.);
907 hNsigmaTOFKaonDataTPCtag_sub[iPt]->Add(hNsigmaTOFKaonMCTPCtag[iPt][iPart],-1.);
911 if(hFractionTOFProtonDataV0tag[iPart]->GetBinContent(iPt+1)>0) {
912 hNsigmaTOFProtonDataV0tag_sub[iPt]->Add(hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart],-1.);
915 hNsigmaTOFProtonDataV0tag_sub[iPt]->Add(hNsigmaTOFProtonMCV0tag[iPt][iPart],-1.);
925 legTOFPionDataV0tag->AddEntry(hNsigmaTOFPionDataV0tag_sub[iPt],
"Data",
"p");
926 legTOFPionDataV0tag->AddEntry(hNsigmaTOFPionMCV0tag[iPt][
kPion],
"MC Pion",
"p");
927 legTOFKaonDataKinkstag->AddEntry(hNsigmaTOFKaonDataKinktag_sub[iPt],
"Data",
"p");
928 legTOFKaonDataKinkstag->AddEntry(hNsigmaTOFKaonMCKinktag[iPt][
kKaon],
"MC Kaon",
"p");
929 legTOFKaonDataTPCtag->AddEntry(hNsigmaTOFKaonDataTPCtag_sub[iPt],
"Data",
"p");
930 legTOFKaonDataTPCtag->AddEntry(hNsigmaTOFKaonMCTPCtag[iPt][kKaon],
"MC Kaon",
"p");
931 legTOFProtonDataV0tag->AddEntry(hNsigmaTOFProtonDataV0tag_sub[iPt],
"Data",
"p");
932 legTOFProtonDataV0tag->AddEntry(hNsigmaTOFKaonMCTPCtag[iPt][
kProton],
"MC Proton",
"p");
935 cPionDataV0tagTOF->cd(iPt+1)->SetLogy();
936 hNsigmaTOFPionDataV0tag_sub[iPt]->DrawCopy(
"E");
937 hNsigmaTOFPionMCV0tag[iPt][
kPion]->DrawCopy(
"hist same");
938 legTOFPionDataV0tag->Draw(
"same");
939 cKaonDataKinkstagTOF->cd(iPt+1)->SetLogy();
940 hNsigmaTOFKaonDataKinktag_sub[iPt]->DrawCopy(
"E");
941 hNsigmaTOFKaonMCKinktag[iPt][
kKaon]->DrawCopy(
"hist same");
942 legTOFKaonDataKinkstag->Draw(
"same");
943 cKaonDataTPCtagTOF->cd(iPt+1)->SetLogy();
944 hNsigmaTOFKaonDataTPCtag_sub[iPt]->DrawCopy(
"E");
945 hNsigmaTOFKaonMCTPCtag[iPt][
kKaon]->DrawCopy(
"hist same");
946 legTOFKaonDataTPCtag->Draw(
"same");
947 cProtonDataV0tagTOF->cd(iPt+1)->SetLogy();
948 hNsigmaTOFProtonDataV0tag_sub[iPt]->DrawCopy(
"E");
949 hNsigmaTOFProtonMCV0tag[iPt][
kProton]->DrawCopy(
"hist same");
950 legTOFProtonDataV0tag->Draw(
"same");
957 int nSigma[nEff] = {3,2,1};
958 int markersMC[nEff] = {kFullCircle,kFullSquare,kFullDiamond};
959 int markersData[nEff] = {kOpenCircle,kOpenSquare,kOpenDiamond};
960 TH1F *hEffPionTPCMCtrue[nEff], *hEffPionTOFMCtrue[nEff], *hEffKaonTPCMCtrue[nEff], *hEffKaonTOFMCtrue[nEff],*hEffProtonTPCMCtrue[nEff], *hEffProtonTOFMCtrue[nEff];
961 TH1F *hEffPionTPCDataV0tag[nEff], *hEffPionTOFDataV0tag[nEff], *hEffKaonTPCDataKinktag[nEff], *hEffKaonTOFDataKinktag[nEff], *hEffKaonTPCDataTOFtag[nEff], *hEffKaonTOFDataTPCtag[nEff],*hEffProtonTPCDataV0tag[nEff], *hEffProtonTOFDataV0tag[nEff];
962 TH1F *hRatioEffPionTPCDataV0tag[nEff], *hRatioEffPionTOFDataV0tag[nEff], *hRatioEffKaonTPCDataKinktag[nEff], *hRatioEffKaonTOFDataKinktag[nEff], *hRatioEffKaonTPCDataTOFtag[nEff], *hRatioEffKaonTOFDataTPCtag[nEff],*hRatioEffProtonTPCDataV0tag[nEff], *hRatioEffProtonTOFDataV0tag[nEff];
963 TLegend* legEffPion =
new TLegend(0.18,0.15,0.925,0.38);
964 legEffPion->SetTextSize(0.045);
965 legEffPion->SetNColumns(2);
966 legEffPion->AddEntry(
"",
"MC",
"");
967 legEffPion->AddEntry(
"",
"V0 tag",
"");
968 TLegend* legEffKaonTPC =
new TLegend(0.18,0.15,0.925,0.38);
969 legEffKaonTPC->SetTextSize(0.045);
970 legEffKaonTPC->SetNColumns(3);
971 legEffKaonTPC->AddEntry(
"",
"MC",
"");
972 legEffKaonTPC->AddEntry(
"",
"TOF tag",
"");
973 legEffKaonTPC->AddEntry(
"",
"kink tag",
"");
974 TLegend* legEffKaonTOF =
new TLegend(0.18,0.15,0.925,0.38);
975 legEffKaonTOF->SetTextSize(0.045);
976 legEffKaonTOF->SetNColumns(2);
977 legEffKaonTOF->AddEntry(
"",
"MC",
"");
978 legEffKaonTOF->AddEntry(
"",
"TPC tag",
"");
979 TLegend* legEffProton =
new TLegend(0.18,0.15,0.925,0.38);
980 legEffProton->SetTextSize(0.045);
981 legEffProton->SetNColumns(2);
982 legEffProton->AddEntry(
"",
"MC",
"");
983 legEffProton->AddEntry(
"",
"V0 tag",
"");
985 for(
int iEff=0; iEff<nEff; iEff++) {
986 hEffPionTPCMCtrue[iEff] =
new TH1F(Form(
"hEffPionTPCMCtrue_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC #pi efficiency",nPtbins,
ptlims);
987 hEffPionTOFMCtrue[iEff] =
new TH1F(Form(
"hEffPionTOFMCtrue_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF #pi efficiency",nPtbins,
ptlims);
989 hEffKaonTPCMCtrue[iEff] =
new TH1F(Form(
"hEffKaonTPCMCtrue_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC K efficiency",nPtbins,
ptlims);
990 hEffKaonTOFMCtrue[iEff] =
new TH1F(Form(
"hEffKaonTOFMCtrue_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF K efficiency",nPtbins,
ptlims);
992 hEffProtonTPCMCtrue[iEff] =
new TH1F(Form(
"hEffProtonTPCMCtrue_%dsigma;",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC p efficiency",nPtbins,
ptlims);
993 hEffProtonTOFMCtrue[iEff] =
new TH1F(Form(
"hEffProtonTOFMCtrue_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF p efficiency",nPtbins,
ptlims);
995 hEffPionTPCDataV0tag[iEff] =
new TH1F(Form(
"hEffPionTPCDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC #pi efficiency",nPtbins,
ptlims);
996 hEffPionTOFDataV0tag[iEff] =
new TH1F(Form(
"hEffPionTOFDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF #pi efficiency",nPtbins,
ptlims);
998 hEffKaonTPCDataKinktag[iEff] =
new TH1F(Form(
"hEffKaonTPCDataKinktag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC K efficiency",nPtbins,
ptlims);
999 hEffKaonTOFDataKinktag[iEff] =
new TH1F(Form(
"hEffKaonTOFDataKinktag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF K efficiency",nPtbins,
ptlims);
1001 hEffKaonTPCDataTOFtag[iEff] =
new TH1F(Form(
"hEffKaonTPCDataTOFtag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC K efficiency",nPtbins,
ptlims);
1002 hEffKaonTOFDataTPCtag[iEff] =
new TH1F(Form(
"hEffKaonTOFDataTPCtag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF K efficiency",nPtbins,
ptlims);
1004 hEffProtonTPCDataV0tag[iEff] =
new TH1F(Form(
"hEffProtonTPCDataV0tag_%dsigma;",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC p efficiency",nPtbins,
ptlims);
1005 hEffProtonTOFDataV0tag[iEff] =
new TH1F(Form(
"hEffProtonTOFDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF p efficiency",nPtbins,
ptlims);
1007 hRatioEffPionTPCDataV0tag[iEff] =
new TH1F(Form(
"hRatioEffPionTPCDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC #pi efficiency",nPtbins,
ptlims);
1008 hRatioEffPionTOFDataV0tag[iEff] =
new TH1F(Form(
"hRatioEffPionTOFDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF #pi efficiency",nPtbins,
ptlims);
1010 hRatioEffKaonTPCDataKinktag[iEff] =
new TH1F(Form(
"hRatioEffKaonTPCDataKinktag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC K efficiency",nPtbins,
ptlims);
1011 hRatioEffKaonTOFDataKinktag[iEff] =
new TH1F(Form(
"hRatioEffKaonTOFDataKinktag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF K efficiency",nPtbins,
ptlims);
1013 hRatioEffKaonTPCDataTOFtag[iEff] =
new TH1F(Form(
"hRatioEffKaonTPCDataTOFtag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC K efficiency",nPtbins,
ptlims);
1014 hRatioEffKaonTOFDataTPCtag[iEff] =
new TH1F(Form(
"hRatioEffKaonTOFDataTPCtag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF K efficiency",nPtbins,
ptlims);
1016 hRatioEffProtonTPCDataV0tag[iEff] =
new TH1F(Form(
"hRatioEffProtonTPCDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TPC #pi efficiency",nPtbins,
ptlims);
1017 hRatioEffProtonTOFDataV0tag[iEff] =
new TH1F(Form(
"hRatioEffProtonTOFDataV0tag_%dsigma",nSigma[iEff]),
";#it{p}_{T} (GeV/#it{c});TOF #pi efficiency",nPtbins,
ptlims);
1019 int nsigmabinlow = hNsigmaTOFPionMCTrue[0]->GetXaxis()->FindBin(-nSigma[iEff]+1.e-5);
1020 int nsigmabinhigh = hNsigmaTOFPionMCTrue[0]->GetXaxis()->FindBin(nSigma[iEff]-1.e-5);
1022 legEffPion->AddEntry(hEffPionTPCMCtrue[iEff],Form(
"|N_{#sigma}(#pi)| < %d",nSigma[iEff]),
"p");
1023 legEffPion->AddEntry(hEffPionTPCDataV0tag[iEff],Form(
"|N_{#sigma}(#pi)| < %d",nSigma[iEff]),
"p");
1024 legEffKaonTPC->AddEntry(hEffKaonTPCMCtrue[iEff],Form(
"|N_{#sigma}(K)| < %d",nSigma[iEff]),
"p");
1025 legEffKaonTPC->AddEntry(hEffKaonTPCDataTOFtag[iEff],Form(
"|N_{#sigma}(K)| < %d",nSigma[iEff]),
"p");
1026 legEffKaonTPC->AddEntry(hEffKaonTPCDataKinktag[iEff],Form(
"|N_{#sigma}(K)| < %d",nSigma[iEff]),
"p");
1027 legEffKaonTOF->AddEntry(hEffKaonTPCMCtrue[iEff],Form(
"|N_{#sigma}(K)| < %d",nSigma[iEff]),
"p");
1028 legEffKaonTOF->AddEntry(hEffKaonTPCDataTOFtag[iEff],Form(
"|N_{#sigma}(K)| < %d",nSigma[iEff]),
"p");
1029 legEffProton->AddEntry(hEffProtonTPCMCtrue[iEff],Form(
"|N_{#sigma}(p)| < %d",nSigma[iEff]),
"p");
1030 legEffProton->AddEntry(hEffProtonTOFDataV0tag[iEff],Form(
"|N_{#sigma}(p)| < %d",nSigma[iEff]),
"p");
1032 for(
int iPt=0; iPt<nPtbins; iPt++) {
1033 double eff=-1, unc=-1;
1034 ComputeEfficiency(hNsigmaTPCPionMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTPCPionMCTrue[iPt]->Integral(),eff,unc);
1035 hEffPionTPCMCtrue[iEff]->SetBinContent(iPt+1,eff);
1036 hEffPionTPCMCtrue[iEff]->SetBinError(iPt+1,unc);
1038 ComputeEfficiency(hNsigmaTOFPionMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTOFPionMCTrue[iPt]->Integral(),eff,unc);
1039 hEffPionTOFMCtrue[iEff]->SetBinContent(iPt+1,eff);
1040 hEffPionTOFMCtrue[iEff]->SetBinError(iPt+1,unc);
1042 ComputeEfficiency(hNsigmaTPCKaonMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTPCKaonMCTrue[iPt]->Integral(),eff,unc);
1043 hEffKaonTPCMCtrue[iEff]->SetBinContent(iPt+1,eff);
1044 hEffKaonTPCMCtrue[iEff]->SetBinError(iPt+1,unc);
1046 ComputeEfficiency(hNsigmaTOFKaonMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTOFKaonMCTrue[iPt]->Integral(),eff,unc);
1047 hEffKaonTOFMCtrue[iEff]->SetBinContent(iPt+1,eff);
1048 hEffKaonTOFMCtrue[iEff]->SetBinError(iPt+1,unc);
1050 ComputeEfficiency(hNsigmaTPCProtonMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTPCProtonMCTrue[iPt]->Integral(),eff,unc);
1051 hEffProtonTPCMCtrue[iEff]->SetBinContent(iPt+1,eff);
1052 hEffProtonTPCMCtrue[iEff]->SetBinError(iPt+1,unc);
1054 ComputeEfficiency(hNsigmaTOFProtonMCTrue[iPt]->Integral(nsigmabinlow,nsigmabinhigh),hNsigmaTOFProtonMCTrue[iPt]->Integral(),eff,unc);
1055 hEffProtonTOFMCtrue[iEff]->SetBinContent(iPt+1,eff);
1056 hEffProtonTOFMCtrue[iEff]->SetBinError(iPt+1,unc);
1058 ComputeEfficiency(fNsigmaTPCPionDataV0tag[iPt][
kPion]->Integral(-nSigma[iEff],nSigma[iEff])*intNsigmaTPCPionDataV0tag[iPt],fNsigmaTPCPionDataV0tag[iPt][
kPion]->Integral(-50,50)*intNsigmaTPCPionDataV0tag[iPt],eff,unc);
1059 hEffPionTPCDataV0tag[iEff]->SetBinContent(iPt+1,eff);
1060 hEffPionTPCDataV0tag[iEff]->SetBinError(iPt+1,unc);
1062 ComputeEfficiency(fNsigmaTPCKaonDataKinktag[iPt][
kKaon]->Integral(-nSigma[iEff],nSigma[iEff])*intNsigmaTPCKaonDataKinktag[iPt],fNsigmaTPCKaonDataKinktag[iPt][
kKaon]->Integral(-50,50)*intNsigmaTPCKaonDataKinktag[iPt],eff,unc);
1063 hEffKaonTPCDataKinktag[iEff]->SetBinContent(iPt+1,eff);
1064 hEffKaonTPCDataKinktag[iEff]->SetBinError(iPt+1,unc);
1066 ComputeEfficiency(fNsigmaTPCKaonDataTOFtag[iPt][
kKaon]->Integral(-nSigma[iEff],nSigma[iEff])*intNsigmaTPCKaonDataTOFtag[iPt],fNsigmaTPCKaonDataTOFtag[iPt][
kKaon]->Integral(-50,50)*intNsigmaTPCKaonDataTOFtag[iPt],eff,unc);
1067 hEffKaonTPCDataTOFtag[iEff]->SetBinContent(iPt+1,eff);
1068 hEffKaonTPCDataTOFtag[iEff]->SetBinError(iPt+1,unc);
1070 ComputeEfficiency(fNsigmaTPCProtonDataV0tag[iPt][
kProton]->Integral(-nSigma[iEff],nSigma[iEff])*intNsigmaTPCProtonDataV0tag[iPt],fNsigmaTPCProtonDataV0tag[iPt][
kProton]->Integral(-50,50)*intNsigmaTPCProtonDataV0tag[iPt],eff,unc);
1071 hEffProtonTPCDataV0tag[iEff]->SetBinContent(iPt+1,eff);
1072 hEffProtonTPCDataV0tag[iEff]->SetBinError(iPt+1,unc);
1074 ComputeEfficiency(hNsigmaTOFPionDataV0tag_sub[iPt]->Integral(nsigmabinlow,nsigmabinhigh)*intNsigmaTOFPionDataV0tag[iPt],hNsigmaTOFPionDataV0tag_sub[iPt]->Integral()*intNsigmaTOFPionDataV0tag[iPt],eff,unc);
1075 hEffPionTOFDataV0tag[iEff]->SetBinContent(iPt+1,eff);
1076 hEffPionTOFDataV0tag[iEff]->SetBinError(iPt+1,unc);
1078 ComputeEfficiency(hNsigmaTOFKaonDataTPCtag_sub[iPt]->Integral(nsigmabinlow,nsigmabinhigh)*intNsigmaTOFKaonDataTPCtag[iPt],hNsigmaTOFKaonDataTPCtag_sub[iPt]->Integral()*intNsigmaTOFKaonDataTPCtag[iPt],eff,unc);
1079 hEffKaonTOFDataTPCtag[iEff]->SetBinContent(iPt+1,eff);
1080 hEffKaonTOFDataTPCtag[iEff]->SetBinError(iPt+1,unc);
1082 ComputeEfficiency(hNsigmaTOFProtonDataV0tag_sub[iPt]->Integral(nsigmabinlow,nsigmabinhigh)*intNsigmaTOFProtonDataV0tag[iPt],hNsigmaTOFProtonDataV0tag_sub[iPt]->Integral()*intNsigmaTOFProtonDataV0tag[iPt],eff,unc);
1083 hEffProtonTOFDataV0tag[iEff]->SetBinContent(iPt+1,eff);
1084 hEffProtonTOFDataV0tag[iEff]->SetBinError(iPt+1,unc);
1087 hRatioEffPionTPCDataV0tag[iEff]->Divide(hEffPionTPCDataV0tag[iEff],hEffPionTPCMCtrue[iEff],1.,1.,
"");
1088 hRatioEffPionTOFDataV0tag[iEff]->Divide(hEffPionTOFDataV0tag[iEff],hEffPionTOFMCtrue[iEff],1.,1.,
"");
1089 hRatioEffKaonTPCDataKinktag[iEff]->Divide(hEffKaonTPCDataKinktag[iEff],hEffKaonTPCMCtrue[iEff],1.,1.,
"");
1090 hRatioEffKaonTPCDataTOFtag[iEff]->Divide(hEffKaonTPCDataTOFtag[iEff],hEffKaonTPCMCtrue[iEff],1.,1.,
"");
1091 hRatioEffKaonTOFDataTPCtag[iEff]->Divide(hEffKaonTOFDataTPCtag[iEff],hEffKaonTOFMCtrue[iEff],1.,1.,
"");
1092 hRatioEffProtonTPCDataV0tag[iEff]->Divide(hEffProtonTPCDataV0tag[iEff],hEffProtonTPCMCtrue[iEff],1.,1.,
"");
1093 hRatioEffProtonTOFDataV0tag[iEff]->Divide(hEffProtonTOFDataV0tag[iEff],hEffProtonTOFMCtrue[iEff],1.,1.,
"");
1119 TCanvas* cEffPion =
new TCanvas(
"cEffPion",
"cEffPion",800,800);
1120 TCanvas* cEffKaon =
new TCanvas(
"cEffKaon",
"cEffKaon",800,800);
1121 TCanvas* cEffProton =
new TCanvas(
"cEffProton",
"cEffProton",800,800);
1122 cEffPion->Divide(2,2);
1123 cEffPion->cd(1)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});pion TPC PID efficiency");
1124 cEffPion->cd(2)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});pion TOF PID efficiency");
1125 cEffPion->cd(3)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c}); pion data / MC TPC PID efficiency");
1126 cEffPion->cd(4)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c});pion data / MC TOF PID efficiency");
1127 cEffKaon->Divide(2,2);
1128 cEffKaon->cd(1)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});kaon TPC PID efficiency");
1129 cEffKaon->cd(2)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});kaon TOF PID efficiency");
1130 cEffKaon->cd(3)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c});kaon data / MC TPC PID efficiency");
1131 cEffKaon->cd(4)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c});kaon data / MC TOF PID efficiency");
1132 cEffProton->Divide(2,2);
1133 cEffProton->cd(1)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});proton TPC PID efficiency");
1134 cEffProton->cd(2)->DrawFrame(
ptlims[0],0.,
ptlims[nPtbins],1.,
";#it{p}_{T} (GeV/#it{c});proton TOF PID efficiency");
1135 cEffProton->cd(3)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c});proton data / MC TPC PID efficiency");
1136 cEffProton->cd(4)->DrawFrame(
ptlims[0],0.85,
ptlims[nPtbins],1.15,
";#it{p}_{T} (GeV/#it{c});proton data / MC TOF PID efficiency");
1138 for(
int iEff=0; iEff<nEff; iEff++) {
1139 cEffPion->cd(1)->SetLogx();
1140 cEffPion->cd(1)->SetTopMargin(0.035);
1141 cEffPion->cd(1)->SetBottomMargin(0.12);
1142 cEffPion->cd(1)->SetRightMargin(0.035);
1143 hEffPionTPCMCtrue[iEff]->Draw(
"same");
1144 hEffPionTPCDataV0tag[iEff]->Draw(
"same");
1145 legEffPion->Draw(
"same");
1147 cEffPion->cd(2)->SetLogx();
1148 cEffPion->cd(2)->SetTopMargin(0.035);
1149 cEffPion->cd(2)->SetBottomMargin(0.12);
1150 cEffPion->cd(2)->SetRightMargin(0.035);
1151 hEffPionTOFMCtrue[iEff]->Draw(
"same");
1152 hEffPionTOFDataV0tag[iEff]->Draw(
"same");
1153 legEffPion->Draw(
"same");
1155 cEffPion->cd(3)->SetLogx();
1156 cEffPion->cd(3)->SetTopMargin(0.035);
1157 cEffPion->cd(3)->SetBottomMargin(0.12);
1158 cEffPion->cd(3)->SetRightMargin(0.035);
1159 hRatioEffPionTPCDataV0tag[iEff]->Draw(
"same");
1161 cEffPion->cd(4)->SetLogx();
1162 cEffPion->cd(4)->SetTopMargin(0.035);
1163 cEffPion->cd(4)->SetBottomMargin(0.12);
1164 cEffPion->cd(4)->SetRightMargin(0.035);
1165 hRatioEffPionTOFDataV0tag[iEff]->Draw(
"same");
1167 cEffKaon->cd(1)->SetLogx();
1168 cEffKaon->cd(1)->SetTopMargin(0.035);
1169 cEffKaon->cd(1)->SetBottomMargin(0.12);
1170 cEffKaon->cd(1)->SetRightMargin(0.035);
1171 hEffKaonTPCMCtrue[iEff]->Draw(
"same");
1172 hEffKaonTPCDataKinktag[iEff]->Draw(
"same");
1173 hEffKaonTPCDataTOFtag[iEff]->Draw(
"same");
1174 legEffKaonTPC->Draw(
"same");
1176 cEffKaon->cd(2)->SetLogx();
1177 cEffKaon->cd(2)->SetTopMargin(0.035);
1178 cEffKaon->cd(2)->SetBottomMargin(0.12);
1179 cEffKaon->cd(2)->SetRightMargin(0.035);
1180 hEffKaonTOFMCtrue[iEff]->Draw(
"same");
1181 hEffKaonTOFDataTPCtag[iEff]->Draw(
"same");
1182 legEffKaonTOF->Draw(
"same");
1184 cEffKaon->cd(3)->SetLogx();
1185 cEffKaon->cd(3)->SetTopMargin(0.035);
1186 cEffKaon->cd(3)->SetBottomMargin(0.12);
1187 cEffKaon->cd(3)->SetRightMargin(0.035);
1188 hRatioEffKaonTPCDataKinktag[iEff]->Draw(
"same");
1189 hRatioEffKaonTPCDataTOFtag[iEff]->Draw(
"same");
1191 cEffKaon->cd(4)->SetLogx();
1192 cEffKaon->cd(4)->SetTopMargin(0.035);
1193 cEffKaon->cd(4)->SetBottomMargin(0.12);
1194 cEffKaon->cd(4)->SetRightMargin(0.035);
1195 hRatioEffKaonTOFDataTPCtag[iEff]->Draw(
"same");
1197 cEffProton->cd(1)->SetLogx();
1198 cEffProton->cd(1)->SetTopMargin(0.035);
1199 cEffProton->cd(1)->SetBottomMargin(0.12);
1200 cEffProton->cd(1)->SetRightMargin(0.035);
1201 hEffProtonTPCMCtrue[iEff]->Draw(
"same");
1202 hEffProtonTPCDataV0tag[iEff]->Draw(
"same");
1203 legEffProton->Draw(
"same");
1205 cEffProton->cd(2)->SetLogx();
1206 cEffProton->cd(2)->SetTopMargin(0.035);
1207 cEffProton->cd(2)->SetBottomMargin(0.12);
1208 cEffProton->cd(2)->SetRightMargin(0.035);
1209 hEffProtonTOFMCtrue[iEff]->Draw(
"same");
1210 hEffProtonTOFDataV0tag[iEff]->Draw(
"same");
1211 legEffProton->Draw(
"same");
1213 cEffProton->cd(3)->SetLogx();
1214 cEffProton->cd(3)->SetTopMargin(0.035);
1215 cEffProton->cd(3)->SetBottomMargin(0.12);
1216 cEffProton->cd(3)->SetRightMargin(0.035);
1217 hRatioEffProtonTPCDataV0tag[iEff]->Draw(
"same");
1219 cEffProton->cd(4)->SetLogx();
1220 cEffProton->cd(4)->SetTopMargin(0.035);
1221 cEffProton->cd(4)->SetBottomMargin(0.12);
1222 cEffProton->cd(4)->SetRightMargin(0.035);
1223 hRatioEffProtonTOFDataV0tag[iEff]->Draw(
"same");
1228 TFile outfile(
"PIDSystSingleTrack.root",
"RECREATE");
1229 for(
int iEff=0; iEff<nEff; iEff++) {
1230 hEffPionTPCMCtrue[iEff]->Write();
1231 hEffPionTOFMCtrue[iEff]->Write();
1232 hEffKaonTPCMCtrue[iEff]->Write();
1233 hEffKaonTOFMCtrue[iEff]->Write();
1234 hEffProtonTPCMCtrue[iEff]->Write();
1235 hEffProtonTOFMCtrue[iEff]->Write();
1236 hEffPionTPCDataV0tag[iEff]->Write();
1237 hEffPionTOFDataV0tag[iEff]->Write();
1238 hEffKaonTPCDataKinktag[iEff]->Write();
1239 hEffKaonTPCDataTOFtag[iEff]->Write();
1240 hEffKaonTOFDataTPCtag[iEff]->Write();
1241 hEffProtonTPCDataV0tag[iEff]->Write();
1242 hEffProtonTOFDataV0tag[iEff]->Write();
1243 hRatioEffPionTPCDataV0tag[iEff]->Write();
1244 hRatioEffPionTOFDataV0tag[iEff]->Write();
1245 hRatioEffKaonTPCDataKinktag[iEff]->Write();
1246 hRatioEffKaonTPCDataTOFtag[iEff]->Write();
1247 hRatioEffKaonTOFDataTPCtag[iEff]->Write();
1248 hRatioEffProtonTPCDataV0tag[iEff]->Write();
1249 hRatioEffProtonTOFDataV0tag[iEff]->Write();
1253 TFile outfiledist(
"NsigmaPIDdist.root",
"RECREATE");
1254 for(
int iPt=0; iPt<nPtbins; iPt++) {
1255 hNsigmaTPCPionMCTrue[iPt]->Write();
1256 hNsigmaTPCKaonMCTrue[iPt]->Write();
1257 hNsigmaTPCProtonMCTrue[iPt]->Write();
1258 hNsigmaTOFPionMCTrue[iPt]->Write();
1259 hNsigmaTOFKaonMCTrue[iPt]->Write();
1260 hNsigmaTOFProtonMCTrue[iPt]->Write();
1262 for(
int iPt=0; iPt<nPtbins; iPt++) {
1264 hNsigmaTPCPionMCV0tag[iPt][iPart]->Write();
1265 hNsigmaTPCKaonMCKinktag[iPt][iPart]->Write();
1266 hNsigmaTPCKaonMCTOFtag[iPt][iPart]->Write();
1267 hNsigmaTPCProtonMCV0tag[iPt][iPart]->Write();
1268 hNsigmaTOFPionMCV0tag[iPt][iPart]->Write();
1269 hNsigmaTOFKaonMCKinktag[iPt][iPart]->Write();
1270 hNsigmaTOFKaonMCTPCtag[iPt][iPart]->Write();
1271 hNsigmaTOFProtonMCV0tag[iPt][iPart]->Write();
1275 for(
int iPt=0; iPt<nPtbins; iPt++) {
1276 hNsigmaTPCPionDataV0tag[iPt]->Write();
1277 hNsigmaTPCKaonDataKinktag[iPt]->Write();
1278 hNsigmaTPCKaonDataTOFtag[iPt]->Write();
1279 hNsigmaTPCProtonDataV0tag[iPt]->Write();
1280 hNsigmaTOFPionDataV0tag[iPt]->Write();
1281 hNsigmaTOFKaonDataKinktag[iPt]->Write();
1282 hNsigmaTOFKaonDataTPCtag[iPt]->Write();
1283 hNsigmaTOFProtonDataV0tag[iPt]->Write();
1285 for(
int iPt=0; iPt<nPtbins; iPt++) {
1286 hNsigmaTOFPionDataV0tag_sub[iPt]->Write();
1287 hNsigmaTOFKaonDataKinktag_sub[iPt]->Write();
1288 hNsigmaTOFKaonDataTPCtag_sub[iPt]->Write();
1289 hNsigmaTOFProtonDataV0tag_sub[iPt]->Write();
1291 for(
int iPt=0; iPt<nPtbins; iPt++) {
1293 fNsigmaTPCPionMCV0tag[iPt][iPart]->Write();
1294 fNsigmaTPCKaonMCKinktag[iPt][iPart]->Write();
1295 fNsigmaTPCKaonMCTOFtag[iPt][iPart]->Write();
1296 fNsigmaTPCProtonMCV0tag[iPt][iPart]->Write();
1299 for(
int iPt=0; iPt<nPtbins; iPt++) {
1301 fNsigmaTPCPionDataV0tag[iPt][iPart]->Write();
1302 fNsigmaTPCKaonDataKinktag[iPt][iPart]->Write();
1303 fNsigmaTPCKaonDataTOFtag[iPt][iPart]->Write();
1304 fNsigmaTPCProtonDataV0tag[iPt][iPart]->Write();
1307 for(
int iPt=0; iPt<nPtbins; iPt++) {
1309 if(hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart]) hNsigmaTOFKaonDataTPCtag_Fit[iPt][iPart]->Write();
1310 if(hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart]) hNsigmaTOFProtonDataV0tag_Fit[iPt][iPart]->Write();
1314 hFractionTPCPionMCV0tag[iPart]->Write();
1315 hFractionTPCKaonMCKinktag[iPart]->Write();
1316 hFractionTPCKaonMCTOFtag[iPart]->Write();
1317 hFractionTPCProtonMCV0tag[iPart]->Write();
1318 hFractionTOFPionMCV0tag[iPart]->Write();
1319 hFractionTOFKaonMCKinktag[iPart]->Write();
1320 hFractionTOFKaonMCTPCtag[iPart]->Write();
1321 hFractionTOFProtonMCV0tag[iPart]->Write();
1324 hFractionTOFKaonDataTPCtag[iPart]->Write();
1325 hFractionTOFProtonDataV0tag[iPart]->Write();
1327 outfiledist.Close();
1330 cFractionTPCMC->SaveAs(
"ParticleFractionsTPCMC.pdf");
1331 cFractionTOFMC->SaveAs(
"ParticleFractionsTOFMC.pdf");
1332 cTOFFractionData->SaveAs(
"ParticleFractionsTOFdata.pdf");
1334 cFitResultTOFKaonFromTPCtag->SaveAs(
"TFractionFitterResultTOFKaonFromTPCtag.pdf");
1335 cFitResultTOFProtonFromV0tag->SaveAs(
"TFractionFitterResultTOFProtonFromV0tag.pdf");
1337 cPionMCV0tagTPC->SaveAs(
"PionMCV0tagTPC.pdf");
1338 cKaonMCKinkstagTPC->SaveAs(
"KaonMCKinkstagTPC.pdf");
1339 cKaonMCTOFtagTPC->SaveAs(
"KaonMCTOFtagTPC.pdf");
1340 cProtonMCV0tagTPC->SaveAs(
"ProtonMCV0tagTPC.pdf");
1341 cPionMCV0tagTOF->SaveAs(
"PionMCV0tagTOF.pdf");
1342 cKaonMCKinkstagTOF->SaveAs(
"KaonMCKinkstagTOF.pdf");
1343 cKaonMCTPCtagTOF->SaveAs(
"KaonMCTPCtagTOF.pdf");
1344 cProtonMCV0tagTOF->SaveAs(
"ProtonMCV0tagTOF.pdf");
1346 cPionDataV0tagTPC->SaveAs(
"PionDataV0tagTPC.pdf");
1347 cKaonDataKinkstagTPC->SaveAs(
"KaonDataKinkstagTPC.pdf");
1348 cKaonDataTOFtagTPC->SaveAs(
"KaonDataTOFtagTPC.pdf");
1349 cProtonDataV0tagTPC->SaveAs(
"ProtonDataV0tagTPC.pdf");
1350 cPionDataV0tagTOF->SaveAs(
"PionDataV0tagTOF.pdf");
1351 cKaonDataKinkstagTOF->SaveAs(
"KaonDataKinkstagTOF.pdf");
1352 cKaonDataTPCtagTOF->SaveAs(
"KaonDataTPCtagTOF.pdf");
1353 cProtonDataV0tagTOF->SaveAs(
"ProtonDataV0tagTOF.pdf");
1355 cEffPion->SaveAs(
"PionPIDefficiency_data_MC.pdf");
1356 cEffKaon->SaveAs(
"KaonPIDefficiency_data_MC.pdf");
1357 cEffProton->SaveAs(
"ProtonPIDefficiency_data_MC.pdf");
1388 for(
int iPt=0; iPt<nPtbins; iPt++) {
1389 if(pt>ptlims[iPt] && pt<ptlims[iPt+1]) {
1401 TH1F htmpnum(
"htmpnum",
"",1,0,1);
1402 TH1F htmpden(
"htmpden",
"",1,0,1);
1403 TH1F htmpratio(
"htmpratio",
"",1,0,1);
1405 htmpnum.SetBinContent(1,num);
1406 htmpden.SetBinContent(1,den);
1407 htmpnum.SetBinError(1,TMath::Sqrt(num));
1408 htmpden.SetBinError(1,TMath::Sqrt(den));
1409 htmpratio.Divide(&htmpnum,&htmpden,1.,1.,
"B");
1410 eff=htmpratio.GetBinContent(1);
1411 effunc=htmpratio.GetBinError(1);
1420 if(iPart==whichpart || hFractionMC[iPart]->GetBinContent(iPt+1)>1.e-5) {
1421 TH1F* hMC = (TH1F*)hNsigmaMC[iPart]->Clone(Form(
"hMC_%d_%s",iPt,pdgnames[iPart].
Data()));
1422 oNsigmaMC->AddLast(hMC);
1423 templUsed.push_back(iPart);
1427 if(templUsed.size()==1) {
1429 if(iPart==whichpart) {
1430 hFractionData[iPart]->SetBinContent(iPt+1,1.);
1433 hFractionData[iPart]->SetBinContent(iPt+1,0.);
1439 if(oNsigmaMC->GetEntries()>1) {
1441 fNsigmaFitter =
new TFractionFitter(hNsigmaData,oNsigmaMC);
1442 for(
int iEntry=0; iEntry<oNsigmaMC->GetEntries(); iEntry++) {
1443 fNsigmaFitter->Constrain(iEntry,hFractionMC[templUsed[iEntry]]->GetBinContent(iPt+1)*0.5,hFractionMC[templUsed[iEntry]]->GetBinContent(iPt+1)*2);
1445 fNsigmaFitter->Fit();
1449 vector<int>::iterator it = find(templUsed.begin(), templUsed.end(), iPart);
1450 if(it!=templUsed.end()) {
1452 int iEntry =
static_cast<int>(distance(templUsed.begin(),it));
1454 fNsigmaFitter->GetResult(iEntry, frac, err);
1455 hFractionData[iPart]->SetBinContent(iPt+1,frac);
1456 hFractionData[iPart]->SetBinError(iPt+1,err);
1459 hFractionData[iPart]->SetBinContent(iPt+1,0);
1460 hFractionData[iPart]->SetBinError(iPt+1,0);
1466 if(iPart!=whichpart) {
1467 hFractionData[iPart]->SetBinContent(iPt+1,1);
1468 hFractionData[iPart]->SetBinError(iPt+1,1);
1471 hFractionData[iPart]->SetBinContent(iPt+1,0);
1472 hFractionData[iPart]->SetBinError(iPt+1,0);
1483 double totalpdf = 0;
1485 partpdf[iPart] = pars[3*iPart]*TMath::Gaus(nsigma[0],pars[3*iPart+1],pars[3*iPart+2]);
1486 totalpdf += partpdf[iPart];
1496 TString ArmenterosName[5] = {
"All",
"K0s",
"Lambda",
"AntiLambda",
"Gamma"};
1497 TString legV0name[4] = {
"K_{s}^{0} #rightarrow #pi^{+}#pi^{-}",
"#Lambda #rightarrow p#pi^{-}",
"#bar{#Lambda} #rightarrow #bar{p}#pi^{+}",
"#gamma #rightarrow e^{+}e^{-}"};
1498 int ArmenterosColor[5] = {kBlack,kOrange+7,kRed,kBlue,kGreen+3};
1499 TH2F* hArmenterosMC[5];
1500 TH2F* hArmenterosData[5];
1503 TString KinksName[5] = {
"QtVsMassKinks",
"PDaughterVsMotherKink",
"OpeningAngleVsPMotherKink",
"dEdxVsPMotherKink",
"NTPCclsVsRadius"};
1505 TH2F* hKinksData[5];
1507 TCanvas* cArmentero =
new TCanvas(
"cArmenteros",
"cArmenteros",1920,1080);
1508 TCanvas* cKinks =
new TCanvas(
"cKinks",
"cKinks",1920,1080);
1509 cArmentero->Divide(2,1);
1510 cKinks->Divide(5,2);
1513 for(
int iHisto=0; iHisto<5; iHisto++) {
1514 hArmenterosMC[iHisto] = (
TH2F*)listMC->FindObject(Form(
"fHistArmenteroPlot%s",ArmenterosName[iHisto].
Data()));
1515 hArmenterosData[iHisto] = (
TH2F*)listData->FindObject(Form(
"fHistArmenteroPlot%s",ArmenterosName[iHisto].
Data()));
1516 hArmenterosMC[iHisto]->SetDirectory(0);
1517 hArmenterosData[iHisto]->SetDirectory(0);
1518 hArmenterosData[iHisto]->SetMarkerColor(ArmenterosColor[iHisto]);
1519 hArmenterosMC[iHisto]->SetMarkerColor(ArmenterosColor[iHisto]);
1520 hArmenterosData[iHisto]->GetYaxis()->SetTitleOffset(1.4);
1521 hArmenterosMC[iHisto]->GetYaxis()->SetTitleOffset(1.4);
1522 latV0[iHisto] =
new TLatex();
1523 latV0[iHisto]->SetNDC();
1524 latV0[iHisto]->SetTextFont(42);
1525 latV0[iHisto]->SetTextColor(ArmenterosColor[iHisto]);
1526 latV0[iHisto]->SetTextSize(0.045);
1528 hArmenterosMC[iHisto]->Draw(
"same");
1530 hArmenterosData[iHisto]->Draw(
"same");
1533 latV0[iHisto]->DrawLatex(0.6,0.8-0.05*iHisto,legV0name[iHisto-1].
Data());
1535 latV0[iHisto]->DrawLatex(0.6,0.8-0.05*iHisto,legV0name[iHisto-1].
Data());
1538 hKinksMC[iHisto] = (
TH2F*)listMC->FindObject(Form(
"fHist%s",KinksName[iHisto].
Data()));
1539 hKinksData[iHisto] = (
TH2F*)listData->FindObject(Form(
"fHist%s",KinksName[iHisto].
Data()));
1540 hKinksMC[iHisto]->SetTitle(
"MC");
1541 hKinksData[iHisto]->SetTitle(
"Data");
1543 cKinks->cd(1+iHisto)->SetLogz();
1544 hKinksMC[iHisto]->Draw(
"colz");
1545 cKinks->cd(6+iHisto)->SetLogz();
1546 hKinksData[iHisto]->Draw(
"colz");
1549 TH1F* hKinksMassMC = (TH1F*)hKinksMC[0]->ProjectionX(
"hKinksMassMC");
1550 hKinksMassMC->Scale(1./hKinksMassMC->Integral());
1551 hKinksMassMC->SetLineColor(kBlue);
1552 hKinksMassMC->SetLineWidth(2);
1553 hKinksMassMC->SetMarkerColor(kBlue);
1554 hKinksMassMC->SetMarkerStyle(kFullSquare);
1555 hKinksMassMC->SetTitle(
"");
1556 hKinksMassMC->GetYaxis()->SetTitle(
"Normalised entries");
1557 hKinksMassMC->GetYaxis()->SetTitleSize(0.045);
1558 hKinksMassMC->GetYaxis()->SetLabelSize(0.04);
1559 hKinksMassMC->GetXaxis()->SetTitleSize(0.045);
1560 hKinksMassMC->GetXaxis()->SetLabelSize(0.04);
1562 TH1F* hKinksMassData = (TH1F*)hKinksData[0]->ProjectionX(
"hKinksMassData");
1563 hKinksMassData->Scale(1./hKinksMassData->Integral());
1564 hKinksMassData->SetLineColor(kRed);
1565 hKinksMassData->SetLineWidth(2);
1566 hKinksMassData->SetMarkerColor(kRed);
1567 hKinksMassData->SetMarkerStyle(kFullDiamond);
1568 hKinksMassData->SetTitle(
"");
1569 hKinksMassData->GetYaxis()->SetTitle(
"Normalised entries");
1570 hKinksMassData->GetYaxis()->SetTitleSize(0.045);
1571 hKinksMassData->GetYaxis()->SetLabelSize(0.04);
1572 hKinksMassData->GetXaxis()->SetTitleSize(0.045);
1573 hKinksMassData->GetXaxis()->SetLabelSize(0.04);
1575 TLegend* leg =
new TLegend(0.2,0.7,0.4,0.8);
1576 leg->SetTextSize(0.045);
1577 leg->AddEntry(hKinksMassMC,
"MC",
"lpe");
1578 leg->AddEntry(hKinksMassData,
"Data",
"lpe");
1579 TCanvas* cKinksMass =
new TCanvas(
"cKinksMass",
"",800,800);
1580 cKinksMass->SetTopMargin(0.1);
1581 hKinksMassMC->Draw();
1582 hKinksMassData->Draw(
"same");
1585 cArmentero->SaveAs(
"V0QAplots.pdf");
1586 cKinks->SaveAs(
"KinksQAplots.pdf");
1587 cKinksMass->SaveAs(
"KinksMass.pdf");
1588 cArmentero->SaveAs(
"V0QAplots.png");
1589 cKinks->SaveAs(
"KinksQAplots.png");
1596 else if(nPtbins==2 || nPtbins==3)
1597 c->Divide(nPtbins,1);
1598 else if(nPtbins==4 || nPtbins==6 || nPtbins==8)
1599 c->Divide(nPtbins/2,2);
1600 else if(nPtbins==5 || nPtbins==7)
1601 c->Divide((nPtbins+1)/2,2);
1602 else if(nPtbins==9 || nPtbins==12 || nPtbins==15)
1603 c->Divide(nPtbins/3,3);
1604 else if(nPtbins==10 || nPtbins==11)
1606 else if(nPtbins==13 || nPtbins==14)
1608 else if(nPtbins>15 && nPtbins<=20 && nPtbins%4==0)
1609 c->Divide(nPtbins/4,4);
1610 else if(nPtbins>15 && nPtbins<=20 && nPtbins%4!=0)
1612 else if(nPtbins==21)
1614 else if(nPtbins>21 && nPtbins<=25)
1616 else if(nPtbins>25 && nPtbins%2==0)
1617 c->Divide(nPtbins/2,2);
1619 c->Divide((nPtbins+1)/2,2);
1624 gStyle->SetLegendBorderSize(1);
1625 gStyle->SetTitleOffset(1.4,
"y");
1626 gStyle->SetTitleOffset(1.2,
"x");
1627 gStyle->SetPadTopMargin(0.14);
1628 gStyle->SetPadRightMargin(0.035);
1629 gStyle->SetPadLeftMargin(0.14);
1630 gStyle->SetPadBottomMargin(0.14);
1631 gStyle->SetTitleSize(0.05,
"xyzt");
1632 gStyle->SetLabelSize(0.045,
"xyz");
1634 gStyle->SetPadTickX(1);
1635 gStyle->SetPadTickY(1);
1636 gStyle->SetOptStat(0);
1638 TGaxis::SetMaxDigits(3);
1642 void SetTH1Style(TH1F* histo,
int markerstyle,
int markercolor,
float markersize,
int linewidth,
int linecolor,
int fillcolor,
float labelsize,
float titlesize) {
1644 histo->SetMarkerStyle(markerstyle);
1645 histo->SetMarkerSize(markersize);
1646 histo->SetMarkerColor(markercolor);
1647 histo->SetLineWidth(linewidth);
1648 histo->SetLineColor(linecolor);
1649 histo->SetFillColorAlpha(fillcolor,0.25);
1652 histo->GetXaxis()->SetLabelSize(labelsize);
1653 histo->GetYaxis()->SetLabelSize(labelsize);
1656 histo->GetXaxis()->SetTitleSize(labelsize);
1657 histo->GetYaxis()->SetTitleSize(labelsize);
1658 histo->SetTitleSize(labelsize);
const TString indirNameData
void Draw(const char *filename, const char *title="", const char *others="ALL", const char *options="DEFAULT", const char *outFlg="ALL", UShort_t rebin=5, Float_t eff=0, const char *base="")
const TString pdgnames[nPDGcodes]
const TString infileNameData
void DivideCanvas(TCanvas *c, int nPtbins)
double PDFnsigmaTPCtot(double *nsigma, double *pars)
const TString inlistNameMC
void SetTH1Style(TH1F *histo, int markerstyle, int markercolor, float markersize, int linewidth, int linecolor, int fillcolor, float labelsize=-1, float titlesize=-1)
const int pdgcodes[nPDGcodes]
void ComputeEfficiency(double num, double den, double &eff, double &effunc)
const TString indirNameMC
const int pdgcolors[nPDGcodes]
const TString inlistNameData
int EstimateSingleTrackPIDsyst(int maxEntries=1.e8)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
void PlotQAhistos(TList *listMC, TList *listData)
const TString infileNameMC
int FindPtbin(float pt, const double ptlims[], int nPtbins)
int GetHistoParticleIndex(short pdgcode)
const int pdgfillcolors[nPDGcodes]
void GetTOFFractionsFromData(int whichpart, int iPt, TH1F *hFractionMC[nPDGcodes-1], TH1F *hFractionData[nPDGcodes-1], TH1F *hNsigmaMC[nPDGcodes], TH1F *hNsigmaData, TFractionFitter *&fNsigmaFitter, vector< int > &templUsed)