1 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include "TGraphAsymmErrors.h"
19 TString filnamPPref=
"~/alice/Charm/PbYield/2011/Final/ppref/D0Kpi_276TeV_FONLLExtrapolationAndExtrapolation_from7TeVAlicedata_combinedFD_141211_010312_160712_rebin_1_2_3_4_5_6_8_12_16_24.root";
23 TString filnamRaaNb=
"~/alice/Charm/PbYield/2011/Final/010/Dzero/HFPtSpectrumRaa_D0toKpi_010_Nb_160615.root";
24 TString filnamRaaFc=
"~/alice/Charm/PbYield/2011/Final/010/Dzero/HFPtSpectrumRaa_D0toKpi_010_fc_160615.root";
46 Int_t colors[
nPtBins]={kGray+2,kMagenta+1,kMagenta,kBlue,kCyan,kGreen+2,kYellow+2,kOrange+1,kRed+1};
77 if(collSyst==
"Pb-Pb"){
85 TString centralityNoDash=centrality.Data();
86 centralityNoDash.ReplaceAll(
"-",
"");
90 Int_t optCombineFDEloss=1;
92 Bool_t showRcbSystNorm=kTRUE;
95 filnamChi=filnamSpectrumFc.Data();
96 filnamCnt=filnamRaaFc.Data();
97 filnamCntS=filnamRaaNb.Data();
100 filnamChi=filnamSpectrumNb.Data();
101 filnamCnt=filnamRaaNb.Data();
102 filnamCntS=filnamRaaFc.Data();
105 Int_t colorSystFD=kGray+1;
106 Int_t colorSystRb=kOrange;
107 Int_t colorSystDatappC=kBlue+1;
108 Int_t colorSystDataaaC=kRed+1;
109 Int_t colorppC=kBlue+1;
110 Int_t coloraaC=kRed+1;
127 TFile *filPP=
new TFile(filnamPPref.Data());
128 TH1D *hppRef = (
TH1D*)filPP->Get(
"hReference");
129 if(!hppRef) hppRef = (
TH1D*)filPP->Get(
"fhScaledData");
130 TH1D *hppRefSystData = (
TH1D*)filPP->Get(
"fhScaledSystData");
135 for(
Int_t i=0; i<gppRefSyst->GetN(); i++){
137 gppRefSyst->GetPoint(i,x,y);
140 relsysterrLowDatapp[hBin]=gppRefSyst->GetErrorYlow(i)/y;
141 relsysterrHiDatapp[hBin]=gppRefSyst->GetErrorYhigh(i)/y;
148 relstaterrpp[ib]=hppRef->GetBinError(hBin)/hppRef->GetBinContent(hBin);
149 printf(
"-- Relative stat errors PP: Bin %d(%f)--- histobin=%d Err %f\n",ib,0.5*(
binlim[ib]+
binlim[ib+1]),hBin,relstaterrpp[ib]);
151 if(hppRefSystData->GetBinCenter(hBin2)<ptForExtrap){
152 Float_t relsysterrDatapp=hppRefSystData->GetBinError(hBin2)/hppRefSystData->GetBinContent(hBin2);
153 relsysterrLowDatapp[ib]=relsysterrDatapp;
154 relsysterrHiDatapp[ib]=relsysterrDatapp;
156 printf(
" ---- Check SYST err DATA PP Bin %d CS=%f Err+%f -%f\n",ib, hppRef->GetBinContent(hBin),relsysterrHiDatapp[ib],relsysterrLowDatapp[ib]);
162 relsysterrLowEnScalpp[ib]=0.;
163 relsysterrHiEnScalpp[ib]=0.;
166 for(
Int_t i=0; i<gsystppEnSc->GetN(); i++){
168 gsystppEnSc->GetPoint(i,x,y);
170 if(hBin>=0 && hBin<nPtBins && x<
binlim[nPtBins]){
172 relsysterrLowEnScalpp[hBin]=gsystppEnSc->GetErrorYlow(i)/y;
173 relsysterrHiEnScalpp[hBin]=gsystppEnSc->GetErrorYhigh(i)/y;
182 relsysterrHiFDpp[i]=0.;
183 relsysterrLowFDpp[i]=0.;
185 for(
Int_t i=0; i<gsystppFD->GetN(); i++){
187 gsystppFD->GetPoint(i,x,y);
189 if(hBin>=0 && hBin<nPtBins && x<
binlim[nPtBins]){
190 relsysterrLowFDpp[hBin]=gsystppFD->GetErrorYlow(i)/y;
191 relsysterrHiFDpp[hBin]=gsystppFD->GetErrorYhigh(i)/y;
192 printf(
" ---- Check syst err FD pp Bin %d Err+%f -%f\n",hBin,relsysterrHiFDpp[hBin],relsysterrLowFDpp[hBin]);
199 printf(
"--- %s events ---\n",collSyst.Data());
201 TFile *filChi=
new TFile(filnamChi.Data());
202 TH1D *hSpC = (
TH1D*)filChi->Get(
"hRECpt");
206 relstaterrPbPb[ib]=hSpC->GetBinError(hBin)/hSpC->GetBinContent(hBin);
207 printf(
"-- Relative stat errors AA from yield: Bin %d(%d) pt=%f Err %f\n",ib,hBin,hSpC->GetBinCenter(hBin),relstaterrPbPb[ib]);
211 if(!systematicsABcent){
212 printf(
"AliHFSysstErr generated on the fly\n");
213 systematicsABcent=
new AliHFSystErr(
"AliHFSystErr",
"on the fly");
214 if(collSyst==
"p-Pb"){
221 systematicsABcent->
Init(mesCode);
223 printf(
"AliHFSystErr read from HFPtSpectrum output\n");
225 TH1D* heffC=(
TH1D*)filChi->Get(
"hDirectEffpt");
232 relsysterrLowFDaa[i]=0.;
233 relsysterrHiFDaa[i]=0.;
235 for(
Int_t i=0; i<gsystaaFDc->GetN(); i++){
237 gsystaaFDc->GetPoint(i,x,y);
239 if(hBin>=0 && hBin<nPtBins && x<
binlim[nPtBins]){
240 relsysterrLowFDaa[hBin]=gsystaaFDc->GetErrorYlow(i)/y;
241 relsysterrHiFDaa[hBin]=gsystaaFDc->GetErrorYhigh(i)/y;
242 printf(
" ---- Check syst err FD AA Bin %d Err+%f -%f\n",hBin,relsysterrHiFDaa[hBin],relsysterrLowFDaa[hBin]);
246 TFile *filCnt=
new TFile(filnamCnt.Data());
248 TH1D* hraaCcheck2=(
TH1D*)filCnt->Get(
"hRABvsPt");
251 Double_t aux=hraaCcheck2->GetBinError(hBin)/hraaCcheck2->GetBinContent(hBin);
252 relstaterrPbPb2[ib]=TMath::Sqrt(aux*aux-relstaterrpp[ib]*relstaterrpp[ib]);
254 printf(
"-- Relative stat errors AA from RAA-PP: Bin %d(%f)---%d Err %f\n",ib,0.5*(
binlim[ib]+
binlim[ib+1]),hBin,relstaterrPbPb2[ib]);
258 TNtuple* ntC=(TNtuple*)filCnt->Get(
"ntupleRAB");
259 Float_t pt,TAB,sigmaPP,invyieldAB,RABCharm,RABBeauty;
260 Float_t invyieldABFDHigh,invyieldABFDLow,fprompt;
261 ntC->SetBranchAddress(
"pt",&pt);
262 ntC->SetBranchAddress(
"TAB",&TAB);
263 ntC->SetBranchAddress(
"sigmaPP",&sigmaPP);
264 ntC->SetBranchAddress(
"invyieldAB",&invyieldAB);
265 ntC->SetBranchAddress(
"RABCharm",&RABCharm);
266 ntC->SetBranchAddress(
"RABBeauty",&RABBeauty);
267 ntC->SetBranchAddress(
"invyieldABFDHigh",&invyieldABFDHigh);
268 ntC->SetBranchAddress(
"invyieldABFDLow",&invyieldABFDLow);
269 ntC->SetBranchAddress(
"fc",&fprompt);
281 invyPbPbLo[ib]=-999.;
282 invyPbPbHi[ib]=-999.;
283 invyPbPbLoSingleSyst[ib]=-999.;
284 invyPbPbHiSingleSyst[ib]=-999.;
286 raacLowHyp[ib]=-999.;
287 invyPbPbLowHyp[ib]=-999.;
288 minvalLowHyp[ib]=9999.;
289 raacHigHyp[ib]=-999.;
290 invyPbPbHigHyp[ib]=-999.;
291 minvalHigHyp[ib]=9999.;
292 fPromptCent[ib]=-9999.;
293 fPromptHigHyp[ib]=-9999.;
294 fPromptLowHyp[ib]=-9999.;
304 for(
Int_t ie=0; ie<ntC->GetEntries(); ie++){
308 invyieldABFDLow/=brat;
309 invyieldABFDHigh/=brat;
312 if(pt>
binlim[nPtBins])
continue;
314 if(theBin<0 || theBin>=nPtBins)
continue;
315 Float_t rFdPr=RABBeauty/RABCharm;
317 if(dist<minval[theBin]){
318 raac[theBin]=RABCharm;
321 invyPbPbLo[theBin]=invyieldABFDLow*
normToCsec;
322 invyPbPbHi[theBin]=invyieldABFDHigh*
normToCsec;
323 invypp[theBin]=TAB*sigmaPP;
324 if(collSyst==
"p-Pb" && TMath::Abs(normToCsec-1.)>0.001) invypp[theBin]=208.*sigmaPP*1e6;
325 fPromptCent[theBin]=fprompt;
328 if(distLowHyp<minvalLowHyp[theBin]){
330 raacLowHyp[theBin]=RABCharm;
332 invyPbPbHiSingleSyst[theBin]=invyieldABFDHigh*
normToCsec;
333 minvalLowHyp[theBin]=distLowHyp;
334 fPromptLowHyp[theBin]=fprompt;
337 if(distHigHyp<minvalHigHyp[theBin]){
339 raacHigHyp[theBin]=RABCharm;
341 invyPbPbLoSingleSyst[theBin]=invyieldABFDLow*
normToCsec;
342 minvalHigHyp[theBin]=distHigHyp;
343 fPromptHigHyp[theBin]=fprompt;
345 if(theBin<nPtBins && theBin>=0 && pt<
binlim[nPtBins]){
346 gcb[theBin]->SetPoint(gcb[theBin]->GetN(),RABBeauty,RABCharm);
347 gcrbc[theBin]->SetPoint(gcrbc[theBin]->GetN(),rFdPr,RABCharm);
353 hcheck[i]=(
TH1D*)filCnt->Get(Form(
"hRCharmVsElossHypo_%d",i+1));
356 TMarker** mC=
new TMarker*[
nPtBins];
358 mC[ib]=
new TMarker(1.,raac[ib],20);
359 mC[ib]->SetMarkerSize(1.2);
362 for(
Int_t ip=0; ip<gcrbc[ib]->GetN(); ip++){
363 gcrbc[ib]->GetPoint(ip,auxx,auxy);
365 gcrbc[ib]->SetPoint(ip,auxx,(auxy-1)*100.);
370 TFile *filCntS=
new TFile(filnamCntS.Data());
371 TNtuple* ntCS=(TNtuple*)filCntS->Get(
"ntupleRAB");
372 ntCS->SetBranchAddress(
"pt",&pt);
373 ntCS->SetBranchAddress(
"TAB",&TAB);
374 ntCS->SetBranchAddress(
"sigmaPP",&sigmaPP);
375 ntCS->SetBranchAddress(
"invyieldAB",&invyieldAB);
376 ntCS->SetBranchAddress(
"RABCharm",&RABCharm);
377 ntCS->SetBranchAddress(
"RABBeauty",&RABBeauty);
378 ntCS->SetBranchAddress(
"invyieldABFDHigh",&invyieldABFDHigh);
379 ntCS->SetBranchAddress(
"invyieldABFDLow",&invyieldABFDLow);
380 ntCS->SetBranchAddress(
"fc",&fprompt);
387 minvalLowHypS[ib]=9999.;
388 minvalHigHypS[ib]=9999.;
390 invyPbPbLoS[ib]=-999.;
391 invyPbPbHiS[ib]=-999.;
392 invyPbPbLoSingleSystS[ib]=-999.;
393 invyPbPbHiSingleSystS[ib]=-999.;
394 fPromptLowHypS[ib]=-999.;
395 fPromptHigHypS[ib]=-999.;
397 for(
Int_t ie=0; ie<ntCS->GetEntries(); ie++){
401 invyieldABFDLow/=brat;
402 invyieldABFDHigh/=brat;
405 if(pt>
binlim[nPtBins])
continue;
407 if(theBin<0 || theBin>=nPtBins)
continue;
408 Float_t rFdPr=RABBeauty/RABCharm;
410 if(dist<minvalS[theBin]){
411 minvalS[theBin]=dist;
413 invyPbPbLoS[theBin]=invyieldABFDLow*
normToCsec;
414 invyPbPbHiS[theBin]=invyieldABFDHigh*
normToCsec;
415 fPromptCentS[theBin]=fprompt;
418 if(distLowHyp<minvalLowHypS[theBin]){
420 invyPbPbHiSingleSystS[theBin]=invyieldABFDHigh*
normToCsec;
421 minvalLowHypS[theBin]=distLowHyp;
422 fPromptLowHypS[theBin]=fprompt;
425 if(distHigHyp<minvalHigHypS[theBin]){
427 invyPbPbLoSingleSystS[theBin]=invyieldABFDLow*
normToCsec;
428 minvalHigHypS[theBin]=distHigHyp;
429 fPromptHigHypS[theBin]=fprompt;
433 TH1F* hfPromptCent=
new TH1F(
"hfPromptCent",
" ; p_{T} (Gev/c) ; f_{prompt}",nPtBins,
binlim);
434 TH1F* hfPromptMinNb=
new TH1F(
"hfPromptMinNb",
" ; p_{T} (Gev/c) ; f_{prompt}",nPtBins,
binlim);
435 TH1F* hfPromptMinfc=
new TH1F(
"hfPromptMinfc",
" ; p_{T} (Gev/c) ; f_{prompt}",nPtBins,
binlim);
436 TH1F* hfPromptMaxNb=
new TH1F(
"hfPromptMaxNb",
" ; p_{T} (Gev/c) ; f_{prompt}",nPtBins,
binlim);
437 TH1F* hfPromptMaxfc=
new TH1F(
"hfPromptMaxfc",
" ; p_{T} (Gev/c) ; f_{prompt}",nPtBins,
binlim);
438 hfPromptCent->SetStats(0);
439 hfPromptMinNb->SetStats(0);
440 hfPromptMaxNb->SetStats(0);
441 hfPromptMinfc->SetStats(0);
442 hfPromptMaxfc->SetStats(0);
445 printf(
"Bin %d\n",ib);
446 printf(
" fprompt central=%f --- Nb fpromptmin=%f fpromptmax=%f --- fc fpromptmin=%f fpromptmax=%f\n",fPromptCent[ib],fPromptHigHyp[ib],fPromptLowHyp[ib],fPromptHigHypS[ib],fPromptLowHypS[ib]);
449 Double_t relerrFDscaleHigh = (invyPbPbHi[ib]-invyPbPb[ib])/invyPbPb[ib];
450 Double_t relerrFDscaleLow = (invyPbPb[ib]-invyPbPbLo[ib])/invyPbPb[ib];
452 Double_t relerrElossHigh = (fPromptLowHyp[ib]-fPromptCent[ib])/fPromptCent[ib];
453 Double_t relerrElossLow = (fPromptCent[ib]-fPromptHigHyp[ib])/fPromptCent[ib];
455 Double_t toterrFDhigh = TMath::Sqrt(relerrFDscaleHigh*relerrFDscaleHigh+relerrElossHigh*relerrElossHigh)*fPromptCent[ib];
456 Double_t toterrFDlow = TMath::Sqrt(relerrFDscaleLow*relerrFDscaleLow+relerrElossLow*relerrElossLow)*fPromptCent[ib];
458 Double_t relerrFDscaleHighS = (invyPbPbHiS[ib]-invyPbPbS[ib])/invyPbPbS[ib];
459 Double_t relerrFDscaleLowS = (invyPbPbS[ib]-invyPbPbLoS[ib])/invyPbPbS[ib];
461 Double_t relerrElossHighS = (fPromptLowHypS[ib]-fPromptCentS[ib])/fPromptCentS[ib];
462 Double_t relerrElossLowS = (fPromptCentS[ib]-fPromptHigHypS[ib])/fPromptCentS[ib];
464 Double_t toterrFDhighS = TMath::Sqrt(relerrFDscaleHighS*relerrFDscaleHighS+relerrElossHighS*relerrElossHighS)*fPromptCentS[ib];
465 Double_t toterrFDlowS = TMath::Sqrt(relerrFDscaleLowS*relerrFDscaleLowS+relerrElossLowS*relerrElossLowS)*fPromptCentS[ib];
467 hfPromptCent->SetBinContent(ib+1,fPromptCent[ib]);
468 hfPromptMinNb->SetBinContent(ib+1,fPromptCent[ib]-toterrFDlow);
469 hfPromptMaxNb->SetBinContent(ib+1,fPromptCent[ib]+toterrFDhigh);
470 hfPromptMinfc->SetBinContent(ib+1,fPromptCentS[ib]-toterrFDlowS);
471 hfPromptMaxfc->SetBinContent(ib+1,fPromptCentS[ib]+toterrFDhighS);
473 printf(
"Bin %d\n",ib);
474 printf(
" fprompt central=%f --- Nb fpromptmin=%f fpromptmax=%f --- fc fpromptmin=%f fpromptmax=%f\n",fPromptCent[ib],hfPromptMinNb->GetBinContent(ib+1),hfPromptMaxNb->GetBinContent(ib+1),hfPromptMinfc->GetBinContent(ib+1),hfPromptMaxfc->GetBinContent(ib+1));
477 TH1F* hppC=
new TH1F(
"hppC",Form(
"pp reference for %s%% CC",centrality.Data()),nPtBins,
binlim);
479 gppCsystdata->SetName(
"gppCsystdata");
480 gppCsystdata->SetTitle(Form(
"Data Syst. Err. pp, scaled to %s%% CC",centrality.Data()));
482 gppCsystFD->SetName(
"gppCsystFD");
483 gppCsystFD->SetTitle(Form(
"B feed-down Syst. Err. pp, scaled to %s%% CC",centrality.Data()));
484 TH1F* hAAC=
new TH1F(
"hAAC",Form(
"PbPb %s%% CC",centrality.Data()),nPtBins,
binlim);
486 gaaCsystdata->SetName(
"gaaCsystdata");
487 gaaCsystdata->SetTitle(Form(
"Data Syst. Err. PbPb %s%% CC",centrality.Data()));
489 gaaCsystFD->SetName(
"gaaCsystFD");
490 gaaCsystFD->SetTitle(Form(
"B feed-down Syst. Err. PbPb %s%% CC",centrality.Data()));
492 gaaCsystRb->SetName(
"gaaCsystRb");
493 gaaCsystRb->SetTitle(Form(
"Raa(B) Syst. Err. PbPb %s%% CC",centrality.Data()));
495 gaaCsystB->SetName(
"gaaCsystB");
496 gaaCsystB->SetTitle(Form(
"B Syst. Err. PbPb %s%% CC",centrality.Data()));
498 gaaCsystTot->SetName(
"gaaCsystTot");
499 gaaCsystTot->SetTitle(Form(
"Tot Syst. Err. PbPb %s%% CC",centrality.Data()));
500 TH1F* hRAAC=
new TH1F(
"hRAAC",
"",nPtBins,
binlim);
504 printf(
"Bin %d\n",ib);
505 printf(
"raa(centHyp)=%f raa(lowHyp)=%f raa(highHyp)=%f RelDiff=%f\n",
506 raac[ib],raacLowHyp[ib],raacHigHyp[ib],(raacHigHyp[ib]-raacLowHyp[ib])/raac[ib]);
508 Float_t relstaterrRaa=TMath::Sqrt(relstaterrpp[ib]*relstaterrpp[ib]+relstaterrPbPb2[ib]*relstaterrPbPb2[ib]);
509 hRAAC->SetBinContent(ib+1,raac[ib]);
510 hRAAC->SetBinError(ib+1,relstaterrRaa*raac[ib]);
511 Int_t nP=graaC->GetN();
512 graaC->SetPoint(nP,hRAAC->GetBinCenter(ib+1),raac[ib]);
513 graaC->SetPointEXlow(nP,hRAAC->GetBinCenter(ib+1)-hRAAC->GetBinLowEdge(ib+1));
514 graaC->SetPointEXhigh(nP,hRAAC->GetBinLowEdge(ib+2)-hRAAC->GetBinCenter(ib+1));
515 graaC->SetPointEYlow(nP,raac[ib]-raacHigHyp[ib]);
516 graaC->SetPointEYhigh(nP,raacLowHyp[ib]-raac[ib]);
519 hppC->SetBinContent(ib+1,invypp[ib]);
520 hppC->SetBinError(ib+1,relstaterrpp[ib]*invypp[ib]);
521 Int_t nP=gppCsystdata->GetN();
522 gppCsystdata->SetPoint(nP,hppC->GetBinCenter(ib+1),invypp[ib]);
523 gppCsystdata->SetPointEXlow(nP,sizesystdata);
524 gppCsystdata->SetPointEXhigh(nP,sizesystdata);
525 Double_t edatl=relsysterrLowDatapp[ib]*invypp[ib];
526 Double_t edath=relsysterrHiDatapp[ib]*invypp[ib];
527 Double_t eenscl=relsysterrLowEnScalpp[ib]*invypp[ib];
528 Double_t eensch=relsysterrHiEnScalpp[ib]*invypp[ib];
529 Double_t elow=TMath::Sqrt(edatl*edatl+eenscl*eenscl);
530 Double_t ehig=TMath::Sqrt(edath*edath+eensch*eensch);
531 gppCsystdata->SetPointEYlow(nP,elow);
532 gppCsystdata->SetPointEYhigh(nP,ehig);
533 nP=gppCsystFD->GetN();
534 gppCsystFD->SetPoint(nP,hppC->GetBinCenter(ib+1),invypp[ib]);
535 gppCsystFD->SetPointEXlow(nP,sizesystfd);
536 gppCsystFD->SetPointEXhigh(nP,sizesystfd);
537 gppCsystFD->SetPointEYlow(nP,relsysterrLowFDpp[ib]*invypp[ib]);
538 gppCsystFD->SetPointEYhigh(nP,relsysterrHiFDpp[ib]*invypp[ib]);
541 printf(
"yielddAA(centHyp)=%f yielddAA(lowHyp)=%f yielddAA(highHyp)=%f RelDiff=%f\n",
542 invyPbPb[ib],invyPbPbLowHyp[ib],invyPbPbHigHyp[ib],(invyPbPbHigHyp[ib]-invyPbPbLowHyp[ib])/invyPbPb[ib]);
543 hAAC->SetBinContent(ib+1,invyPbPb[ib]);
544 hAAC->SetBinError(ib+1,relstaterrPbPb2[ib]*invyPbPb[ib]);
545 Int_t nP=gaaCsystdata->GetN();
546 gaaCsystdata->SetPoint(nP,hAAC->GetBinCenter(ib+1),invyPbPb[ib]);
547 gaaCsystdata->SetPointEXlow(nP,sizesystdata);
548 gaaCsystdata->SetPointEXhigh(nP,sizesystdata);
549 Double_t systundatalow,systundatahigh;
550 Bool_t isOk=
PbPbDataSyst(systematicsABcent,heffC,hAAC->GetBinCenter(ib+1),systundatahigh,systundatalow);
551 printf(
"Check PID syst: %f %f %f\n",systematicsABcent->
GetTotalSystErr(hAAC->GetBinCenter(ib+1)),systundatahigh,systundatalow);
552 systundatalow*=invyPbPb[ib];
553 systundatahigh*=invyPbPb[ib];
554 gaaCsystdata->SetPointEYlow(nP,systundatalow);
555 gaaCsystdata->SetPointEYhigh(nP,systundatahigh);
557 nP=gaaCsystRb->GetN();
558 gaaCsystRb->SetPoint(nP,hAAC->GetBinCenter(ib+1),invyPbPb[ib]);
559 gaaCsystRb->SetPointEXlow(nP,sizesystrb);
560 gaaCsystRb->SetPointEXhigh(nP,sizesystrb);
561 gaaCsystRb->SetPointEYlow(nP,invyPbPb[ib]-invyPbPbHigHyp[ib]);
562 gaaCsystRb->SetPointEYhigh(nP,invyPbPbLowHyp[ib]-invyPbPb[ib]);
563 nP=gaaCsystFD->GetN();
564 gaaCsystFD->SetPoint(nP,hAAC->GetBinCenter(ib+1),invyPbPb[ib]);
565 gaaCsystFD->SetPointEXlow(nP,sizesystfd);
566 gaaCsystFD->SetPointEXhigh(nP,sizesystfd);
567 gaaCsystB->SetPoint(nP,hAAC->GetBinCenter(ib+1),invyPbPb[ib]);
568 gaaCsystB->SetPointEXlow(nP,sizesystfd);
569 gaaCsystB->SetPointEXhigh(nP,sizesystfd);
570 gaaCsystTot->SetPoint(nP,hAAC->GetBinCenter(ib+1),invyPbPb[ib]);
571 gaaCsystTot->SetPointEXlow(nP,sizesysttot);
572 gaaCsystTot->SetPointEXhigh(nP,sizesysttot);
574 gaaCsystFD->SetPointEYlow(nP,relsysterrLowFDaa[ib]*invyPbPb[ib]);
575 gaaCsystFD->SetPointEYhigh(nP,relsysterrHiFDaa[ib]*invyPbPb[ib]);
580 minyield=invyPbPbLo[ib];
581 maxyield=invyPbPbHi[ib];
582 minyieldsing=invyPbPbLoSingleSyst[ib];
583 maxyieldsing=invyPbPbHiSingleSyst[ib];
585 minyield=TMath::Min(invyPbPbLo[ib],invyPbPbLoS[ib]);
586 maxyield=TMath::Max(invyPbPbHi[ib],invyPbPbHiS[ib]);
587 minyieldsing=TMath::Min(invyPbPbLoSingleSyst[ib],invyPbPbLoSingleSystS[ib]);
588 maxyieldsing=TMath::Max(invyPbPbHiSingleSyst[ib],invyPbPbHiSingleSystS[ib]);
590 gaaCsystFD->SetPointEYlow(nP,invyPbPb[ib]-minyield);
591 gaaCsystFD->SetPointEYhigh(nP,maxyield-invyPbPb[ib]);
592 printf(
"Relative syst from FD (FONLL scales+masses)=-%f +%f\n",gaaCsystFD->GetErrorYlow(nP)/invyPbPb[ib],gaaCsystFD->GetErrorYhigh(nP)/invyPbPb[ib]);
595 if(optCombineFDEloss==0){
596 systunBlow=invyPbPb[ib]-minyieldsing;
597 systunBhigh=maxyieldsing-invyPbPb[ib];
599 Double_t e1l=gaaCsystFD->GetErrorYlow(nP);
600 Double_t e1h=gaaCsystFD->GetErrorYhigh(nP);
601 Double_t e2l=gaaCsystRb->GetErrorYlow(nP);
602 Double_t e2h=gaaCsystRb->GetErrorYhigh(nP);
603 systunBlow=TMath::Sqrt(e1l*e1l+e2l*e2l);
604 systunBhigh=TMath::Sqrt(e1h*e1h+e2h*e2h);
606 gaaCsystB->SetPointEYlow(nP,systunBlow);
607 gaaCsystB->SetPointEYhigh(nP,systunBhigh);
609 Double_t totSystlow=TMath::Sqrt(systunBlow*systunBlow+systundatalow*systundatalow);
610 Double_t totSysthigh=TMath::Sqrt(systunBhigh*systunBhigh+systundatahigh*systundatahigh);
611 gaaCsystTot->SetPointEYlow(nP,totSystlow);
612 gaaCsystTot->SetPointEYhigh(nP,totSysthigh);
617 TH1F* hcheckRAAC=(TH1F*)hAAC->Clone(
"hcheckRAAC");
618 hcheckRAAC->Divide(hppC);
623 gStyle->SetOptTitle(0);
625 TCanvas* c1=
new TCanvas(
"c1",
"RcVsRb");
626 TLegend* leg=
new TLegend(0.19,0.18,0.55,0.41);
627 leg->SetFillColor(0);
628 leg->SetFillStyle(0);
629 leg->SetBorderSize(0);
630 leg->SetTextFont(43);
631 leg->SetTextSize(28);
632 leg->SetMargin(0.32);
637 if(
draw[ib] && gcb[ib]->GetN()>0){
638 gcb[ib]->SetLineColor(
colors[ib]);
639 gcb[ib]->SetLineWidth(3);
640 gcb[ib]->SetLineStyle(
lstyle[ib]);
643 gcb[ib]->GetXaxis()->SetLimits(0.,1.);
644 gcb[ib]->GetXaxis()->SetTitle(
"#it{R}_{AA} feed-down");
645 gcb[ib]->GetYaxis()->SetTitle(
"#it{R}_{AA} prompt");
646 gcb[ib]->SetMinimum(0.);
647 gcb[ib]->SetMaximum(1.);
650 gcb[ib]->Draw(
"lsame");
659 TCanvas* c2=
new TCanvas(
"c2x",
"RcVsRcb",700,700);
664 c2->SetLeftMargin(0.14);
665 c2->SetBottomMargin(0.13);
666 c2->SetTopMargin(0.035);
667 c2->SetRightMargin(0.045);
669 if(
draw[ib] && gcrbc[ib]->GetN()>0){
670 gcrbc[ib]->SetLineColor(
colors[ib]);
671 gcrbc[ib]->SetLineWidth(3);
672 gcrbc[ib]->SetLineStyle(
lstyle[ib]);
674 gcrbc[ib]->Draw(
"AL");
676 gcrbc[ib]->GetXaxis()->SetTitle(
"Hypothesis on (#it{R}_{AA} feed-down)/(#it{R}_{AA} prompt)");
677 gcrbc[ib]->GetYaxis()->SetTitleOffset(1.2);
678 gcrbc[ib]->GetXaxis()->SetTitleOffset(1.2);
679 gcrbc[ib]->GetYaxis()->SetTitleFont(43);
680 gcrbc[ib]->GetXaxis()->SetTitleFont(43);
681 gcrbc[ib]->GetYaxis()->SetTitleSize(30);
682 gcrbc[ib]->GetXaxis()->SetTitleSize(30);
683 gcrbc[ib]->GetYaxis()->SetLabelFont(43);
684 gcrbc[ib]->GetXaxis()->SetLabelFont(43);
685 gcrbc[ib]->GetYaxis()->SetLabelSize(28);
686 gcrbc[ib]->GetXaxis()->SetLabelSize(28);
687 if(!showRcbSystNorm){
688 gcrbc[ib]->GetYaxis()->SetTitle(
"#it{R}_{AA} prompt");
689 gcrbc[ib]->SetMinimum(0.);
690 gcrbc[ib]->SetMaximum(0.8);
692 gcrbc[ib]->GetYaxis()->SetTitle(
"Relative variation of #it{R}_{AA} prompt (%)");
693 gcrbc[ib]->SetMinimum(-20);
694 gcrbc[ib]->SetMaximum(20);
698 gcrbc[ib]->Draw(
"lsame");
700 if(!showRcbSystNorm){
701 mC[ib]->SetMarkerColor(
colors[ib]);
702 mC[ib]->Draw(
"same");
711 TLatex* tali0=
new TLatex(0.18,0.89,
"ALICE");
713 tali0->SetTextFont(43);
714 tali0->SetTextSize(28);
716 TLatex* tpbpb=
new TLatex(0.41,0.89,Form(
"%s, %s%%",collSyst.Data(),centrality.Data()));
718 tpbpb->SetTextFont(43);
719 tpbpb->SetTextSize(28);
722 TLatex* tdmes=
new TLatex(0.3,0.43,Form(
"%s meson",mesSymb.Data()));
724 tdmes->SetTextFont(43);
725 tdmes->SetTextSize(28);
729 lin0->SetLineStyle(2);
730 lin0->SetLineColor(kGray+1);
733 c2->SaveAs(Form(
"%s-RcVsRcb_method%d_optErrFD%d_br%d.eps",mesName.Data(),
method,
optErrFD,correctForBR));
737 TCanvas* cfp=
new TCanvas(
"cfp",
"fprompt",700,700);
740 hfPromptCent->SetMinimum(0);
741 hfPromptCent->SetMaximum(1.05);
742 hfPromptCent->SetLineWidth(3);
743 hfPromptCent->Draw();
744 hfPromptMinNb->SetLineWidth(2);
745 hfPromptMaxNb->SetLineWidth(2);
746 hfPromptMinNb->SetLineStyle(2);
747 hfPromptMaxNb->SetLineStyle(2);
748 hfPromptMinNb->Draw(
"same");
749 hfPromptMaxNb->Draw(
"same");
750 hfPromptMinfc->SetLineWidth(2);
751 hfPromptMaxfc->SetLineWidth(2);
752 hfPromptMinfc->SetLineStyle(2);
753 hfPromptMaxfc->SetLineStyle(2);
754 hfPromptMinfc->SetLineColor(2);
755 hfPromptMaxfc->SetLineColor(2);
757 hfPromptMinfc->Draw(
"same");
758 hfPromptMaxfc->Draw(
"same");
759 TLatex* t1=
new TLatex(0.17,0.15,
"fc");
764 TLatex* t2=
new TLatex(0.17,0.2,
"Nb");
767 cfp->SaveAs(Form(
"fprompt-%s.eps",mesName.Data()));
769 hppC->SetMarkerStyle(markerppC);
770 hppC->SetMarkerSize(msizppC);
771 hppC->SetMarkerColor(colorppC);
772 hppC->SetLineColor(colorppC);
773 hppC->SetLineWidth(linewippC);
774 hppC->SetLineStyle(linestppC);
775 gppCsystdata->SetLineColor(colorSystDatappC);
776 gppCsystdata->SetLineWidth(2);
777 gppCsystdata->SetFillStyle(0);
778 gppCsystdata->SetFillColor(colorSystDatappC);
779 gppCsystFD->SetLineColor(colorSystFD);
780 gppCsystFD->SetFillColor(colorSystFD);
781 hAAC->SetMarkerStyle(markeraaC);
782 hAAC->SetMarkerSize(msizaaC);
783 hAAC->SetMarkerColor(coloraaC);
784 hAAC->SetLineColor(coloraaC);
785 hAAC->SetLineWidth(linewiaaC);
786 hAAC->SetLineStyle(linestaaC);
787 gaaCsystdata->SetLineColor(colorSystDataaaC);
788 gaaCsystdata->SetLineWidth(2);
789 gaaCsystdata->SetFillStyle(0);
791 gaaCsystB->SetFillColor(colorSystRb);
792 gaaCsystRb->SetFillColor(colorSystRb);
793 gaaCsystFD->SetFillColor(colorSystFD);
795 gaaCsystTot->SetLineColor(1);
796 gaaCsystTot->SetLineWidth(3);
797 gaaCsystTot->SetFillStyle(0);
802 Float_t y16C=hAAC->GetBinContent(hAAC->FindBin(14.));
803 if(y16C>0. && y16C<ymin) ymin=y16C;
804 Float_t y12C=hAAC->GetBinContent(hAAC->FindBin(10.));
805 if(y12C>0. && y12C<ymin) ymin=y12C;
809 if(collSyst==
"p-Pb" && TMath::Abs(
normToCsec-1.)>0.001){
814 TH2F *hempty=
new TH2F(
"hempty",
"",100,0.,
binlim[nPtBins]*1.02,100,ymin,ymax);
815 hempty->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
816 hempty->GetYaxis()->SetTitle(
"d#it{N}/d#it{p}_{T}_{ }|_{ |#it{y}|<0.5} (1/GeV/#it{c})");
817 hempty->GetYaxis()->SetTitleSize(0.05);
818 hempty->GetXaxis()->SetTitleSize(0.05);
819 hempty->GetYaxis()->SetTitleOffset(1.3);
820 hempty->GetYaxis()->SetTitleFont(42);
821 hempty->GetXaxis()->SetTitleFont(42);
822 hempty->GetYaxis()->SetLabelFont(42);
823 hempty->GetXaxis()->SetLabelFont(42);
825 TLatex* tdec =
new TLatex(0.18,0.89,Form(
"%s",mesSymb.Data()));
827 tdec->SetTextSize(0.038);
828 tdec->SetTextFont(42);
830 gStyle->SetMarkerSize(1.8);
832 TCanvas* c3=
new TCanvas(
"c3",
"Yield1Pad",750,800);
833 c3->SetLeftMargin(0.15);
834 c3->SetRightMargin(0.07);
835 c3->SetBottomMargin(0.12);
836 c3->SetTopMargin(0.07);
840 gppCsystFD->Draw(
"e2same");
841 gppCsystdata->DrawClone(
"e2same");
842 gaaCsystFD->Draw(
"E2same");
843 gaaCsystRb->Draw(
"E2same");
844 gaaCsystdata->DrawClone(
"e2same");
845 hppC->DrawClone(
"Psame");
846 hAAC->DrawClone(
"Psame");
848 TLegend* legC=
new TLegend(0.53,0.55,0.89,0.69);
850 legC->SetHeader(Form(
"Centrality %s",centrality.Data()));
851 legC->SetFillColor(0);
852 legC->SetTextFont(42);
853 ent=legC->AddEntry(hppC,
"p-p rescaled reference",
"PL");
854 ent=legC->AddEntry(
"",
"(#pm 6% norm. unc. not shown)",
"");
856 ent=legC->AddEntry(hAAC,collSyst.Data(),
"PL");
861 TLegend* legSy=
new TLegend(0.566,0.715,0.89,0.86);
862 legSy->SetFillColor(0);
863 legSy->SetLineColor(kGray+2);
864 legSy->SetTextFont(42);
865 ent=legSy->AddEntry(gppCsystdata,
"Syst. unc. from Data",
"F");
866 ent=legSy->AddEntry(gppCsystFD,
"Syst. unc. from FONLL feed-down corr.",
"F");
867 ent=legSy->AddEntry(gaaCsystRb,
"Syst. unc. from #it{R}_{AA} feed-down",
"F");
870 c3->SaveAs(Form(
"%s-Yields_1pad_method%d_optErrFD%d_br%d.eps",mesName.Data(),
method,
optErrFD,correctForBR));
874 TH2F *hemptyr=
new TH2F(
"hemptyr",
"",100,0.,
binlim[nPtBins]*1.02,100,0.,1.7);
875 hemptyr->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
876 hemptyr->GetYaxis()->SetTitle(Form(
"#it{R}_{AA} (prompt %s)",mesSymb.Data()));
877 hemptyr->GetYaxis()->SetTitleOffset(1.2);
878 hemptyr->SetStats(0);
880 TCanvas* c5=
new TCanvas(
"c5",
"RAAcheck");
882 hRAAC->SetLineWidth(2);
883 hRAAC->SetMarkerStyle(20);
884 hRAAC->SetMarkerColor(1);
885 hRAAC->SetLineColor(1);
886 hRAAC->SetMinimum(0.);
887 hRAAC->SetMaximum(1.2);
888 hcheckRAAC->SetMarkerStyle(24);
889 hcheckRAAC->SetMarkerSize(1.2);
890 hcheckRAAC->SetMarkerColor(2);
891 hraaCcheck2->SetMarkerStyle(25);
892 hraaCcheck2->SetMarkerColor(6);
893 hraaCcheck2->SetMarkerSize(1.5);
895 graaC->SetFillColor(kGray);
897 graaC->Draw(
"E2same");
898 hRAAC->Draw(
"PEsame");
899 hraaCcheck2->Draw(
"PSAME");
900 hcheckRAAC->Draw(
"PSAME");
901 TLegend* legr=
new TLegend(0.7,0.7,0.89,0.89);
902 ent=legr->AddEntry(hRAAC,Form(
"%s%%",centrality.Data()),
"PL");
903 legr->SetFillColor(0);
904 legr->SetTextFont(42);
923 if(TMath::Abs(
normToCsec-1)>0.001) type=
"CrossSec";
924 TFile* outfil=
new TFile(Form(
"%s%s_method%d_fd%d_br%d.root",mesName.Data(),type.Data(),
method,
optErrFD,correctForBR),
"recreate");
927 gppCsystdata->Write();
931 gaaCsystdata->Write();
932 gaaCsystTot->Write();
934 hfPromptCent->Write();
935 hfPromptMinNb->Write();
936 hfPromptMaxNb->Write();
937 hfPromptMinfc->Write();
938 hfPromptMaxfc->Write();
939 systematicsABcent->SetName(
"AliHFSystErrAA");
940 systematicsABcent->Write();
941 if(systematicsPP) systematicsPP->Write();
951 Int_t theBin=heff->FindBin(pt);
952 Double_t errRel=heff->GetBinError(theBin)/heff->GetBinContent(theBin);
954 err += (errRel*errRel);
960 dataSystUp = TMath::Sqrt(errUp);
961 dataSystDown = TMath::Sqrt(errDown);
963 printf(
"Pt %f Bin %d Eff %f RelErrEff %f TotSyst +%f -%f\n",pt,theBin,heff->GetBinContent(theBin),errRel,dataSystUp,dataSystDown);
void SetCentrality(TString centrality)
void ComputeDmesonYield()
Double_t GetTotalSystErr(Double_t pt, Double_t feeddownErr=0) const
Double_t binlim[nPtBins+1]
void Init(Int_t decay)
Function to initialize the variables/histograms.
void SetCollisionType(Int_t type)
void SetRunNumber(Int_t number)
Bool_t PbPbDataSyst(AliHFSystErr *syst, TH1D *heff, Double_t pt, Double_t &dataSystUp, Double_t &dataSystDown)