1 #if !defined(__CINT__) || defined(__MAKECINT__) 13 #include <TPaveText.h> 15 #include <TLegendEntry.h> 16 #include <TDatabasePDG.h> 85 TH1F* histof=(TH1F*)histo->Clone(Form(
"%s_Fl",histo->GetName()));
97 TCanvas *cTest=
new TCanvas(
"cTest",
"cTest",800,800);
101 hReflModif->SetLineColor(kRed);
102 hSigModif->SetLineColor(kBlue);
104 hReflModif->Draw(
"same");
105 cTest->SaveAs(Form(
"figures/cTest%d.eps",iPtBin));
107 Double_t fixSoverRefAt=
rOverSmodif*(hReflModif->Integral(hReflModif->FindBin(minFit*1.0001),hReflModif->FindBin(maxFit*0.999))/hSigModif->Integral(hSigModif->FindBin(minFit*1.0001),hSigModif->FindBin(maxFit*0.999)));
110 Printf(
"SOMETHING WENT WRONG WHILE SETTINGS REFLECTIONS TEMPLATE");
127 TF1* fgfit=(TF1*)hPulls->GetListOfFunctions()->FindObject(
"gaus");
128 TLatex* tg1=
new TLatex(0.2,0.8,Form(
"Gauss mean = %.2f#pm%.2f",fgfit->GetParameter(1),fgfit->GetParError(1)));
131 TLatex* tg2=
new TLatex(0.2,0.7,Form(
"Gauss #sigma = %.2f#pm%.2f",fgfit->GetParameter(2),fgfit->GetParError(2)));
140 TF1 *fp2=
new TF1(
"fp2",
"pol2",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
142 for(
Int_t i=3;i<=h->GetNbinsX()-3;i++){
143 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(i-2),h->GetXaxis()->GetBinUpEdge(i+2));
144 h->SetBinContent(i,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(i),h->GetXaxis()->GetBinUpEdge(i)))/h->GetBinWidth(i));
147 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(5));
148 h->SetBinContent(2,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(2),h->GetXaxis()->GetBinUpEdge(2)))/h->GetBinWidth(2));
150 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(4));
151 h->SetBinContent(1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(1)))/h->GetBinWidth(1));
154 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-4),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
155 h->SetBinContent(h->GetNbinsX()-1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()-1)))/h->GetBinWidth(h->GetNbinsX()-1));
157 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-3),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
158 h->SetBinContent(h->GetNbinsX(),(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX())))/h->GetBinWidth(h->GetNbinsX()));
166 if(isXpt==1)h->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
169 h->SetMarkerStyle(21);
170 h->GetYaxis()->SetTitleOffset(1.8);
171 h->SetMarkerColor(kBlack);
172 h->SetMarkerSize(1.0);
173 h->SetLineColor(kBlack);
178 h->SetMarkerStyle(25);
179 h->GetYaxis()->SetTitleOffset(1.8);
180 h->SetMarkerColor(4);
181 h->SetMarkerSize(1.0);
187 h->SetMarkerStyle(22);
188 h->GetYaxis()->SetTitleOffset(1.8);
189 h->SetMarkerColor(kGreen+2);
190 h->SetMarkerSize(1.0);
191 h->SetLineColor(kGreen+2);
196 h->SetMarkerStyle(27);
197 h->GetYaxis()->SetTitleOffset(1.8);
198 h->SetMarkerColor(6);
199 h->SetMarkerSize(1.0);
212 else if(ndivisions<5){
215 else if(ndivisions<7){
219 else if(ndivisions<=8){
223 else if(ndivisions<10){
227 else if(ndivisions<13){
231 else if(ndivisions<17){
248 TF1 *f=
new TF1(
"GausPlusLine",
"[0]*1./(TMath::Sqrt(2.*TMath::Pi())*[2])*TMath::Exp(-(x-[1])*(x-[1])/(2.*[2]*[2]))+[3]+[4]*x",minRange,maxRange);
250 f->SetParameter(1,
massD);
251 f->SetParLimits(0,0.,1.e+7);
252 f->SetParLimits(1,1.8,1.92);
253 f->SetParameter(2,0.010);
254 f->SetParLimits(2,0,0.1);
255 f->SetParameter(3,0.);
269 for(
Int_t iMassBin=1; iMassBin<hRatio->GetNbinsX(); iMassBin++){
270 Double_t bce=hRatio->GetBinCenter(iMassBin);
272 Double_t bco=hRatio->GetBinContent(iMassBin);
273 if(bco>norm) norm=bco;
278 TF1* func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
279 Double_t norml=func0->GetParameter(0);
281 func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
282 Double_t normh=func0->GetParameter(0);
283 norm=TMath::Max(norml,normh);
292 TString dirName=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffix.Data());
293 TString lstName=Form(
"coutput%s%s",meson.Data(),suffix.Data());
294 TString dirNameMC=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffixMC.Data());
295 TString lstNameMC=Form(
"coutput%s%s",meson.Data(),suffixMC.Data());
298 if(fileName.Contains(
"FAST") && !fileName.Contains(
"wSDD")){
299 suffix.Prepend(
"FAST_");
300 }
else if(!fileName.Contains(
"FAST") && fileName.Contains(
"wSDD")){
301 suffix.Prepend(
"wSDD_");
303 if(fileNameMC.Contains(
"_G3")) suffix.Append(
"_Geant3MC");
304 else if(fileNameMC.Contains(
"_G4")) suffix.Append(
"_Geant4MC");
307 if(meson==
"Dplus")
massD=TDatabasePDG::Instance()->GetParticle(411)->Mass();
308 else if(meson==
"Dzero")
massD=TDatabasePDG::Instance()->GetParticle(421)->Mass();
310 TFile*
fil=
new TFile(fileName.Data());
311 TDirectoryFile* df=(TDirectoryFile*)fil->Get(dirName.Data());
315 TH1F* hnEv=
new TH1F(
"hEvForNorm",
"events for normalization",1,0,1);
326 TH3F* h3d=(
TH3F*)l->FindObject(
"hMassVsPtVsY");
327 TH3F* h3dr=(
TH3F*)l->FindObject(
"hMassVsPtVsYRot");
328 TH3F* h3dme=(
TH3F*)l->FindObject(
"hMassVsPtVsYME");
329 TH3F* h3dmepp=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSpp");
330 TH3F* h3dmemm=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSmm");
331 TH2F* hpoolMix=(
TH2F*)l->FindObject(
"hMixingsPerPool");
332 TH2F* hpoolEv=(
TH2F*)l->FindObject(
"hEventsPerPool");
333 TH3F* h3dlsp=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSpp");
334 TH3F* h3dlsm=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSmm");
339 TFile* filMC=
new TFile(fileNameMC.Data());
340 if(filMC && filMC->IsOpen()){
341 TDirectoryFile* dfMC=(TDirectoryFile*)filMC->Get(dirNameMC.Data());
342 TList* lMC=(
TList*)dfMC->Get(lstNameMC.Data());
345 printf(
"Fit to MC inv. mass spectra failed\n");
349 h3drefl=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
350 h3dmcsig=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
357 if(
fixMean) sigConf+=
"FixedMean";
359 TCanvas* cem=
new TCanvas(
"cem",
"Pools",1200,600);
362 gPad->SetRightMargin(0.12);
363 gPad->SetLeftMargin(0.12);
364 hpoolMix->GetXaxis()->SetTitle(
"zVertex");
365 hpoolMix->GetYaxis()->SetTitle(
"Multiplicity");
366 hpoolMix->GetYaxis()->SetTitleOffset(1.4);
367 hpoolMix->Draw(
"colztext");
369 gPad->SetRightMargin(0.12);
370 gPad->SetLeftMargin(0.12);
371 hpoolEv->Draw(
"colztext");
372 hpoolEv->GetXaxis()->SetTitle(
"zVertex");
373 hpoolEv->GetYaxis()->SetTitle(
"Multiplicity");
374 hpoolEv->GetYaxis()->SetTitleOffset(1.4);
377 TCanvas* c1=
new TCanvas(
"c1",
"Mass",1200,800);
380 TCanvas* c2=
new TCanvas(
"c2",
"Mass-Bkg Rot",1200,800);
382 TCanvas* c2pulls=
new TCanvas(
"c2pulls",
"Mass-Bkg Rot pulls",1200,800);
384 TCanvas* c2residuals=
new TCanvas(
"c2residuals",
"Mass-Bkg Rot residuals",1200,800);
386 TCanvas* c2residualTrend=
new TCanvas(
"c2residualTrend",
"Mass-Bkg Rot residual trend vs. mass",1200,800);
388 TCanvas* c2pullTrend=
new TCanvas(
"c2pullTrend",
"Mass-Bkg Rot pull trend vs. mass",1200,800);
391 TCanvas* c3=
new TCanvas(
"c3",
"Mass-Bkg LS",1200,800);
393 TCanvas* c3pulls=
new TCanvas(
"c3pulls",
"Mass-Bkg LS pulls",1200,800);
395 TCanvas* c3residuals=
new TCanvas(
"c3residuals",
"Mass-Bkg LS residuals",1200,800);
397 TCanvas* c3residualTrend=
new TCanvas(
"c3residualTrend",
"Mass-Bkg LS residual trend vs. mass",1200,800);
399 TCanvas* c3pullTrend=
new TCanvas(
"c3pullTrend",
"Mass-Bkg LS pull trend vs. mass",1200,800);
402 TCanvas* c4=
new TCanvas(
"c4",
"Mass-Bkg EM",1200,800);
404 TCanvas* c4pulls=
new TCanvas(
"c4pulls",
"Mass-Bkg EM pulls",1200,800);
406 TCanvas* c4residuals=
new TCanvas(
"c4residuals",
"Mass-Bkg EM residuals",1200,800);
408 TCanvas* c4residualTrend=
new TCanvas(
"c4residualTrend",
"Mass-Bkg EM residual trend vs. mass",1200,800);
410 TCanvas* c4pullTrend=
new TCanvas(
"c4pullTrend",
"Mass-Bkg EM pull trend vs. mass",1200,800);
415 TCanvas *c5pulls=0x0;
416 TCanvas *c5residuals=0x0;
417 TCanvas *c5residualTrend=0x0;
418 TCanvas *c5pullTrend=0x0;
421 c5=
new TCanvas(
"c5",
"Mass SB Fit",1200,800);
423 c5sub=
new TCanvas(
"c5sub",
"Mass-Bkg SB",1200,800);
425 c5pulls=
new TCanvas(
"c5pulls",
"Mass-Bkg SB pulls",1200,800);
427 c5residuals=
new TCanvas(
"c5residuals",
"Mass-Bkg SB residuals",1200,800);
429 c5residualTrend=
new TCanvas(
"c5residualTrend",
"Mass-Bkg SB residual trend vs. mass",1200,800);
431 c5pullTrend=
new TCanvas(
"c5pullTrend",
"Mass-Bkg SB pull trend vs. mass",1200,800);
435 TCanvas *cCompareResidualTrends=
new TCanvas(
"cCompareResidualTrends",
"cCompareResidualTrends",1200,800);
444 TH1F* hRawYieldRot=
new TH1F(
"hRawYieldRot",
" ; p_{T} (GeV/c) ; Raw yield",
nPtBins,
binLims);
445 TH1F* hRawYieldLS=
new TH1F(
"hRawYieldLS",
" ; p_{T} (GeV/c) ; Raw yield",
nPtBins,
binLims);
446 TH1F* hRawYieldME=
new TH1F(
"hRawYieldME",
" ; p_{T} (GeV/c) ; Raw yield",
nPtBins,
binLims);
447 TH1F* hRawYieldSB=
new TH1F(
"hRawYieldSB",
" ; p_{T} (GeV/c) ; Raw yield",
nPtBins,
binLims);
449 TH1F* hRelStatRot=
new TH1F(
"hRelStatRot",
" ; p_{T} (GeV/c) ; Relative stat. unc.",
nPtBins,
binLims);
450 TH1F* hRelStatLS=
new TH1F(
"hRelStatLS",
" ; p_{T} (GeV/c) ; Relative stat. unc.",
nPtBins,
binLims);
451 TH1F* hRelStatME=
new TH1F(
"hRelStatME",
" ; p_{T} (GeV/c) ; Relative stat. unc.",
nPtBins,
binLims);
452 TH1F* hRelStatSB=
new TH1F(
"hRelStatSB",
" ; p_{T} (GeV/c) ; Relative stat. unc.",
nPtBins,
binLims);
484 TH1F* hRawYieldRotBC=
new TH1F(
"hRawYieldRotBC",
"BC yield (rotational background)",
nPtBins,
binLims);
485 TH1F* hRawYieldLSBC=
new TH1F(
"hRawYieldLSBC",
"BC yield (like-sign background)",
nPtBins,
binLims);
486 TH1F* hRawYieldMEBC=
new TH1F(
"hRawYieldMEBC",
"BC yield (mixed-event background)",
nPtBins,
binLims);
487 TH1F* hRawYieldSBBC=
new TH1F(
"hRawYieldSBBC",
"BC yield (side-band fit background)",
nPtBins,
binLims);
489 TH1F* hInvMassHistoBinWidthRot=
new TH1F(
"hInvMassHistoBinWidthRot",
"",
nPtBins,
binLims);
490 TH1F* hInvMassHistoBinWidthLS=
new TH1F(
"hInvMassHistoBinWidthLS",
"",
nPtBins,
binLims);
491 TH1F* hInvMassHistoBinWidthME=
new TH1F(
"hInvMassHistoBinWidthME",
"",
nPtBins,
binLims);
492 TH1F* hInvMassHistoBinWidthSB=
new TH1F(
"hInvMassHistoBinWidthSB",
"",
nPtBins,
binLims);
494 TLatex* tME=
new TLatex(0.65,0.82,
"MixEv +- pairs");
496 TLatex* tMEpp=
new TLatex(0.65,0.75,
"MixEv ++ pairs");
498 TLatex* tMEmm=
new TLatex(0.65,0.68,
"MixEv -- pairs");
501 TF1 *fpeak=
new TF1(
"fpeak",
"[0]*1./(TMath::Sqrt(2.*TMath::Pi())*[2])*TMath::Exp(-(x-[1])*(x-[1])/(2.*[2]*[2]))",
minMass,
maxMass);
504 TDirectory *current = gDirectory;
505 TFile*
fout=
new TFile(Form(
"outputMassFits_%s_%s.root",sigConf.Data(),suffix.Data()),
"recreate");
512 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
513 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
514 TH1D* hMassPtBin=h3d->ProjectionX(Form(
"hMassPtBin%d",iPtBin),bin1,bin2);
515 TH1D* hMassPtBinr=h3dr->ProjectionX(Form(
"hMassPtBinr%d",iPtBin),bin1,bin2);
516 TH1D* hMassPtBinme=h3dme->ProjectionX(Form(
"hMassPtBinme%d",iPtBin),bin1,bin2);
517 TH1D* hMassPtBinmeLSpp=h3dmepp->ProjectionX(Form(
"hMassPtBinmeLSpp%d",iPtBin),bin1,bin2);
518 TH1D* hMassPtBinmeLSmm=h3dmemm->ProjectionX(Form(
"hMassPtBinmeLSmm%d",iPtBin),bin1,bin2);
521 Int_t bin1MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin]);
522 Int_t bin2MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
523 hMCReflPtBin=h3drefl->ProjectionX(Form(
"hMCReflPtBin%d",iPtBin),bin1MC,bin2MC);
524 hMCSigPtBin=h3dmcsig->ProjectionX(Form(
"hMCSigPtBin%d",iPtBin),bin1MC,bin2MC);
527 TH1D* hMassPtBinlsp=0x0;
528 TH1D* hMassPtBinlsm=0x0;
529 TH1D* hMassPtBinls=0x0;
531 hMassPtBinlsp=h3dlsp->ProjectionX(Form(
"hMassPtBinlsp%d",iPtBin),bin1,bin2);
532 hMassPtBinlsm=h3dlsm->ProjectionX(Form(
"hMassPtBinlsm%d",iPtBin),bin1,bin2);
533 hMassPtBinls=(
TH1D*)hMassPtBinlsp->Clone(Form(
"hMassPtBinls%d",iPtBin));
534 hMassPtBinls->Reset();
535 for(
Int_t iBin=1; iBin<=hMassPtBinlsp->GetNbinsX(); iBin++){
536 Double_t np=hMassPtBinlsp->GetBinContent(iBin);
537 Double_t nm=hMassPtBinlsm->GetBinContent(iBin);
539 Double_t enp=hMassPtBinlsp->GetBinError(iBin);
540 Double_t enm=hMassPtBinlsm->GetBinError(iBin);
542 if(tt>0) ett=2./tt*TMath::Sqrt(np*np*enm*enm+nm*nm*enp*enp);
543 hMassPtBinls->SetBinContent(iBin,tt);
544 hMassPtBinls->SetBinError(iBin,ett);
548 hMassPtBinls->SetLineColor(kGreen+1);
556 hMassPtBin->SetLineColor(1);
557 hMassPtBinr->SetLineColor(4);
558 hMassPtBinme->SetLineColor(kOrange+1);
559 hMassPtBinmeLSpp->SetLineColor(kGreen+2);
560 hMassPtBinmeLSmm->SetLineColor(kCyan);
561 hMassPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
562 hMassPtBinr->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
563 hMassPtBinme->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
564 TH1D* hRatioMEpp=(
TH1D*)hMassPtBinmeLSpp->Clone(Form(
"hRatioPtBinmeLSpp%d",iPtBin));
565 hRatioMEpp->Divide(hMassPtBinme);
566 TH1D* hRatioMEmm=(
TH1D*)hMassPtBinmeLSmm->Clone(Form(
"hRatioPtBinmeLSmm%d",iPtBin));
567 hRatioMEmm->Divide(hMassPtBinme);
568 TH1D* hMassPtBinmeAll=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioPtBinmeAll%d",iPtBin));
569 hMassPtBinmeAll->Add(hMassPtBinmeLSpp);
570 hMassPtBinmeAll->Add(hMassPtBinmeLSmm);
571 hMassPtBinmeAll->SetLineColor(kRed);
572 TH1D* hRatioME=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioME%d",iPtBin));
573 hRatioME->Divide(hMassPtBin);
574 TH1D* hRatioMEAll=(
TH1D*)hMassPtBinmeAll->Clone(Form(
"hRatioMEAll%d",iPtBin));
575 hRatioMEAll->Divide(hMassPtBin);
578 TCanvas* c0=
new TCanvas(Form(
"CBin%d",iPtBin),Form(
"Bin%d norm",iPtBin),1000,700);
581 TH1D* hRatio=(
TH1D*)hMassPtBinr->Clone(
"hRatio");
582 hRatio->Divide(hMassPtBin);
584 hRatio->GetYaxis()->SetTitle(
"Rotational/All");
585 hRatio->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
587 hMassPtBinr->Scale(1./normRot);
589 hMassPtBinme->GetYaxis()->SetTitle(
"Entries (EvMix)");
590 hMassPtBinme->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
591 hMassPtBinme->DrawCopy();
592 hMassPtBinmeLSpp->Draw(
"same");
593 hMassPtBinmeLSmm->Draw(
"same");
594 tME->SetTextColor(hMassPtBinme->GetLineColor());
595 tMEpp->SetTextColor(hMassPtBinmeLSpp->GetLineColor());
596 tMEmm->SetTextColor(hMassPtBinmeLSmm->GetLineColor());
602 hRatioMEpp->SetMinimum(0.4);
603 hRatioMEpp->SetMaximum(0.6);
604 hRatioMEpp->GetYaxis()->SetTitle(
"ME with LS / ME with OS");
605 hRatioMEpp->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
606 hRatioMEmm->Draw(
"same");
609 hRatioME->SetMaximum(hRatioMEAll->GetMaximum()*1.05);
610 hRatioMEAll->Draw(
"same");
611 hRatioME->GetYaxis()->SetTitle(
"EvMix/All");
612 hRatioME->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
616 hMassPtBinme->Scale(1./normME);
617 hMassPtBinmeAll->Scale(1./normMEAll);
618 printf(
"Background norm bin %d DONE\n",iPtBin);
622 hMassPtBin->SetMinimum(0);
624 hMassPtBin->GetYaxis()->SetTitle(
"Counts");
625 hMassPtBin->GetYaxis()->SetTitleOffset(2.);
626 hMassPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
627 hMassPtBinr->Draw(
"same");
629 else hMassPtBinmeAll->Draw(
"same");
630 if(hMassPtBinls) hMassPtBinls->Draw(
"same");
632 TLegend* leg=
new TLegend(0.5,0.6,0.89,0.89);
633 leg->SetFillStyle(0);
634 leg->AddEntry(hMassPtBin,
"All candidates",
"L")->SetTextColor(hMassPtBin->GetLineColor());
635 leg->AddEntry(hMassPtBinr,
"Background (rotations)",
"L")->SetTextColor(hMassPtBinr->GetLineColor());
636 if(!
useEMwithLS) leg->AddEntry(hMassPtBinme,
"Background (ME)",
"L")->SetTextColor(hMassPtBinme->GetLineColor());
637 else leg->AddEntry(hMassPtBinmeAll,
"Background (ME)",
"L")->SetTextColor(hMassPtBinmeAll->GetLineColor());
638 if(hMassPtBinls) leg->AddEntry(hMassPtBinls,
"Like-sign",
"L")->SetTextColor(hMassPtBinls->GetLineColor());
643 TH1D* hMassSubRot=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubRot_bin%d",iPtBin));
644 hMassSubRot->Add(hMassPtBinr,-1);
645 hMassSubRot->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Rotational",
binLims[iPtBin],
binLims[iPtBin+1]));
646 TH1D* hMassSubME=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubME_bin%d",iPtBin));
648 else hMassSubME->Add(hMassPtBinmeAll,-1);
649 hMassSubME->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Mixed Ev",
binLims[iPtBin],
binLims[iPtBin+1]));
650 TH1D* hMassSubLS=0x0;
652 hMassSubLS=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubLS_bin%d",iPtBin));
653 hMassSubLS->Add(hMassPtBinls,-1);
654 hMassSubLS->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Like Sign",
binLims[iPtBin],
binLims[iPtBin+1]));
659 hMassSubRot->Write();
661 if(hMassPtBinls) hMassSubLS->Write();
662 if(hMCReflPtBin) hMCReflPtBin->Write();
663 if(hMCSigPtBin) hMCSigPtBin->Write();
670 hRebin->SetBinContent(iPtBin+1,
rebin[iPtBin]);
673 Int_t bkgToFillSB=6+nDegreeBackPol[iPtBin];
675 hBkgFitFunc->SetBinContent(iPtBin+1,bkgToFill);
676 hBkgFitFuncSB->SetBinContent(iPtBin+1,bkgToFillSB);
684 if(hMassPtBinls) out2=fitterLS[iPtBin]->
MassFitter(0);
690 TH1D *hMassDirectFit=(
TH1D*)hMassPtBin->Clone(Form(
"hMassDirectFit_bin%d",iPtBin));
697 if(out4 && fitterSB[iPtBin]->GetMassFunc()){
699 fitterSB[iPtBin]->
DrawHere(gPad,3,0);
700 hRawYieldSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield());
701 hRawYieldSB->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError());
702 if(fitterSB[iPtBin]->GetRawYield()>0){
703 hRelStatSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError()/fitterSB[iPtBin]->GetRawYield());
704 hRelStatSB->SetBinError(iPtBin+1,0.00000001);
706 fitterSB[iPtBin]->
Background(3.,background,ebkg);
707 hSignifSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterSB[iPtBin]->GetRawYield()));
708 hSignifSB->SetBinError(iPtBin+1,0.00000001);
709 hSoverBSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield()/background);
710 hSoverBSB->SetBinError(iPtBin+1,0.00000001);
711 hInvMassHistoBinWidthSB->SetBinContent(iPtBin+1,hMassDirectFit->GetBinWidth(1));
712 hGausMeanSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMean());
713 hGausMeanSB->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetMeanUncertainty());
714 hGausSigmaSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetSigma());
715 hGausSigmaSB->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetSigmaUncertainty());
716 hChiSqSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetReducedChiSquare());
717 hChiSqSB->SetBinError(iPtBin+1,0.00001);
718 hNdfSB->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMassFunc()->GetNDF());
719 hNdfSB->SetBinError(iPtBin+1,0.00001);
727 TH1F* hsubTemp=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBack%d",hMassDirectFit->GetName(),iPtBin));
728 TH1F* hsubTempAllRange=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBackAllRange%d",hMassDirectFit->GetName(),iPtBin));
732 for(
Int_t jst=1;jst<=hsubTemp->GetNbinsX();jst++){
733 Double_t backg=funcBkg->Integral(hsubTemp->GetBinLowEdge(jst),hsubTemp->GetBinLowEdge(jst)+hsubTemp->GetBinWidth(jst))/hsubTemp->GetBinWidth(jst);
734 Double_t tot=funcAll->Integral(hsubTempAllRange->GetBinLowEdge(jst),hsubTempAllRange->GetBinLowEdge(jst)+hsubTempAllRange->GetBinWidth(jst))/hsubTempAllRange->GetBinWidth(jst);
735 hsubTemp->SetBinContent(jst,hsubTemp->GetBinContent(jst)-backg);
736 hsubTempAllRange->SetBinContent(jst,hsubTempAllRange->GetBinContent(jst)-tot);
738 hsubTemp->SetLineColor(kBlue);
739 hsubTempAllRange->SetLineColor(kGray+2);
742 for(
Int_t ibs=1; ibs<hsubTemp->GetNbinsX(); ibs++){
743 Double_t binc=hsubTemp->GetBinCenter(ibs);
745 Double_t yl=hsubTemp->GetBinContent(ibs)-hsubTemp->GetBinError(ibs);
746 Double_t yu=hsubTemp->GetBinContent(ibs)+hsubTemp->GetBinError(ibs);
751 if(ymax>0) ymax*=1.2;
753 if(ymin<0) ymin*=1.2;
756 hsubTemp->SetMinimum(ymin);
757 hsubTemp->SetMaximum(ymax);
758 hsubTemp->SetMarkerStyle(20);
759 hsubTemp->SetMarkerColor(hsubTemp->GetLineColor());
760 hsubTemp->DrawCopy();
761 hsubTempAllRange->DrawCopy(
"same");
762 hsubTemp->DrawCopy(
"same");
764 fpeak->SetParameter(0,funcAll->GetParameter(nDegreeBackPol[iPtBin]+1));
765 fpeak->SetParameter(1,funcAll->GetParameter(nDegreeBackPol[iPtBin]+2));
766 fpeak->SetParameter(2,funcAll->GetParameter(nDegreeBackPol[iPtBin]+3));
767 fpeak->DrawCopy(
"same");
771 hRawYieldSBBC->SetBinContent(iPtBin+1,bc);
772 hRawYieldSBBC->SetBinError(iPtBin+1,errbc);
774 c5pulls->cd(iPtBin+1);
775 TH1F *hPulls=
new TH1F();
776 TH1F *hPullsTrend=
new TH1F();
777 TH1F *hResidualTrend=
new TH1F();
783 c5residuals->cd(iPtBin+1);
787 cCompareResidualTrends->cd(iPtBin+1);
788 hResidualTrend->Draw();
790 c5residualTrend->cd(iPtBin+1);
791 hResidualTrend->Draw();
793 c5pullTrend->cd(iPtBin+1);
797 delete hMassDirectFit;
802 if(out1 && fitterRot[iPtBin]->GetMassFunc()){
803 fitterRot[iPtBin]->
DrawHere(gPad,3,0);
805 hRawYieldRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield());
806 hRawYieldRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError());
807 Double_t minBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()-3.*fitterRot[iPtBin]->GetSigma());
808 Double_t maxBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()+3.*fitterRot[iPtBin]->GetSigma());
809 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
810 hSoverBRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield()/background);
811 hSoverBRot->SetBinError(iPtBin+1,0.000001);
812 hRelStatRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError()/fitterRot[iPtBin]->GetRawYield());
813 hRelStatRot->SetBinError(iPtBin+1,0.000001);
814 hSignifRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterRot[iPtBin]->GetRawYield()));
815 hSignifRot->SetBinError(iPtBin+1,0.00000001);
816 hInvMassHistoBinWidthRot->SetBinContent(iPtBin+1,hMassSubRot->GetBinWidth(1));
817 hGausMeanRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMean());
818 hGausMeanRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetMeanUncertainty());
819 hGausSigmaRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetSigma());
820 hGausSigmaRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetSigmaUncertainty());
821 hChiSqRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetReducedChiSquare());
822 hChiSqRot->SetBinError(iPtBin+1,0.00001);
823 hNdfRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMassFunc()->GetNDF());
824 hNdfRot->SetBinError(iPtBin+1,0.00001);
833 hRawYieldRotBC->SetBinContent(iPtBin+1,bc);
834 hRawYieldRotBC->SetBinError(iPtBin+1,errbc);
836 c2pulls->cd(iPtBin+1);
837 TH1F *hPullsTrend=
new TH1F();
838 TH1F *hPulls=
new TH1F();
839 TH1F *hResidualTrend=
new TH1F();
845 c2residuals->cd(iPtBin+1);
849 c2residualTrend->cd(iPtBin+1);
850 hResidualTrend->Draw();
851 cCompareResidualTrends->cd(iPtBin+1);
852 if(out4)hResidualTrend->Draw(
"same");
853 else hResidualTrend->Draw();
855 c2pullTrend->cd(iPtBin+1);
859 else hMassSubRot->Draw(
"");
863 if(out2 && fitterLS[iPtBin]->GetMassFunc()){
864 fitterLS[iPtBin]->
DrawHere(gPad,3,0);
865 hRawYieldLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield());
866 hRawYieldLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError());
867 Double_t minBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()-3.*fitterLS[iPtBin]->GetSigma());
868 Double_t maxBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()+3.*fitterLS[iPtBin]->GetSigma());
869 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
870 hSoverBLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield()/background);
871 hSoverBLS->SetBinError(iPtBin+1,0.000001);
872 hRelStatLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError()/fitterLS[iPtBin]->GetRawYield());
873 hRelStatLS->SetBinError(iPtBin+1,0.0000001);
874 hSignifLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterLS[iPtBin]->GetRawYield()));
875 hSignifLS->SetBinError(iPtBin+1,0.00000001);
876 hInvMassHistoBinWidthLS->SetBinContent(iPtBin+1,hMassSubLS->GetBinWidth(1));
877 hGausMeanLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMean());
878 hGausMeanLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetMeanUncertainty());
879 hGausSigmaLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetSigma());
880 hGausSigmaLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetSigmaUncertainty());
881 hChiSqLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetReducedChiSquare());
882 hChiSqLS->SetBinError(iPtBin+1,0.00001);
883 hNdfLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMassFunc()->GetNDF());
884 hNdfLS->SetBinError(iPtBin+1,0.00001);
894 hRawYieldLSBC->SetBinContent(iPtBin+1,bc);
895 hRawYieldLSBC->SetBinError(iPtBin+1,errbc);
897 c3pulls->cd(iPtBin+1);
898 TH1F *hPullsTrend=
new TH1F();
899 TH1F *hPulls=
new TH1F();
900 TH1F *hResidualTrend=
new TH1F();
906 c3residuals->cd(iPtBin+1);
910 c3residualTrend->cd(iPtBin+1);
911 hResidualTrend->Draw();
913 cCompareResidualTrends->cd(iPtBin+1);
914 if(out4||out1)hResidualTrend->Draw(
"same");
915 else hResidualTrend->Draw();
917 c3pullTrend->cd(iPtBin+1);
920 else if(hMassPtBinls) hMassSubLS->Draw(
"");
923 if(out3 && fitterME[iPtBin]->GetMassFunc()){
924 fitterME[iPtBin]->
DrawHere(gPad,3,0);
925 hRawYieldME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield());
926 hRawYieldME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetRawYieldError());
927 Double_t minBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()-3.*fitterME[iPtBin]->GetSigma());
928 Double_t maxBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()+3.*fitterME[iPtBin]->GetSigma());
929 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
930 hSoverBME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield()/background);
931 hSoverBME->SetBinError(iPtBin+1,0.000001);
932 hRelStatME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYieldError()/fitterME[iPtBin]->GetRawYield());
933 hRelStatME->SetBinError(iPtBin+1,0.000001);
934 hSignifME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterME[iPtBin]->GetRawYield()));
935 hSignifME->SetBinError(iPtBin+1,0.00000001);
936 hInvMassHistoBinWidthME->SetBinContent(iPtBin+1,hMassSubME->GetBinWidth(1));
937 hGausMeanME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMean());
938 hGausMeanME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetMeanUncertainty());
939 hGausSigmaME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetSigma());
940 hGausSigmaME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetSigmaUncertainty());
941 hChiSqME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetReducedChiSquare());
942 hChiSqME->SetBinError(iPtBin+1,0.00001);
943 hNdfME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMassFunc()->GetNDF());
944 hNdfME->SetBinError(iPtBin+1,0.00001);
953 hRawYieldMEBC->SetBinContent(iPtBin+1,bc);
954 hRawYieldMEBC->SetBinError(iPtBin+1,errbc);
957 c4pulls->cd(iPtBin+1);
958 TH1F *hPullsTrend=
new TH1F();
959 TH1F *hPulls=
new TH1F();
960 TH1F *hResidualTrend=
new TH1F();
965 c4residuals->cd(iPtBin+1);
969 c4residualTrend->cd(iPtBin+1);
970 hResidualTrend->Draw();
972 cCompareResidualTrends->cd(iPtBin+1);
973 if(out4||out1||out2)hResidualTrend->Draw(
"same");
974 else hResidualTrend->Draw();
976 c4pullTrend->cd(iPtBin+1);
979 else hMassSubME->Draw(
"");
987 path.Append(
"/figures");
988 if(
gSystem->AccessPathName(path.Data())){
989 gROOT->ProcessLine(Form(
".!mkdir -p %s",path.Data()));
993 c1->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_NoBkgSub.eps",sigConf.Data(),suffix.Data()));
994 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
995 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
996 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
998 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
999 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.eps",sigConf.Data(),suffix.Data()));
1003 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
1004 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
1005 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
1007 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
1008 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
1009 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
1011 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
1012 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
1013 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
1015 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
1016 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
1017 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
1020 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
1021 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
1022 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
1023 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
1030 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1031 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1032 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1034 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1035 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1036 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1038 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1039 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1040 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1042 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1043 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1044 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1046 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1047 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1048 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1051 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1052 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.root",sigConf.Data(),suffix.Data()));
1053 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1054 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1055 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1056 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1061 hRawYieldRot->SetMarkerStyle(21);
1062 hRawYieldLS->SetMarkerStyle(22);
1063 hRawYieldLS->SetMarkerColor(kGreen+2);
1064 hRawYieldLS->SetLineColor(kGreen+2);
1065 hRawYieldME->SetMarkerStyle(25);
1066 hRawYieldME->SetMarkerColor(4);
1067 hRawYieldME->SetLineColor(4);
1068 hRawYieldSB->SetMarkerStyle(27);
1069 hRawYieldSB->SetMarkerColor(6);
1070 hRawYieldSB->SetLineColor(6);
1073 TCanvas* cry=
new TCanvas(
"cry",
"RawYield",800,700);
1074 cry->SetLeftMargin(0.15);
1075 hRawYieldRot->Draw(
"P");
1076 hRawYieldRot->SetMinimum(0);
1077 hRawYieldRot->GetYaxis()->SetTitleOffset(1.8);
1078 Double_t max=hRawYieldRot->GetMaximum();
1079 if(hRawYieldLS->GetMaximum()>max)max=hRawYieldLS->GetMaximum();
1080 if(hRawYieldME->GetMaximum()>max)max=hRawYieldME->GetMaximum();
1082 if(hRawYieldSB->GetMaximum()>max)max=hRawYieldSB->GetMaximum();
1084 hRawYieldRot->SetMaximum(max*1.2);
1085 hRawYieldLS->Draw(
"PZSAME");
1086 hRawYieldME->Draw(
"PSAME");
1088 TLegend* legry=
new TLegend(0.7,0.7,0.89,0.89);
1089 legry->SetFillStyle(0);
1090 legry->SetBorderSize(0);
1091 legry->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1092 legry->AddEntry(hRawYieldLS,
"Like Sign",
"PL")->SetTextColor(kGreen+2);
1093 legry->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1095 legry->AddEntry(hRawYieldSB,
"Side-Band Fit",
"PL")->SetTextColor(6);
1098 if(
saveCanvasAsEps>0) cry->SaveAs(Form(
"figures/RawYield_%s_%s.eps",sigConf.Data(),suffix.Data()));
1099 if(
saveCanvasAsRoot) cry->SaveAs(Form(
"figures/RawYield_%s_%s.root",sigConf.Data(),suffix.Data()));
1103 TCanvas* cch2=
new TCanvas(
"cch2",
"Chi2",800,700);
1104 cch2->SetLeftMargin(0.15);
1105 hChiSqRot->SetMarkerStyle(21);
1106 hChiSqRot->Draw(
"P");
1107 hChiSqRot->SetMinimum(0);
1108 hChiSqRot->GetXaxis()->SetTitle(
"p_{T} (GeV/c)");
1109 hChiSqRot->GetYaxis()->SetTitle(
"#chi^{2}/ndf");
1110 hChiSqRot->GetYaxis()->SetTitleOffset(1.8);
1111 Double_t maxc=hChiSqRot->GetMaximum();
1112 if(hChiSqLS->GetMaximum()>maxc)maxc=hChiSqLS->GetMaximum();
1113 if(hChiSqME->GetMaximum()>maxc)maxc=hChiSqME->GetMaximum();
1115 if(hChiSqSB->GetMaximum()>maxc)maxc=hChiSqSB->GetMaximum();
1117 hChiSqRot->SetMaximum(maxc*1.2);
1119 hChiSqLS->SetMarkerStyle(22);
1120 hChiSqLS->SetMarkerColor(kGreen+2);
1121 hChiSqLS->SetLineColor(kGreen+2);
1122 hChiSqLS->Draw(
"PZSAME");
1123 hChiSqME->SetMarkerStyle(25);
1124 hChiSqME->SetMarkerColor(4);
1125 hChiSqME->SetLineColor(4);
1126 hChiSqME->Draw(
"PSAME");
1128 hChiSqSB->SetMarkerStyle(27);
1129 hChiSqSB->SetMarkerColor(6);
1130 hChiSqSB->SetLineColor(6);
1131 hChiSqSB->Draw(
"PSAME");
1134 if(
saveCanvasAsEps>0) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.eps",sigConf.Data(),suffix.Data()));
1135 if(
saveCanvasAsRoot) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.root",sigConf.Data(),suffix.Data()));
1137 TH1F* hRatioLSToME=(TH1F*)hRawYieldLS->Clone(
"hRatioLStoME");
1138 TH1F* hRatioRotToME=(TH1F*)hRawYieldRot->Clone(
"hRatioRottoME");
1139 TH1F* hRatioMEToME=(TH1F*)hRawYieldME->Clone(
"hRatioMEtoME");
1140 TH1F* hRatioSBToME=(TH1F*)hRawYieldSB->Clone(
"hRatioSBtoME");
1141 for(
Int_t ib=1; ib<=hRawYieldME->GetNbinsX(); ib++){
1142 Double_t yme=hRawYieldME->GetBinContent(ib);
1144 hRatioLSToME->SetBinContent(ib,hRawYieldLS->GetBinContent(ib)/yme);
1145 hRatioLSToME->SetBinError(ib,hRawYieldLS->GetBinError(ib)/yme);
1146 hRatioMEToME->SetBinContent(ib,hRawYieldME->GetBinContent(ib)/yme);
1147 hRatioMEToME->SetBinError(ib,hRawYieldME->GetBinError(ib)/yme);
1148 hRatioRotToME->SetBinContent(ib,hRawYieldRot->GetBinContent(ib)/yme);
1149 hRatioRotToME->SetBinError(ib,hRawYieldRot->GetBinError(ib)/yme);
1150 hRatioSBToME->SetBinContent(ib,hRawYieldSB->GetBinContent(ib)/yme);
1151 hRatioSBToME->SetBinError(ib,hRawYieldSB->GetBinError(ib)/yme);
1155 TCanvas* cry2=
new TCanvas(
"cry2",
"RawYield+Ratios",1400,700);
1158 gPad->SetLeftMargin(0.15);
1159 gPad->SetRightMargin(0.05);
1160 hRawYieldRot->Draw(
"P");
1161 hRawYieldLS->Draw(
"PZSAME");
1162 hRawYieldME->Draw(
"PSAME");
1164 hRawYieldSB->Draw(
"PSAME");
1168 hRatioLSToME->SetStats(0);
1169 hRatioLSToME->SetMinimum(0.3);
1170 hRatioLSToME->SetMaximum(1.7);
1171 hRatioLSToME->GetYaxis()->SetTitle(
"Ratio To EvMix");
1172 hRatioLSToME->Draw(
"same");
1173 hRatioRotToME->Draw(
"same");
1174 hRatioMEToME->Draw(
"same");
1175 hRatioSBToME->Draw(
"same");
1176 if(
saveCanvasAsEps>0) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.eps",sigConf.Data(),suffix.Data()));
1177 if(
saveCanvasAsRoot) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.root",sigConf.Data(),suffix.Data()));
1179 hRelStatRot->GetYaxis()->SetTitleOffset(1.8);
1180 hRelStatRot->SetMarkerStyle(21);
1181 hRelStatLS->SetMarkerStyle(22);
1182 hRelStatLS->SetMarkerColor(kGreen+2);
1183 hRelStatLS->SetLineColor(kGreen+2);
1184 hRelStatME->SetMarkerStyle(25);
1185 hRelStatME->SetMarkerColor(4);
1186 hRelStatME->SetLineColor(4);
1187 hRelStatSB->SetMarkerStyle(27);
1188 hRelStatSB->SetMarkerColor(6);
1189 hRelStatSB->SetLineColor(6);
1191 TCanvas* cry3=
new TCanvas(
"cry3",
"RawYield+Ratios+Unc",1800,600);
1194 gPad->SetLeftMargin(0.15);
1195 gPad->SetRightMargin(0.05);
1196 hRawYieldRot->Draw(
"P");
1197 hRawYieldLS->Draw(
"PZSAME");
1198 hRawYieldME->Draw(
"PSAME");
1200 hRawYieldSB->Draw(
"PSAME");
1204 hRatioLSToME->SetStats(0);
1205 hRatioLSToME->SetMinimum(0.3);
1206 hRatioLSToME->SetMaximum(1.7);
1207 hRatioLSToME->GetYaxis()->SetTitle(
"Ratio To EvMix");
1208 hRatioLSToME->Draw(
"same");
1209 hRatioRotToME->Draw(
"same");
1210 hRatioMEToME->Draw(
"same");
1211 hRatioSBToME->Draw(
"same");
1213 gPad->SetLeftMargin(0.15);
1214 gPad->SetRightMargin(0.05);
1215 hRelStatRot->SetStats(0);
1216 hRelStatRot->SetMinimum(0.04);
1217 hRelStatRot->SetMaximum(0.2);
1218 hRelStatRot->Draw();
1219 hRelStatLS->Draw(
"same");
1220 hRelStatME->Draw(
"same");
1223 if(
saveCanvasAsEps>0) cry3->SaveAs(Form(
"figures/RawYieldRatiosAndUnc_%s_%s.eps",sigConf.Data(),suffix.Data()));
1224 if(
saveCanvasAsRoot) cry3->SaveAs(Form(
"figures/RawYieldRatiosAndUnc_%s_%s.root",sigConf.Data(),suffix.Data()));
1229 cCompareResidualTrends->cd(1);
1230 TLegend *legRT=
new TLegend(*legry);
1231 legRT->SetX1NDC(0.12);
1232 legRT->SetY1NDC(0.7);
1233 legRT->SetX2NDC(0.3);
1234 legRT->SetY2NDC(0.9);
1238 TCanvas* cryBC=
new TCanvas(
"cryBC",
"RawYield with BC",800,700);
1239 cryBC->SetLeftMargin(0.15);
1240 hRawYieldRot->Draw(
"P");
1241 hRawYieldME->Draw(
"PSAME");
1242 hRawYieldLS->Draw(
"PZSAME");
1244 hRawYieldSB->Draw(
"PSAME");
1247 if(hRawYieldRotBC->GetMaximum()>max)max=hRawYieldRotBC->GetMaximum();
1248 if(hRawYieldLSBC->GetMaximum()>max)max=hRawYieldLSBC->GetMaximum();
1249 if(hRawYieldMEBC->GetMaximum()>max)max=hRawYieldMEBC->GetMaximum();
1251 if(hRawYieldSBBC->GetMaximum()>max)max=hRawYieldSBBC->GetMaximum();
1253 hRawYieldRot->SetMaximum(max*1.2);
1255 hRawYieldRotBC->SetMarkerStyle(21);
1256 hRawYieldRotBC->SetLineStyle(2);
1257 hRawYieldRotBC->Draw(
"PSAME");
1260 hRawYieldLSBC->SetMarkerStyle(22);
1261 hRawYieldLSBC->SetMarkerColor(kGreen+2);
1262 hRawYieldLSBC->SetLineColor(kGreen+2);
1263 hRawYieldLSBC->SetLineStyle(2);
1264 hRawYieldLSBC->Draw(
"PZSAME");
1266 hRawYieldMEBC->SetMarkerStyle(25);
1267 hRawYieldMEBC->SetMarkerColor(4);
1268 hRawYieldMEBC->SetLineColor(4);
1269 hRawYieldMEBC->SetLineStyle(2);
1270 hRawYieldMEBC->Draw(
"PSAME");
1272 hRawYieldSBBC->SetMarkerStyle(27);
1273 hRawYieldSBBC->SetMarkerColor(6);
1274 hRawYieldSBBC->SetLineColor(6);
1275 hRawYieldSBBC->SetLineStyle(2);
1276 hRawYieldSBBC->Draw(
"PSAME");
1279 TLegend* legryBC=
new TLegend(0.7,0.7,0.89,0.89);
1280 legryBC->SetFillStyle(0);
1281 legryBC->SetBorderSize(0);
1282 legryBC->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1283 legryBC->AddEntry(hRawYieldRotBC,
"Rotational BC",
"PL")->SetTextColor(1);
1284 legryBC->AddEntry(hRawYieldLS,
"Like Sign ",
"PL")->SetTextColor(kGreen+2);
1285 legryBC->AddEntry(hRawYieldLSBC,
"Like Sign BC",
"PL")->SetTextColor(kGreen+2);
1286 legryBC->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1287 legryBC->AddEntry(hRawYieldMEBC,
"Ev Mix BC",
"PL")->SetTextColor(4);
1289 legryBC->AddEntry(hRawYieldSB,
"Side-Band Fit",
"PL")->SetTextColor(6);
1290 legryBC->AddEntry(hRawYieldSBBC,
"Side-Band Fit BC",
"PL")->SetTextColor(6);
1293 if(
saveCanvasAsEps>0) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.eps",sigConf.Data(),suffix.Data()));
1294 if(
saveCanvasAsRoot) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.root",sigConf.Data(),suffix.Data()));
1300 hRawYieldRot->Write();
1301 hRawYieldLS->Write();
1302 hRawYieldME->Write();
1303 hRawYieldSB->Write();
1304 hRelStatRot->Write();
1305 hRelStatLS->Write();
1306 hRelStatME->Write();
1307 hRelStatSB->Write();
1308 hSignifRot->Write();
1312 hSoverBRot->Write();
1316 hGausMeanRot->Write();
1317 hGausMeanLS->Write();
1318 hGausMeanME->Write();
1319 hGausMeanSB->Write();
1320 hGausSigmaRot->Write();
1321 hGausSigmaLS->Write();
1322 hGausSigmaME->Write();
1323 hGausSigmaSB->Write();
1332 hInvMassHistoBinWidthRot->Write();
1333 hInvMassHistoBinWidthLS->Write();
1334 hInvMassHistoBinWidthME->Write();
1335 hInvMassHistoBinWidthSB->Write();
1337 hBkgFitFunc->Write();
1338 hBkgFitFuncSB->Write();
1340 if(hSigmaMC) hSigmaMC->Write();
1349 nameh.Form(
"FitFuncTot_%s_PtBin%d",meth.Data(),iPtBin);
1350 fTot->SetRange(1.6,2.2);
1352 fTot->Write(nameh.Data());
1354 nameh.Form(
"FitFuncSig_%s_PtBin%d",meth.Data(),iPtBin);
1355 fSig->SetRange(1.6,2.2);
1357 fSig->Write(nameh.Data());
1359 nameh.Form(
"FitFuncBkg_%s_PtBin%d",meth.Data(),iPtBin);
1360 fBkg->SetRange(1.6,2.2);
1362 fBkg->Write(nameh.Data());
1373 Double_t minBin=histo->FindBin(mean-3.*sigma);
1374 Double_t maxBin=histo->FindBin(mean+3.*sigma);
1375 Double_t back=histo->Integral(minBin,maxBin);
1376 TPaveText* tpar=
new TPaveText(0.5,0.7,0.89,.87,
"NDC");
1377 tpar->SetBorderSize(0);
1378 tpar->SetFillStyle(0);
1379 tpar->AddText(Form(
"Mean = %.3f #pm %.3f",mean,emean));
1380 tpar->AddText(Form(
"Sigma = %.3f #pm %.3f",sigma,esigma));
1381 tpar->SetTextColor(4);
1384 TPaveText* tss=
new TPaveText(0.15,0.15,0.5,0.4,
"NDC");
1385 tss->SetBorderSize(0);
1386 tss->SetFillStyle(0);
1387 tss->AddText(Form(
"S = %.0f #pm %.0f",sig,esig));
1388 tss->AddText(Form(
"B(3#sigma) = %.3g",back));
1389 tss->AddText(Form(
"S/B (3#sigma) = %.4f",sig/back));
1391 tss->AddText(Form(
"Significance(3#sigma) = %.2f",sig/TMath::Sqrt(back+sig)));
1392 tss->SetTextColor(1);
1398 TH3F* h3d=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
1400 printf(
"hMassVsPtVsYSig not found\n");
1403 TH3F* h3dr=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
1405 printf(
"hMassVsPtVsYRefl not found\n");
1409 TCanvas* cmc1=
new TCanvas(
"InvMassMC",
"InvMassMC",1200,800);
1412 gStyle->SetOptFit(0);
1413 gStyle->SetOptStat(0);
1416 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
1419 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
1420 TH1D* hMassMCPtBin=h3d->ProjectionX(Form(
"hMassMCPtBin%d",iPtBin),bin1,bin2);
1421 hMassMCPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1422 hMassMCPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1423 hMassMCPtBin->GetXaxis()->SetRangeUser(1.65,2.06);
1426 hMassMCPtBin->Fit(
"gaus",
"");
1427 TF1* fg=(TF1*)hMassMCPtBin->GetListOfFunctions()->FindObject(
"gaus");
1428 TLatex* tsig=
new TLatex(0.65,0.82,
"Signal");
1430 tsig->SetTextColor(kBlue+1);
1433 TPaveText* t1=
new TPaveText(0.15,0.55,0.4,0.88,
"ndc");
1434 t1->SetFillStyle(0);
1435 t1->SetBorderSize(0);
1436 t1->AddText(Form(
"#mu = %.4f GeV/c^{2}",fg->GetParameter(1)));
1437 t1->AddText(Form(
"#sigma = %.4f GeV/c^{2}",fg->GetParameter(2)));
1438 t1->AddText(Form(
"Integral = %.0f",fg->Integral(1.7,2.1)/hMassMCPtBin->GetBinWidth(1)));
1439 t1->AddText(Form(
"Entries = %.0f",hMassMCPtBin->GetEntries()));
1442 TH1D* hReflPtBin=h3dr->ProjectionX(Form(
"hReflPtBin%d",iPtBin),bin1,bin2);
1443 hReflPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1444 hReflPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1445 hReflPtBin->SetLineColor(2);
1446 Int_t bin1=hReflPtBin->FindBin(fg->GetParameter(1)-3.*fg->GetParameter(2));
1447 Int_t bin2=hReflPtBin->FindBin(fg->GetParameter(1)+3.*fg->GetParameter(2));
1448 TLatex* tref=
new TLatex(0.65,0.75,
"Reflections");
1450 tref->SetTextColor(2);
1452 t1->AddText(Form(
"Refl(3#sigma) = %.0f",hReflPtBin->Integral(bin1,bin2)));
1453 hReflPtBin->Draw(
"same");
1456 sigmas[iPtBin]=fg->GetParameter(2);
1457 Double_t errMCsigma=fg->GetParError(2);
1462 hSigmaMC->SetBinContent(iPtBin+1,
sigmas[iPtBin]);
1463 hSigmaMC->SetBinError(iPtBin+1,errMCsigma);
Double_t GetMeanUncertainty() const
Double_t GetReflOverSig() const
static TH1D * RebinHisto(TH1 *hOrig, Int_t reb, Int_t firstUse=-1)
Rebinning of invariant mass histograms.
void SetFixReflOverS(Double_t rovers)
void DrawHere(TVirtualPad *c, Double_t nsigma=3, Int_t writeFitInfo=1)
void DivideCanvas(TCanvas *c, Int_t ndivisions)
Int_t MassFitter(Bool_t draw=kTRUE)
AliHFInvMassFitter class for the fit of invariant mass distribution of charm hadrons.
void PrintGausParams(TH1F *hPulls)
void SetFitOption(TString opt)
static TH1 * AdaptTemplateRangeAndBinning(const TH1 *hRef, TH1 *hData, Double_t minFit, Double_t maxFit)
TF1 * GetBackgroundRecalcFunc()
Double_t GetSigma() const
void SetPolDegreeForBackgroundFit(Int_t deg)
void ProjectCombinHFAndFit()
void SetFixGaussianSigma(Double_t sigma)
TH1F * FitMCInvMassSpectra(TList *lMC)
Double_t binLims[nPtBins+1]
void SetStyleHisto(TH1 *h, Int_t method, Int_t isXpt=-1)
void SetFixGaussianMean(Double_t mean)
TH1F * GetResidualsAndPulls(TH1 *hPulls=0x0, TH1 *hResidualTrend=0x0, TH1 *hPullsTrend=0x0, Double_t minrange=0, Double_t maxrange=-1)
Double_t fitrangelow[nPtBins]
void WriteFitFunctionsToFile(AliHFInvMassFitter *fitter, TString meth, Int_t iPtBin)
Bool_t QuadraticSmooth(TH1 *h, Int_t ntimes=1)
Double_t GetNEventsForNorm()
Double_t nsigmaBinCounting
Double_t fitrangeup[nPtBins]
Double_t GetRawYieldBinCounting(Double_t &errRyBC, Double_t nSigma=3., Int_t option=0, Int_t pdgCode=0) const
Double_t GetBackgroundNormalizationFactor(TH1D *hRatio)
TH1F * SetTemplateReflections(const TH1 *h, TString opt, Double_t minRange, Double_t maxRange)
Double_t GetReflOverSigUncertainty() const
Double_t GetSigmaUncertainty() const
Double_t GetRawYieldError() const
Int_t nDegreeBackPol[nPtBins]
void Background(Double_t nOfSigma, Double_t &background, Double_t &errbackground) const
void SetInitialGaussianSigma(Double_t sigma)
void SetInitialGaussianMean(Double_t mean)
AliHFInvMassFitter * ConfigureFitter(TH1D *histo, Int_t iPtBin, Int_t backcase, Double_t minFit, Double_t maxFit)
TFile * fout
input train file
TF1 * GausPlusLine(Double_t minRange=1.72, Double_t maxRange=2.05)
TH1F * GetHistoClone() const
Double_t GetRawYield() const
void WriteFitInfo(AliHFInvMassFitter *fitter, TH1D *histo)