1 #if !defined(__CINT__) || defined(__MAKECINT__) 13 #include <TPaveText.h> 15 #include <TLegendEntry.h> 16 #include <TDatabasePDG.h> 76 TH1F* histof=(TH1F*)histo->Clone(Form(
"%s_Fl",histo->GetName()));
88 TCanvas *cTest=
new TCanvas(
"cTest",
"cTest",800,800);
92 hReflModif->SetLineColor(kRed);
93 hSigModif->SetLineColor(kBlue);
95 hReflModif->Draw(
"same");
96 cTest->SaveAs(Form(
"figures/cTest%d.eps",iPtBin));
98 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)));
101 Printf(
"SOMETHING WENT WRONG WHILE SETTINGS REFLECTIONS TEMPLATE");
118 TF1* fgfit=(TF1*)hPulls->GetListOfFunctions()->FindObject(
"gaus");
119 TLatex* tg1=
new TLatex(0.2,0.8,Form(
"Gauss mean = %.2f#pm%.2f",fgfit->GetParameter(1),fgfit->GetParError(1)));
122 TLatex* tg2=
new TLatex(0.2,0.7,Form(
"Gauss #sigma = %.2f#pm%.2f",fgfit->GetParameter(2),fgfit->GetParError(2)));
131 TF1 *fp2=
new TF1(
"fp2",
"pol2",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
133 for(
Int_t i=3;i<=h->GetNbinsX()-3;i++){
134 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(i-2),h->GetXaxis()->GetBinUpEdge(i+2));
135 h->SetBinContent(i,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(i),h->GetXaxis()->GetBinUpEdge(i)))/h->GetBinWidth(i));
138 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(5));
139 h->SetBinContent(2,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(2),h->GetXaxis()->GetBinUpEdge(2)))/h->GetBinWidth(2));
141 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(4));
142 h->SetBinContent(1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(1)))/h->GetBinWidth(1));
145 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-4),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
146 h->SetBinContent(h->GetNbinsX()-1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()-1)))/h->GetBinWidth(h->GetNbinsX()-1));
148 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-3),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
149 h->SetBinContent(h->GetNbinsX(),(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX())))/h->GetBinWidth(h->GetNbinsX()));
157 if(isXpt==1)h->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
160 h->SetMarkerStyle(21);
161 h->GetYaxis()->SetTitleOffset(1.8);
162 h->SetMarkerColor(kBlack);
163 h->SetMarkerSize(1.0);
164 h->SetLineColor(kBlack);
169 h->SetMarkerStyle(25);
170 h->GetYaxis()->SetTitleOffset(1.8);
171 h->SetMarkerColor(4);
172 h->SetMarkerSize(1.0);
178 h->SetMarkerStyle(22);
179 h->GetYaxis()->SetTitleOffset(1.8);
180 h->SetMarkerColor(kGreen+2);
181 h->SetMarkerSize(1.0);
182 h->SetLineColor(kGreen+2);
187 h->SetMarkerStyle(27);
188 h->GetYaxis()->SetTitleOffset(1.8);
189 h->SetMarkerColor(6);
190 h->SetMarkerSize(1.0);
203 else if(ndivisions<5){
206 else if(ndivisions<7){
210 else if(ndivisions<=8){
214 else if(ndivisions<10){
218 else if(ndivisions<13){
222 else if(ndivisions<17){
239 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);
241 f->SetParameter(1,
massD);
242 f->SetParLimits(0,0.,1.e+7);
243 f->SetParLimits(1,1.8,1.92);
244 f->SetParameter(2,0.010);
245 f->SetParLimits(2,0,0.1);
246 f->SetParameter(3,0.);
260 for(
Int_t iMassBin=1; iMassBin<hRatio->GetNbinsX(); iMassBin++){
261 Double_t bce=hRatio->GetBinCenter(iMassBin);
263 Double_t bco=hRatio->GetBinContent(iMassBin);
264 if(bco>norm) norm=bco;
269 TF1* func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
270 Double_t norml=func0->GetParameter(0);
272 func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
273 Double_t normh=func0->GetParameter(0);
274 norm=TMath::Max(norml,normh);
283 TString dirName=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffix.Data());
284 TString lstName=Form(
"coutput%s%s",meson.Data(),suffix.Data());
285 TString dirNameMC=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffixMC.Data());
286 TString lstNameMC=Form(
"coutput%s%s",meson.Data(),suffixMC.Data());
289 if(fileName.Contains(
"FAST") && !fileName.Contains(
"wSDD")){
290 suffix.Prepend(
"FAST_");
291 }
else if(!fileName.Contains(
"FAST") && fileName.Contains(
"wSDD")){
292 suffix.Prepend(
"wSDD_");
295 if(meson==
"Dplus")
massD=TDatabasePDG::Instance()->GetParticle(411)->Mass();
296 else if(meson==
"Dzero")
massD=TDatabasePDG::Instance()->GetParticle(421)->Mass();
298 TFile*
fil=
new TFile(fileName.Data());
299 TDirectoryFile* df=(TDirectoryFile*)fil->Get(dirName.Data());
303 TH1F* hnEv=
new TH1F(
"hEvForNorm",
"events for normalization",1,0,1);
310 TH3F* h3d=(
TH3F*)l->FindObject(
"hMassVsPtVsY");
311 TH3F* h3dr=(
TH3F*)l->FindObject(
"hMassVsPtVsYRot");
312 TH3F* h3dme=(
TH3F*)l->FindObject(
"hMassVsPtVsYME");
313 TH3F* h3dmepp=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSpp");
314 TH3F* h3dmemm=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSmm");
315 TH2F* hpoolMix=(
TH2F*)l->FindObject(
"hMixingsPerPool");
316 TH2F* hpoolEv=(
TH2F*)l->FindObject(
"hEventsPerPool");
317 TH3F* h3dlsp=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSpp");
318 TH3F* h3dlsm=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSmm");
323 TFile* filMC=
new TFile(fileNameMC.Data());
324 if(filMC && filMC->IsOpen()){
325 TDirectoryFile* dfMC=(TDirectoryFile*)filMC->Get(dirNameMC.Data());
326 TList* lMC=(
TList*)dfMC->Get(lstNameMC.Data());
329 printf(
"Fit to MC inv. mass spectra failed\n");
333 h3drefl=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
334 h3dmcsig=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
342 TCanvas* cem=
new TCanvas(
"cem",
"Pools",1200,600);
345 gPad->SetRightMargin(0.12);
346 gPad->SetLeftMargin(0.12);
347 hpoolMix->GetXaxis()->SetTitle(
"zVertex");
348 hpoolMix->GetYaxis()->SetTitle(
"Multiplicity");
349 hpoolMix->GetYaxis()->SetTitleOffset(1.4);
350 hpoolMix->Draw(
"colztext");
352 gPad->SetRightMargin(0.12);
353 gPad->SetLeftMargin(0.12);
354 hpoolEv->Draw(
"colztext");
355 hpoolEv->GetXaxis()->SetTitle(
"zVertex");
356 hpoolEv->GetYaxis()->SetTitle(
"Multiplicity");
357 hpoolEv->GetYaxis()->SetTitleOffset(1.4);
360 TCanvas* c1=
new TCanvas(
"c1",
"Mass",1200,800);
363 TCanvas* c2=
new TCanvas(
"c2",
"Mass-Bkg Rot",1200,800);
365 TCanvas* c2pulls=
new TCanvas(
"c2pulls",
"Mass-Bkg Rot pulls",1200,800);
367 TCanvas* c2residuals=
new TCanvas(
"c2residuals",
"Mass-Bkg Rot residuals",1200,800);
369 TCanvas* c2residualTrend=
new TCanvas(
"c2residualTrend",
"Mass-Bkg Rot residual trend vs. mass",1200,800);
371 TCanvas* c2pullTrend=
new TCanvas(
"c2pullTrend",
"Mass-Bkg Rot pull trend vs. mass",1200,800);
374 TCanvas* c3=
new TCanvas(
"c3",
"Mass-Bkg LS",1200,800);
376 TCanvas* c3pulls=
new TCanvas(
"c3pulls",
"Mass-Bkg LS pulls",1200,800);
378 TCanvas* c3residuals=
new TCanvas(
"c3residuals",
"Mass-Bkg LS residuals",1200,800);
380 TCanvas* c3residualTrend=
new TCanvas(
"c3residualTrend",
"Mass-Bkg LS residual trend vs. mass",1200,800);
382 TCanvas* c3pullTrend=
new TCanvas(
"c3pullTrend",
"Mass-Bkg LS pull trend vs. mass",1200,800);
385 TCanvas* c4=
new TCanvas(
"c4",
"Mass-Bkg EM",1200,800);
387 TCanvas* c4pulls=
new TCanvas(
"c4pulls",
"Mass-Bkg EM pulls",1200,800);
389 TCanvas* c4residuals=
new TCanvas(
"c4residuals",
"Mass-Bkg EM residuals",1200,800);
391 TCanvas* c4residualTrend=
new TCanvas(
"c4residualTrend",
"Mass-Bkg EM residual trend vs. mass",1200,800);
393 TCanvas* c4pullTrend=
new TCanvas(
"c4pullTrend",
"Mass-Bkg EM pull trend vs. mass",1200,800);
398 TCanvas *c5pulls=0x0;
399 TCanvas *c5residuals=0x0;
400 TCanvas *c5residualTrend=0x0;
401 TCanvas *c5pullTrend=0x0;
404 c5=
new TCanvas(
"c5",
"Mass SB Fit",1200,800);
406 c5sub=
new TCanvas(
"c5sub",
"Mass-Bkg SB",1200,800);
408 c5pulls=
new TCanvas(
"c5pulls",
"Mass-Bkg SB pulls",1200,800);
410 c5residuals=
new TCanvas(
"c5residuals",
"Mass-Bkg SB residuals",1200,800);
412 c5residualTrend=
new TCanvas(
"c5residualTrend",
"Mass-Bkg SB residual trend vs. mass",1200,800);
414 c5pullTrend=
new TCanvas(
"c5pullTrend",
"Mass-Bkg SB pull trend vs. mass",1200,800);
418 TCanvas *cCompareResidualTrends=
new TCanvas(
"cCompareResidualTrends",
"cCompareResidualTrends",1200,800);
430 TH1F* hRawYieldSBfit=
new TH1F(
"hRawYieldSBfit",
"",
nPtBins,
binLims);
450 TH1F* hGausMeanSBfit=
new TH1F(
"hGausMeanSBfit",
"",
nPtBins,
binLims);
455 TH1F* hGausSigmaSBfit=
new TH1F(
"hGausSigmaSBfit",
"",
nPtBins,
binLims);
467 TH1F* hRawYieldRotBC=
new TH1F(
"hRawYieldRotBC",
"BC yield (rotational background)",
nPtBins,
binLims);
468 TH1F* hRawYieldLSBC=
new TH1F(
"hRawYieldLSBC",
"BC yield (like-sign background)",
nPtBins,
binLims);
469 TH1F* hRawYieldMEBC=
new TH1F(
"hRawYieldMEBC",
"BC yield (mixed-event background)",
nPtBins,
binLims);
470 TH1F* hRawYieldSBfitBC=
new TH1F(
"hRawYieldSBfitBC",
"BC yield (direct fit background)",
nPtBins,
binLims);
472 TLatex* tME=
new TLatex(0.65,0.82,
"MixEv +- pairs");
474 TLatex* tMEpp=
new TLatex(0.65,0.75,
"MixEv ++ pairs");
476 TLatex* tMEmm=
new TLatex(0.65,0.68,
"MixEv -- pairs");
479 TF1 *fpeak=
new TF1(
"fpeak",
"[0]*1./(TMath::Sqrt(2.*TMath::Pi())*[2])*TMath::Exp(-(x-[1])*(x-[1])/(2.*[2]*[2]))",
minMass,
maxMass);
481 TDirectory *current = gDirectory;
482 TFile*
fout=
new TFile(Form(
"outputMassFits_%s_%s.root",sigConf.Data(),suffix.Data()),
"recreate");
489 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
490 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
491 TH1D* hMassPtBin=h3d->ProjectionX(Form(
"hMassPtBin%d",iPtBin),bin1,bin2);
492 TH1D* hMassPtBinr=h3dr->ProjectionX(Form(
"hMassPtBinr%d",iPtBin),bin1,bin2);
493 TH1D* hMassPtBinme=h3dme->ProjectionX(Form(
"hMassPtBinme%d",iPtBin),bin1,bin2);
494 TH1D* hMassPtBinmeLSpp=h3dmepp->ProjectionX(Form(
"hMassPtBinmeLSpp%d",iPtBin),bin1,bin2);
495 TH1D* hMassPtBinmeLSmm=h3dmemm->ProjectionX(Form(
"hMassPtBinmeLSmm%d",iPtBin),bin1,bin2);
498 Int_t bin1MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin]);
499 Int_t bin2MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
500 hMCReflPtBin=h3drefl->ProjectionX(Form(
"hMCReflPtBin%d",iPtBin),bin1MC,bin2MC);
501 hMCSigPtBin=h3dmcsig->ProjectionX(Form(
"hMCSigPtBin%d",iPtBin),bin1MC,bin2MC);
504 TH1D* hMassPtBinlsp=0x0;
505 TH1D* hMassPtBinlsm=0x0;
506 TH1D* hMassPtBinls=0x0;
508 hMassPtBinlsp=h3dlsp->ProjectionX(Form(
"hMassPtBinlsp%d",iPtBin),bin1,bin2);
509 hMassPtBinlsm=h3dlsm->ProjectionX(Form(
"hMassPtBinlsm%d",iPtBin),bin1,bin2);
510 hMassPtBinls=(
TH1D*)hMassPtBinlsp->Clone(Form(
"hMassPtBinls%d",iPtBin));
511 hMassPtBinls->Reset();
512 for(
Int_t iBin=1; iBin<=hMassPtBinlsp->GetNbinsX(); iBin++){
513 Double_t np=hMassPtBinlsp->GetBinContent(iBin);
514 Double_t nm=hMassPtBinlsm->GetBinContent(iBin);
516 Double_t enp=hMassPtBinlsp->GetBinError(iBin);
517 Double_t enm=hMassPtBinlsm->GetBinError(iBin);
519 if(tt>0) ett=2./tt*TMath::Sqrt(np*np*enm*enm+nm*nm*enp*enp);
520 hMassPtBinls->SetBinContent(iBin,tt);
521 hMassPtBinls->SetBinError(iBin,ett);
525 hMassPtBinls->SetLineColor(kGreen+1);
533 hMassPtBin->SetLineColor(1);
534 hMassPtBinr->SetLineColor(4);
535 hMassPtBinme->SetLineColor(kOrange+1);
536 hMassPtBinmeLSpp->SetLineColor(kGreen+2);
537 hMassPtBinmeLSmm->SetLineColor(kCyan);
538 hMassPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
539 hMassPtBinr->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
540 hMassPtBinme->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
541 TH1D* hRatioMEpp=(
TH1D*)hMassPtBinmeLSpp->Clone(Form(
"hRatioPtBinmeLSpp%d",iPtBin));
542 hRatioMEpp->Divide(hMassPtBinme);
543 TH1D* hRatioMEmm=(
TH1D*)hMassPtBinmeLSmm->Clone(Form(
"hRatioPtBinmeLSmm%d",iPtBin));
544 hRatioMEmm->Divide(hMassPtBinme);
545 TH1D* hMassPtBinmeAll=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioPtBinmeAll%d",iPtBin));
546 hMassPtBinmeAll->Add(hMassPtBinmeLSpp);
547 hMassPtBinmeAll->Add(hMassPtBinmeLSmm);
548 hMassPtBinmeAll->SetLineColor(kRed);
549 TH1D* hRatioME=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioME%d",iPtBin));
550 hRatioME->Divide(hMassPtBin);
551 TH1D* hRatioMEAll=(
TH1D*)hMassPtBinmeAll->Clone(Form(
"hRatioMEAll%d",iPtBin));
552 hRatioMEAll->Divide(hMassPtBin);
555 TCanvas* c0=
new TCanvas(Form(
"CBin%d",iPtBin),Form(
"Bin%d norm",iPtBin),1000,700);
558 TH1D* hRatio=(
TH1D*)hMassPtBinr->Clone(
"hRatio");
559 hRatio->Divide(hMassPtBin);
561 hRatio->GetYaxis()->SetTitle(
"Rotational/All");
562 hRatio->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
564 hMassPtBinr->Scale(1./normRot);
566 hMassPtBinme->GetYaxis()->SetTitle(
"Entries (EvMix)");
567 hMassPtBinme->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
568 hMassPtBinme->DrawCopy();
569 hMassPtBinmeLSpp->Draw(
"same");
570 hMassPtBinmeLSmm->Draw(
"same");
571 tME->SetTextColor(hMassPtBinme->GetLineColor());
572 tMEpp->SetTextColor(hMassPtBinmeLSpp->GetLineColor());
573 tMEmm->SetTextColor(hMassPtBinmeLSmm->GetLineColor());
579 hRatioMEpp->SetMinimum(0.4);
580 hRatioMEpp->SetMaximum(0.6);
581 hRatioMEpp->GetYaxis()->SetTitle(
"ME with LS / ME with OS");
582 hRatioMEpp->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
583 hRatioMEmm->Draw(
"same");
586 hRatioME->SetMaximum(hRatioMEAll->GetMaximum()*1.05);
587 hRatioMEAll->Draw(
"same");
588 hRatioME->GetYaxis()->SetTitle(
"EvMix/All");
589 hRatioME->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
593 hMassPtBinme->Scale(1./normME);
594 hMassPtBinmeAll->Scale(1./normMEAll);
595 printf(
"Background norm bin %d DONE\n",iPtBin);
599 hMassPtBin->SetMinimum(0);
601 hMassPtBin->GetYaxis()->SetTitle(
"Counts");
602 hMassPtBin->GetYaxis()->SetTitleOffset(2.);
603 hMassPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
604 hMassPtBinr->Draw(
"same");
606 else hMassPtBinmeAll->Draw(
"same");
607 if(hMassPtBinls) hMassPtBinls->Draw(
"same");
609 TLegend* leg=
new TLegend(0.5,0.6,0.89,0.89);
610 leg->SetFillStyle(0);
611 leg->AddEntry(hMassPtBin,
"All candidates",
"L")->SetTextColor(hMassPtBin->GetLineColor());
612 leg->AddEntry(hMassPtBinr,
"Background (rotations)",
"L")->SetTextColor(hMassPtBinr->GetLineColor());
613 if(!
useEMwithLS) leg->AddEntry(hMassPtBinme,
"Background (ME)",
"L")->SetTextColor(hMassPtBinme->GetLineColor());
614 else leg->AddEntry(hMassPtBinmeAll,
"Background (ME)",
"L")->SetTextColor(hMassPtBinmeAll->GetLineColor());
615 if(hMassPtBinls) leg->AddEntry(hMassPtBinls,
"Like-sign",
"L")->SetTextColor(hMassPtBinls->GetLineColor());
620 TH1D* hMassSubRot=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubRot_bin%d",iPtBin));
621 hMassSubRot->Add(hMassPtBinr,-1);
622 hMassSubRot->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Rotational",
binLims[iPtBin],
binLims[iPtBin+1]));
623 TH1D* hMassSubME=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubME_bin%d",iPtBin));
625 else hMassSubME->Add(hMassPtBinmeAll,-1);
626 hMassSubME->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Mixed Ev",
binLims[iPtBin],
binLims[iPtBin+1]));
627 TH1D* hMassSubLS=0x0;
629 hMassSubLS=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubLS_bin%d",iPtBin));
630 hMassSubLS->Add(hMassPtBinls,-1);
631 hMassSubLS->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Like Sign",
binLims[iPtBin],
binLims[iPtBin+1]));
636 hMassSubRot->Write();
638 if(hMassPtBinls) hMassSubLS->Write();
639 if(hMCReflPtBin) hMCReflPtBin->Write();
640 if(hMCSigPtBin) hMCSigPtBin->Write();
654 if(hMassPtBinls) out2=fitterLS[iPtBin]->
MassFitter(0);
660 TH1D *hMassDirectFit=(
TH1D*)hMassPtBin->Clone(Form(
"hMassDirectFit_bin%d",iPtBin));
667 if(out4 && fitterSB[iPtBin]->GetMassFunc()){
669 fitterSB[iPtBin]->
DrawHere(gPad,3,0);
670 hRawYieldSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield());
671 hRawYieldSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError());
672 if(fitterSB[iPtBin]->GetRawYield()>0){
673 hRelStatSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError()/fitterSB[iPtBin]->GetRawYield());
674 hRelStatSBfit->SetBinError(iPtBin+1,0.00000001);
676 fitterSB[iPtBin]->
Background(3.,background,ebkg);
677 hSignifSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterSB[iPtBin]->GetRawYield()));
678 hSignifSBfit->SetBinError(iPtBin+1,0.00000001);
679 hSoverBSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield()/background);
680 hSoverBSBfit->SetBinError(iPtBin+1,0.00000001);
681 hGausMeanSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMean());
682 hGausMeanSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetMeanUncertainty());
683 hGausSigmaSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetSigma());
684 hGausSigmaSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetSigmaUncertainty());
685 hChiSqSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetReducedChiSquare());
686 hChiSqSBfit->SetBinError(iPtBin+1,0.00001);
687 hNdfSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMassFunc()->GetNDF());
688 hNdfSBfit->SetBinError(iPtBin+1,0.00001);
694 TH1F* hsubTemp=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBack%d",hMassDirectFit->GetName(),iPtBin));
695 TH1F* hsubTempAllRange=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBackAllRange%d",hMassDirectFit->GetName(),iPtBin));
699 for(
Int_t jst=1;jst<=hsubTemp->GetNbinsX();jst++){
700 Double_t backg=funcBkg->Integral(hsubTemp->GetBinLowEdge(jst),hsubTemp->GetBinLowEdge(jst)+hsubTemp->GetBinWidth(jst))/hsubTemp->GetBinWidth(jst);
701 Double_t tot=funcAll->Integral(hsubTempAllRange->GetBinLowEdge(jst),hsubTempAllRange->GetBinLowEdge(jst)+hsubTempAllRange->GetBinWidth(jst))/hsubTempAllRange->GetBinWidth(jst);
702 hsubTemp->SetBinContent(jst,hsubTemp->GetBinContent(jst)-backg);
703 hsubTempAllRange->SetBinContent(jst,hsubTempAllRange->GetBinContent(jst)-tot);
705 hsubTemp->SetLineColor(kBlue);
706 hsubTempAllRange->SetLineColor(kGray+2);
709 for(
Int_t ibs=1; ibs<hsubTemp->GetNbinsX(); ibs++){
710 Double_t binc=hsubTemp->GetBinCenter(ibs);
712 Double_t yl=hsubTemp->GetBinContent(ibs)-hsubTemp->GetBinError(ibs);
713 Double_t yu=hsubTemp->GetBinContent(ibs)+hsubTemp->GetBinError(ibs);
718 if(ymax>0) ymax*=1.2;
720 if(ymin<0) ymin*=1.2;
723 hsubTemp->SetMinimum(ymin);
724 hsubTemp->SetMaximum(ymax);
725 hsubTemp->SetMarkerStyle(20);
726 hsubTemp->SetMarkerColor(hsubTemp->GetLineColor());
727 hsubTemp->DrawCopy();
728 hsubTempAllRange->DrawCopy(
"same");
729 hsubTemp->DrawCopy(
"same");
731 fpeak->SetParameter(0,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+1));
732 fpeak->SetParameter(1,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+2));
733 fpeak->SetParameter(2,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+3));
734 fpeak->DrawCopy(
"same");
738 hRawYieldSBfitBC->SetBinContent(iPtBin+1,bc);
739 hRawYieldSBfitBC->SetBinError(iPtBin+1,errbc);
741 c5pulls->cd(iPtBin+1);
742 TH1F *hPulls=
new TH1F();
743 TH1F *hPullsTrend=
new TH1F();
744 TH1F *hResidualTrend=
new TH1F();
750 c5residuals->cd(iPtBin+1);
754 cCompareResidualTrends->cd(iPtBin+1);
755 hResidualTrend->Draw();
757 c5residualTrend->cd(iPtBin+1);
758 hResidualTrend->Draw();
760 c5pullTrend->cd(iPtBin+1);
764 delete hMassDirectFit;
769 if(out1 && fitterRot[iPtBin]->GetMassFunc()){
770 fitterRot[iPtBin]->
DrawHere(gPad,3,0);
772 hRawYieldRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield());
773 hRawYieldRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError());
774 Double_t minBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()-3.*fitterRot[iPtBin]->GetSigma());
775 Double_t maxBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()+3.*fitterRot[iPtBin]->GetSigma());
776 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
777 hSoverBRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield()/background);
778 hSoverBRot->SetBinError(iPtBin+1,0.000001);
779 hRelStatRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError()/fitterRot[iPtBin]->GetRawYield());
780 hRelStatRot->SetBinError(iPtBin+1,0.000001);
781 hSignifRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterRot[iPtBin]->GetRawYield()));
782 hSignifRot->SetBinError(iPtBin+1,0.00000001);
783 hGausMeanRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMean());
784 hGausMeanRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetMeanUncertainty());
785 hGausSigmaRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetSigma());
786 hGausSigmaRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetSigmaUncertainty());
787 hChiSqRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetReducedChiSquare());
788 hChiSqRot->SetBinError(iPtBin+1,0.00001);
789 hNdfRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMassFunc()->GetNDF());
790 hNdfRot->SetBinError(iPtBin+1,0.00001);
796 hRawYieldRotBC->SetBinContent(iPtBin+1,bc);
797 hRawYieldRotBC->SetBinError(iPtBin+1,errbc);
799 c2pulls->cd(iPtBin+1);
800 TH1F *hPullsTrend=
new TH1F();
801 TH1F *hPulls=
new TH1F();
802 TH1F *hResidualTrend=
new TH1F();
808 c2residuals->cd(iPtBin+1);
812 c2residualTrend->cd(iPtBin+1);
813 hResidualTrend->Draw();
814 cCompareResidualTrends->cd(iPtBin+1);
815 if(out4)hResidualTrend->Draw(
"same");
816 else hResidualTrend->Draw();
818 c2pullTrend->cd(iPtBin+1);
822 else hMassSubRot->Draw(
"");
826 if(out2 && fitterLS[iPtBin]->GetMassFunc()){
827 fitterLS[iPtBin]->
DrawHere(gPad,3,0);
828 hRawYieldLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield());
829 hRawYieldLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError());
830 Double_t minBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()-3.*fitterLS[iPtBin]->GetSigma());
831 Double_t maxBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()+3.*fitterLS[iPtBin]->GetSigma());
832 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
833 hSoverBLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield()/background);
834 hSoverBLS->SetBinError(iPtBin+1,0.000001);
835 hRelStatLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError()/fitterLS[iPtBin]->GetRawYield());
836 hRelStatLS->SetBinError(iPtBin+1,0.0000001);
837 hSignifLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterLS[iPtBin]->GetRawYield()));
838 hSignifLS->SetBinError(iPtBin+1,0.00000001);
839 hGausMeanLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMean());
840 hGausMeanLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetMeanUncertainty());
841 hGausSigmaLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetSigma());
842 hGausSigmaLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetSigmaUncertainty());
843 hChiSqLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetReducedChiSquare());
844 hChiSqLS->SetBinError(iPtBin+1,0.00001);
845 hNdfLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMassFunc()->GetNDF());
846 hNdfLS->SetBinError(iPtBin+1,0.00001);
852 hRawYieldLSBC->SetBinContent(iPtBin+1,bc);
853 hRawYieldLSBC->SetBinError(iPtBin+1,errbc);
855 c3pulls->cd(iPtBin+1);
856 TH1F *hPullsTrend=
new TH1F();
857 TH1F *hPulls=
new TH1F();
858 TH1F *hResidualTrend=
new TH1F();
864 c3residuals->cd(iPtBin+1);
868 c3residualTrend->cd(iPtBin+1);
869 hResidualTrend->Draw();
871 cCompareResidualTrends->cd(iPtBin+1);
872 if(out4||out1)hResidualTrend->Draw(
"same");
873 else hResidualTrend->Draw();
875 c3pullTrend->cd(iPtBin+1);
878 else if(hMassPtBinls) hMassSubLS->Draw(
"");
881 if(out3 && fitterME[iPtBin]->GetMassFunc()){
882 fitterME[iPtBin]->
DrawHere(gPad,3,0);
883 hRawYieldME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield());
884 hRawYieldME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetRawYieldError());
885 Double_t minBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()-3.*fitterME[iPtBin]->GetSigma());
886 Double_t maxBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()+3.*fitterME[iPtBin]->GetSigma());
887 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
888 hSoverBME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield()/background);
889 hSoverBME->SetBinError(iPtBin+1,0.000001);
890 hRelStatME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYieldError()/fitterME[iPtBin]->GetRawYield());
891 hRelStatME->SetBinError(iPtBin+1,0.000001);
892 hSignifME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield()/TMath::Sqrt(background+fitterME[iPtBin]->GetRawYield()));
893 hSignifME->SetBinError(iPtBin+1,0.00000001);
894 hGausMeanME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMean());
895 hGausMeanME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetMeanUncertainty());
896 hGausSigmaME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetSigma());
897 hGausSigmaME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetSigmaUncertainty());
898 hChiSqME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetReducedChiSquare());
899 hChiSqME->SetBinError(iPtBin+1,0.00001);
900 hNdfME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMassFunc()->GetNDF());
901 hNdfME->SetBinError(iPtBin+1,0.00001);
907 hRawYieldMEBC->SetBinContent(iPtBin+1,bc);
908 hRawYieldMEBC->SetBinError(iPtBin+1,errbc);
911 c4pulls->cd(iPtBin+1);
912 TH1F *hPullsTrend=
new TH1F();
913 TH1F *hPulls=
new TH1F();
914 TH1F *hResidualTrend=
new TH1F();
919 c4residuals->cd(iPtBin+1);
923 c4residualTrend->cd(iPtBin+1);
924 hResidualTrend->Draw();
926 cCompareResidualTrends->cd(iPtBin+1);
927 if(out4||out1||out2)hResidualTrend->Draw(
"same");
928 else hResidualTrend->Draw();
930 c4pullTrend->cd(iPtBin+1);
933 else hMassSubME->Draw(
"");
941 path.Append(
"/figures");
942 if(
gSystem->AccessPathName(path.Data())){
943 gROOT->ProcessLine(Form(
".!mkdir -p %s",path.Data()));
947 c1->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_NoBkgSub.eps",sigConf.Data(),suffix.Data()));
948 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
949 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
950 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
952 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
953 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.eps",sigConf.Data(),suffix.Data()));
957 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
958 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
959 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
961 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
962 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
963 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
965 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
966 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
967 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
969 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
970 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
971 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
974 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
975 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
976 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
977 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
984 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
985 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
986 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
988 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
989 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
990 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
992 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
993 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
994 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
996 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
997 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
998 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1000 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
1001 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
1002 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
1005 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1006 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.root",sigConf.Data(),suffix.Data()));
1007 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1008 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1009 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1010 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
1017 TCanvas* cry=
new TCanvas(
"cry",
"RawYield",800,700);
1018 cry->SetLeftMargin(0.15);
1019 hRawYieldRot->SetMarkerStyle(21);
1020 hRawYieldRot->Draw(
"P");
1021 hRawYieldRot->SetMinimum(0);
1022 hRawYieldRot->GetXaxis()->SetTitle(
"p_{T} (GeV/c)");
1023 hRawYieldRot->GetYaxis()->SetTitle(
"Raw Yield");
1024 hRawYieldRot->GetYaxis()->SetTitleOffset(1.8);
1025 Double_t max=hRawYieldRot->GetMaximum();
1026 if(hRawYieldLS->GetMaximum()>max)max=hRawYieldLS->GetMaximum();
1027 if(hRawYieldME->GetMaximum()>max)max=hRawYieldME->GetMaximum();
1029 if(hRawYieldSBfit->GetMaximum()>max)max=hRawYieldSBfit->GetMaximum();
1031 hRawYieldRot->SetMaximum(max*1.2);
1033 hRawYieldLS->SetMarkerStyle(22);
1034 hRawYieldLS->SetMarkerColor(kGreen+2);
1035 hRawYieldLS->SetLineColor(kGreen+2);
1036 hRawYieldLS->Draw(
"PZSAME");
1037 hRawYieldME->SetMarkerStyle(25);
1038 hRawYieldME->SetMarkerColor(4);
1039 hRawYieldME->SetLineColor(4);
1040 hRawYieldME->Draw(
"PSAME");
1042 hRawYieldSBfit->SetMarkerStyle(27);
1043 hRawYieldSBfit->SetMarkerColor(6);
1044 hRawYieldSBfit->SetLineColor(6);
1045 hRawYieldSBfit->Draw(
"PSAME");
1047 TLegend* legry=
new TLegend(0.7,0.7,0.89,0.89);
1048 legry->SetFillStyle(0);
1049 legry->SetBorderSize(0);
1050 legry->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1051 legry->AddEntry(hRawYieldLS,
"Like Sign",
"PL")->SetTextColor(kGreen+2);
1052 legry->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1054 legry->AddEntry(hRawYieldSBfit,
"Direct Fit",
"PL")->SetTextColor(6);
1057 if(
saveCanvasAsEps>0) cry->SaveAs(Form(
"figures/RawYield_%s_%s.eps",sigConf.Data(),suffix.Data()));
1058 if(
saveCanvasAsRoot) cry->SaveAs(Form(
"figures/RawYield_%s_%s.root",sigConf.Data(),suffix.Data()));
1062 TCanvas* cch2=
new TCanvas(
"cch2",
"Chi2",800,700);
1063 cch2->SetLeftMargin(0.15);
1064 hChiSqRot->SetMarkerStyle(21);
1065 hChiSqRot->Draw(
"P");
1066 hChiSqRot->SetMinimum(0);
1067 hChiSqRot->GetXaxis()->SetTitle(
"p_{T} (GeV/c)");
1068 hChiSqRot->GetYaxis()->SetTitle(
"#chi^{2}/ndf");
1069 hChiSqRot->GetYaxis()->SetTitleOffset(1.8);
1070 Double_t maxc=hChiSqRot->GetMaximum();
1071 if(hChiSqLS->GetMaximum()>maxc)maxc=hChiSqLS->GetMaximum();
1072 if(hChiSqME->GetMaximum()>maxc)maxc=hChiSqME->GetMaximum();
1074 if(hChiSqSBfit->GetMaximum()>maxc)maxc=hChiSqSBfit->GetMaximum();
1076 hChiSqRot->SetMaximum(maxc*1.2);
1078 hChiSqLS->SetMarkerStyle(22);
1079 hChiSqLS->SetMarkerColor(kGreen+2);
1080 hChiSqLS->SetLineColor(kGreen+2);
1081 hChiSqLS->Draw(
"PZSAME");
1082 hChiSqME->SetMarkerStyle(25);
1083 hChiSqME->SetMarkerColor(4);
1084 hChiSqME->SetLineColor(4);
1085 hChiSqME->Draw(
"PSAME");
1087 hChiSqSBfit->SetMarkerStyle(27);
1088 hChiSqSBfit->SetMarkerColor(6);
1089 hChiSqSBfit->SetLineColor(6);
1090 hChiSqSBfit->Draw(
"PSAME");
1093 if(
saveCanvasAsEps>0) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.eps",sigConf.Data(),suffix.Data()));
1094 if(
saveCanvasAsRoot) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.root",sigConf.Data(),suffix.Data()));
1096 TH1F* hRatioLSToME=(TH1F*)hRawYieldLS->Clone(
"hRatioLStoME");
1097 TH1F* hRatioRotToME=(TH1F*)hRawYieldRot->Clone(
"hRatioRottoME");
1098 TH1F* hRatioMEToME=(TH1F*)hRawYieldME->Clone(
"hRatioMEtoME");
1099 TH1F* hRatioSBToME=(TH1F*)hRawYieldSBfit->Clone(
"hRatioSBtoME");
1100 for(
Int_t ib=1; ib<=hRawYieldME->GetNbinsX(); ib++){
1101 Double_t yme=hRawYieldME->GetBinContent(ib);
1103 hRatioLSToME->SetBinContent(ib,hRawYieldLS->GetBinContent(ib)/yme);
1104 hRatioLSToME->SetBinError(ib,hRawYieldLS->GetBinError(ib)/yme);
1105 hRatioMEToME->SetBinContent(ib,hRawYieldME->GetBinContent(ib)/yme);
1106 hRatioMEToME->SetBinError(ib,hRawYieldME->GetBinError(ib)/yme);
1107 hRatioRotToME->SetBinContent(ib,hRawYieldRot->GetBinContent(ib)/yme);
1108 hRatioRotToME->SetBinError(ib,hRawYieldRot->GetBinError(ib)/yme);
1109 hRatioSBToME->SetBinContent(ib,hRawYieldSBfit->GetBinContent(ib)/yme);
1110 hRatioSBToME->SetBinError(ib,hRawYieldSBfit->GetBinError(ib)/yme);
1114 TCanvas* cry2=
new TCanvas(
"cry2",
"RawYield+Ratios",1400,700);
1117 gPad->SetLeftMargin(0.15);
1118 gPad->SetRightMargin(0.05);
1119 hRawYieldRot->Draw(
"P");
1120 hRawYieldLS->Draw(
"PZSAME");
1121 hRawYieldME->Draw(
"PSAME");
1123 hRawYieldSBfit->Draw(
"PSAME");
1127 hRatioLSToME->SetStats(0);
1128 hRatioLSToME->SetMinimum(0.3);
1129 hRatioLSToME->SetMaximum(1.7);
1130 hRatioLSToME->GetYaxis()->SetTitle(
"Ratio To EvMix");
1131 hRatioLSToME->Draw(
"same");
1132 hRatioRotToME->Draw(
"same");
1133 hRatioMEToME->Draw(
"same");
1134 hRatioSBToME->Draw(
"same");
1135 if(
saveCanvasAsEps>0) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.eps",sigConf.Data(),suffix.Data()));
1136 if(
saveCanvasAsRoot) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.root",sigConf.Data(),suffix.Data()));
1142 cCompareResidualTrends->cd(1);
1143 TLegend *legRT=
new TLegend(*legry);
1144 legRT->SetX1NDC(0.12);
1145 legRT->SetY1NDC(0.7);
1146 legRT->SetX2NDC(0.3);
1147 legRT->SetY2NDC(0.9);
1151 TCanvas* cryBC=
new TCanvas(
"cryBC",
"RawYield with BC",800,700);
1152 cryBC->SetLeftMargin(0.15);
1153 hRawYieldRot->Draw(
"P");
1154 hRawYieldME->Draw(
"PSAME");
1155 hRawYieldLS->Draw(
"PZSAME");
1157 hRawYieldSBfit->Draw(
"PSAME");
1160 if(hRawYieldRotBC->GetMaximum()>max)max=hRawYieldRotBC->GetMaximum();
1161 if(hRawYieldLSBC->GetMaximum()>max)max=hRawYieldLSBC->GetMaximum();
1162 if(hRawYieldMEBC->GetMaximum()>max)max=hRawYieldMEBC->GetMaximum();
1164 if(hRawYieldSBfitBC->GetMaximum()>max)max=hRawYieldSBfitBC->GetMaximum();
1166 hRawYieldRot->SetMaximum(max*1.2);
1168 hRawYieldRotBC->SetMarkerStyle(21);
1169 hRawYieldRotBC->SetLineStyle(2);
1170 hRawYieldRotBC->Draw(
"PSAME");
1173 hRawYieldLSBC->SetMarkerStyle(22);
1174 hRawYieldLSBC->SetMarkerColor(kGreen+2);
1175 hRawYieldLSBC->SetLineColor(kGreen+2);
1176 hRawYieldLSBC->SetLineStyle(2);
1177 hRawYieldLSBC->Draw(
"PZSAME");
1179 hRawYieldMEBC->SetMarkerStyle(25);
1180 hRawYieldMEBC->SetMarkerColor(4);
1181 hRawYieldMEBC->SetLineColor(4);
1182 hRawYieldMEBC->SetLineStyle(2);
1183 hRawYieldMEBC->Draw(
"PSAME");
1185 hRawYieldSBfitBC->SetMarkerStyle(27);
1186 hRawYieldSBfitBC->SetMarkerColor(6);
1187 hRawYieldSBfitBC->SetLineColor(6);
1188 hRawYieldSBfitBC->SetLineStyle(2);
1189 hRawYieldSBfitBC->Draw(
"PSAME");
1192 TLegend* legryBC=
new TLegend(0.7,0.7,0.89,0.89);
1193 legryBC->SetFillStyle(0);
1194 legryBC->SetBorderSize(0);
1195 legryBC->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1196 legryBC->AddEntry(hRawYieldRotBC,
"Rotational BC",
"PL")->SetTextColor(1);
1197 legryBC->AddEntry(hRawYieldLS,
"Like Sign ",
"PL")->SetTextColor(kGreen+2);
1198 legryBC->AddEntry(hRawYieldLSBC,
"Like Sign BC",
"PL")->SetTextColor(kGreen+2);
1199 legryBC->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1200 legryBC->AddEntry(hRawYieldMEBC,
"Ev Mix BC",
"PL")->SetTextColor(4);
1202 legryBC->AddEntry(hRawYieldSBfit,
"Direct Fit",
"PL")->SetTextColor(6);
1203 legryBC->AddEntry(hRawYieldSBfitBC,
"Direct Fit BC",
"PL")->SetTextColor(6);
1206 if(
saveCanvasAsEps>0) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.eps",sigConf.Data(),suffix.Data()));
1207 if(
saveCanvasAsRoot) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.root",sigConf.Data(),suffix.Data()));
1213 hRawYieldRot->Write();
1214 hRawYieldLS->Write();
1215 hRawYieldME->Write();
1216 hRawYieldSBfit->Write();
1217 hRelStatRot->Write();
1218 hRelStatLS->Write();
1219 hRelStatME->Write();
1220 hRelStatSBfit->Write();
1221 hSignifRot->Write();
1224 hSignifSBfit->Write();
1225 hSoverBRot->Write();
1228 hSoverBSBfit->Write();
1229 hGausMeanRot->Write();
1230 hGausMeanLS->Write();
1231 hGausMeanME->Write();
1232 hGausMeanSBfit->Write();
1233 hGausSigmaRot->Write();
1234 hGausSigmaLS->Write();
1235 hGausSigmaME->Write();
1236 hGausSigmaSBfit->Write();
1240 hChiSqSBfit->Write();
1246 if(hSigmaMC) hSigmaMC->Write();
1260 Double_t minBin=histo->FindBin(mean-3.*sigma);
1261 Double_t maxBin=histo->FindBin(mean+3.*sigma);
1262 Double_t back=histo->Integral(minBin,maxBin);
1263 TPaveText* tpar=
new TPaveText(0.5,0.7,0.89,.87,
"NDC");
1264 tpar->SetBorderSize(0);
1265 tpar->SetFillStyle(0);
1266 tpar->AddText(Form(
"Mean = %.3f #pm %.3f",mean,emean));
1267 tpar->AddText(Form(
"Sigma = %.3f #pm %.3f",sigma,esigma));
1268 tpar->SetTextColor(4);
1271 TPaveText* tss=
new TPaveText(0.15,0.15,0.5,0.4,
"NDC");
1272 tss->SetBorderSize(0);
1273 tss->SetFillStyle(0);
1274 tss->AddText(Form(
"S = %.0f #pm %.0f",sig,esig));
1275 tss->AddText(Form(
"B(3#sigma) = %.3g",back));
1276 tss->AddText(Form(
"S/B (3#sigma) = %.4f",sig/back));
1278 tss->AddText(Form(
"Significance(3#sigma) = %.2f",sig/TMath::Sqrt(back+sig)));
1279 tss->SetTextColor(1);
1285 TH3F* h3d=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
1287 printf(
"hMassVsPtVsYSig not found\n");
1290 TH3F* h3dr=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
1292 printf(
"hMassVsPtVsYRefl not found\n");
1296 TCanvas* cmc1=
new TCanvas(
"InvMassMC",
"InvMassMC",1200,800);
1299 gStyle->SetOptFit(0);
1300 gStyle->SetOptStat(0);
1303 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
1306 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
1307 TH1D* hMassMCPtBin=h3d->ProjectionX(Form(
"hMassMCPtBin%d",iPtBin),bin1,bin2);
1308 hMassMCPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1309 hMassMCPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1310 hMassMCPtBin->GetXaxis()->SetRangeUser(1.65,2.06);
1313 hMassMCPtBin->Fit(
"gaus",
"");
1314 TF1* fg=(TF1*)hMassMCPtBin->GetListOfFunctions()->FindObject(
"gaus");
1315 TLatex* tsig=
new TLatex(0.65,0.82,
"Signal");
1317 tsig->SetTextColor(kBlue+1);
1320 TPaveText* t1=
new TPaveText(0.15,0.55,0.4,0.88,
"ndc");
1321 t1->SetFillStyle(0);
1322 t1->SetBorderSize(0);
1323 t1->AddText(Form(
"#mu = %.4f GeV/c^{2}",fg->GetParameter(1)));
1324 t1->AddText(Form(
"#sigma = %.4f GeV/c^{2}",fg->GetParameter(2)));
1325 t1->AddText(Form(
"Integral = %.0f",fg->Integral(1.7,2.1)/hMassMCPtBin->GetBinWidth(1)));
1326 t1->AddText(Form(
"Entries = %.0f",hMassMCPtBin->GetEntries()));
1329 TH1D* hReflPtBin=h3dr->ProjectionX(Form(
"hReflPtBin%d",iPtBin),bin1,bin2);
1330 hReflPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1331 hReflPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1332 hReflPtBin->SetLineColor(2);
1333 Int_t bin1=hReflPtBin->FindBin(fg->GetParameter(1)-3.*fg->GetParameter(2));
1334 Int_t bin2=hReflPtBin->FindBin(fg->GetParameter(1)+3.*fg->GetParameter(2));
1335 TLatex* tref=
new TLatex(0.65,0.75,
"Reflections");
1337 tref->SetTextColor(2);
1339 t1->AddText(Form(
"Refl(3#sigma) = %.0f",hReflPtBin->Integral(bin1,bin2)));
1340 hReflPtBin->Draw(
"same");
1341 hSigmaMC->SetBinContent(iPtBin+1,fg->GetParameter(2));
1342 hSigmaMC->SetBinError(iPtBin+1,fg->GetParError(2));
1343 sigmas[iPtBin]=fg->GetParameter(2);
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]
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)