1 #if !defined(__CINT__) || defined(__MAKECINT__)
12 #include <TPaveText.h>
14 #include <TLegendEntry.h>
15 #include <TDatabasePDG.h>
73 TH1F* histof=(TH1F*)histo->Clone(Form(
"%s_Fl",histo->GetName()));
85 TCanvas *cTest=
new TCanvas(
"cTest",
"cTest",800,800);
89 hReflModif->SetLineColor(kRed);
90 hSigModif->SetLineColor(kBlue);
92 hReflModif->Draw(
"same");
93 cTest->SaveAs(Form(
"figures/cTest%d.eps",iPtBin));
95 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)));
98 Printf(
"SOMETHING WENT WRONG WHILE SETTINGS REFLECTIONS TEMPLATE");
115 TF1* fgfit=(TF1*)hPulls->GetListOfFunctions()->FindObject(
"gaus");
116 TLatex* tg1=
new TLatex(0.2,0.8,Form(
"Gauss mean = %.2f#pm%.2f",fgfit->GetParameter(1),fgfit->GetParError(1)));
119 TLatex* tg2=
new TLatex(0.2,0.7,Form(
"Gauss #sigma = %.2f#pm%.2f",fgfit->GetParameter(2),fgfit->GetParError(2)));
128 TF1 *fp2=
new TF1(
"fp2",
"pol2",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
130 for(
Int_t i=3;i<=h->GetNbinsX()-3;i++){
131 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(i-2),h->GetXaxis()->GetBinUpEdge(i+2));
132 h->SetBinContent(i,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(i),h->GetXaxis()->GetBinUpEdge(i)))/h->GetBinWidth(i));
135 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(5));
136 h->SetBinContent(2,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(2),h->GetXaxis()->GetBinUpEdge(2)))/h->GetBinWidth(2));
138 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(4));
139 h->SetBinContent(1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(1),h->GetXaxis()->GetBinUpEdge(1)))/h->GetBinWidth(1));
142 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-4),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
143 h->SetBinContent(h->GetNbinsX()-1,(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-1),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()-1)))/h->GetBinWidth(h->GetNbinsX()-1));
145 htmp->Fit(fp2,
"RLEMN0",
"",h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()-3),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()));
146 h->SetBinContent(h->GetNbinsX(),(fp2->Integral(h->GetXaxis()->GetBinLowEdge(h->GetNbinsX()),h->GetXaxis()->GetBinUpEdge(h->GetNbinsX())))/h->GetBinWidth(h->GetNbinsX()));
154 if(isXpt==1)h->GetXaxis()->SetTitle(
"#it{p}_{T} (GeV/#it{c})");
157 h->SetMarkerStyle(21);
158 h->GetYaxis()->SetTitleOffset(1.8);
159 h->SetMarkerColor(kBlack);
160 h->SetMarkerSize(1.0);
161 h->SetLineColor(kBlack);
166 h->SetMarkerStyle(25);
167 h->GetYaxis()->SetTitleOffset(1.8);
168 h->SetMarkerColor(4);
169 h->SetMarkerSize(1.0);
175 h->SetMarkerStyle(22);
176 h->GetYaxis()->SetTitleOffset(1.8);
177 h->SetMarkerColor(kGreen+2);
178 h->SetMarkerSize(1.0);
179 h->SetLineColor(kGreen+2);
184 h->SetMarkerStyle(27);
185 h->GetYaxis()->SetTitleOffset(1.8);
186 h->SetMarkerColor(6);
187 h->SetMarkerSize(1.0);
200 else if(ndivisions<5){
203 else if(ndivisions<7){
207 else if(ndivisions<=8){
211 else if(ndivisions<10){
215 else if(ndivisions<13){
219 else if(ndivisions<17){
236 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);
238 f->SetParameter(1,
massD);
239 f->SetParLimits(0,0.,1.e+7);
240 f->SetParLimits(1,1.8,1.92);
241 f->SetParameter(2,0.010);
242 f->SetParLimits(2,0,0.1);
243 f->SetParameter(3,0.);
257 for(
Int_t iMassBin=1; iMassBin<hRatio->GetNbinsX(); iMassBin++){
258 Double_t bce=hRatio->GetBinCenter(iMassBin);
260 Double_t bco=hRatio->GetBinContent(iMassBin);
261 if(bco>norm) norm=bco;
266 TF1* func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
267 Double_t norml=func0->GetParameter(0);
269 func0=(TF1*)hRatio->GetListOfFunctions()->FindObject(
"pol0");
270 Double_t normh=func0->GetParameter(0);
271 norm=TMath::Max(norml,normh);
280 TString dirName=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffix.Data());
281 TString lstName=Form(
"coutput%s%s",meson.Data(),suffix.Data());
282 TString dirNameMC=Form(
"PWG3_D2H_InvMass%sLowPt%s",meson.Data(),suffixMC.Data());
283 TString lstNameMC=Form(
"coutput%s%s",meson.Data(),suffixMC.Data());
286 if(fileName.Contains(
"FAST") && !fileName.Contains(
"wSDD")){
287 suffix.Prepend(
"FAST_");
288 }
else if(!fileName.Contains(
"FAST") && fileName.Contains(
"wSDD")){
289 suffix.Prepend(
"wSDD_");
292 if(meson==
"Dplus")
massD=TDatabasePDG::Instance()->GetParticle(411)->Mass();
293 else if(meson==
"Dzero")
massD=TDatabasePDG::Instance()->GetParticle(421)->Mass();
295 TFile* fil=
new TFile(fileName.Data());
296 TDirectoryFile* df=(TDirectoryFile*)fil->Get(dirName.Data());
300 TH1F* hnEv=
new TH1F(
"hEvForNorm",
"events for normalization",1,0,1);
307 TH3F* h3d=(
TH3F*)l->FindObject(
"hMassVsPtVsY");
308 TH3F* h3dr=(
TH3F*)l->FindObject(
"hMassVsPtVsYRot");
309 TH3F* h3dme=(
TH3F*)l->FindObject(
"hMassVsPtVsYME");
310 TH3F* h3dmepp=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSpp");
311 TH3F* h3dmemm=(
TH3F*)l->FindObject(
"hMassVsPtVsYMELSmm");
312 TH2F* hpoolMix=(
TH2F*)l->FindObject(
"hMixingsPerPool");
313 TH2F* hpoolEv=(
TH2F*)l->FindObject(
"hEventsPerPool");
314 TH3F* h3dlsp=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSpp");
315 TH3F* h3dlsm=(
TH3F*)l->FindObject(
"hMassVsPtVsYLSmm");
320 TFile* filMC=
new TFile(fileNameMC.Data());
321 if(filMC && filMC->IsOpen()){
322 TDirectoryFile* dfMC=(TDirectoryFile*)filMC->Get(dirNameMC.Data());
323 TList* lMC=(
TList*)dfMC->Get(lstNameMC.Data());
326 printf(
"Fit to MC inv. mass spectra failed\n");
330 h3drefl=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
331 h3dmcsig=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
339 TCanvas* cem=
new TCanvas(
"cem",
"Pools",1200,600);
342 gPad->SetRightMargin(0.12);
343 gPad->SetLeftMargin(0.12);
344 hpoolMix->GetXaxis()->SetTitle(
"zVertex");
345 hpoolMix->GetYaxis()->SetTitle(
"Multiplicity");
346 hpoolMix->GetYaxis()->SetTitleOffset(1.4);
347 hpoolMix->Draw(
"colztext");
349 gPad->SetRightMargin(0.12);
350 gPad->SetLeftMargin(0.12);
351 hpoolEv->Draw(
"colztext");
352 hpoolEv->GetXaxis()->SetTitle(
"zVertex");
353 hpoolEv->GetYaxis()->SetTitle(
"Multiplicity");
354 hpoolEv->GetYaxis()->SetTitleOffset(1.4);
357 TCanvas* c1=
new TCanvas(
"c1",
"Mass",1200,800);
360 TCanvas* c2=
new TCanvas(
"c2",
"Mass-Bkg Rot",1200,800);
362 TCanvas* c2pulls=
new TCanvas(
"c2pulls",
"Mass-Bkg Rot pulls",1200,800);
364 TCanvas* c2residuals=
new TCanvas(
"c2residuals",
"Mass-Bkg Rot residuals",1200,800);
366 TCanvas* c2residualTrend=
new TCanvas(
"c2residualTrend",
"Mass-Bkg Rot residual trend vs. mass",1200,800);
368 TCanvas* c2pullTrend=
new TCanvas(
"c2pullTrend",
"Mass-Bkg Rot pull trend vs. mass",1200,800);
371 TCanvas* c3=
new TCanvas(
"c3",
"Mass-Bkg LS",1200,800);
373 TCanvas* c3pulls=
new TCanvas(
"c3pulls",
"Mass-Bkg LS pulls",1200,800);
375 TCanvas* c3residuals=
new TCanvas(
"c3residuals",
"Mass-Bkg LS residuals",1200,800);
377 TCanvas* c3residualTrend=
new TCanvas(
"c3residualTrend",
"Mass-Bkg LS residual trend vs. mass",1200,800);
379 TCanvas* c3pullTrend=
new TCanvas(
"c3pullTrend",
"Mass-Bkg LS pull trend vs. mass",1200,800);
382 TCanvas* c4=
new TCanvas(
"c4",
"Mass-Bkg EM",1200,800);
384 TCanvas* c4pulls=
new TCanvas(
"c4pulls",
"Mass-Bkg EM pulls",1200,800);
386 TCanvas* c4residuals=
new TCanvas(
"c4residuals",
"Mass-Bkg EM residuals",1200,800);
388 TCanvas* c4residualTrend=
new TCanvas(
"c4residualTrend",
"Mass-Bkg EM residual trend vs. mass",1200,800);
390 TCanvas* c4pullTrend=
new TCanvas(
"c4pullTrend",
"Mass-Bkg EM pull trend vs. mass",1200,800);
395 TCanvas *c5pulls=0x0;
396 TCanvas *c5residuals=0x0;
397 TCanvas *c5residualTrend=0x0;
398 TCanvas *c5pullTrend=0x0;
401 c5=
new TCanvas(
"c5",
"Mass SB Fit",1200,800);
403 c5sub=
new TCanvas(
"c5sub",
"Mass-Bkg SB",1200,800);
405 c5pulls=
new TCanvas(
"c5pulls",
"Mass-Bkg SB pulls",1200,800);
407 c5residuals=
new TCanvas(
"c5residuals",
"Mass-Bkg SB residuals",1200,800);
409 c5residualTrend=
new TCanvas(
"c5residualTrend",
"Mass-Bkg SB residual trend vs. mass",1200,800);
411 c5pullTrend=
new TCanvas(
"c5pullTrend",
"Mass-Bkg SB pull trend vs. mass",1200,800);
415 TCanvas *cCompareResidualTrends=
new TCanvas(
"cCompareResidualTrends",
"cCompareResidualTrends",1200,800);
427 TH1F* hRawYieldSBfit=
new TH1F(
"hRawYieldSBfit",
"",
nPtBins,
binLims);
442 TH1F* hGausMeanSBfit=
new TH1F(
"hGausMeanSBfit",
"",
nPtBins,
binLims);
447 TH1F* hGausSigmaSBfit=
new TH1F(
"hGausSigmaSBfit",
"",
nPtBins,
binLims);
459 TH1F* hRawYieldRotBC=
new TH1F(
"hRawYieldRotBC",
"BC yield (rotational background)",
nPtBins,
binLims);
460 TH1F* hRawYieldLSBC=
new TH1F(
"hRawYieldLSBC",
"BC yield (like-sign background)",
nPtBins,
binLims);
461 TH1F* hRawYieldMEBC=
new TH1F(
"hRawYieldMEBC",
"BC yield (mixed-event background)",
nPtBins,
binLims);
462 TH1F* hRawYieldSBfitBC=
new TH1F(
"hRawYieldSBfitBC",
"BC yield (direct fit background)",
nPtBins,
binLims);
464 TLatex* tME=
new TLatex(0.65,0.82,
"MixEv +- pairs");
466 TLatex* tMEpp=
new TLatex(0.65,0.75,
"MixEv ++ pairs");
468 TLatex* tMEmm=
new TLatex(0.65,0.68,
"MixEv -- pairs");
471 TF1 *fpeak=
new TF1(
"fpeak",
"[0]*1./(TMath::Sqrt(2.*TMath::Pi())*[2])*TMath::Exp(-(x-[1])*(x-[1])/(2.*[2]*[2]))",
minMass,
maxMass);
473 TDirectory *current = gDirectory;
474 TFile*
fout=
new TFile(Form(
"outputMassFits_%s_%s.root",sigConf.Data(),suffix.Data()),
"recreate");
481 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
482 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
483 TH1D* hMassPtBin=h3d->ProjectionX(Form(
"hMassPtBin%d",iPtBin),bin1,bin2);
484 TH1D* hMassPtBinr=h3dr->ProjectionX(Form(
"hMassPtBinr%d",iPtBin),bin1,bin2);
485 TH1D* hMassPtBinme=h3dme->ProjectionX(Form(
"hMassPtBinme%d",iPtBin),bin1,bin2);
486 TH1D* hMassPtBinmeLSpp=h3dmepp->ProjectionX(Form(
"hMassPtBinmeLSpp%d",iPtBin),bin1,bin2);
487 TH1D* hMassPtBinmeLSmm=h3dmemm->ProjectionX(Form(
"hMassPtBinmeLSmm%d",iPtBin),bin1,bin2);
490 Int_t bin1MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin]);
491 Int_t bin2MC=h3drefl->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
492 hMCReflPtBin=h3drefl->ProjectionX(Form(
"hMCReflPtBin%d",iPtBin),bin1MC,bin2MC);
493 hMCSigPtBin=h3dmcsig->ProjectionX(Form(
"hMCSigPtBin%d",iPtBin),bin1MC,bin2MC);
496 TH1D* hMassPtBinlsp=0x0;
497 TH1D* hMassPtBinlsm=0x0;
498 TH1D* hMassPtBinls=0x0;
500 hMassPtBinlsp=h3dlsp->ProjectionX(Form(
"hMassPtBinlsp%d",iPtBin),bin1,bin2);
501 hMassPtBinlsm=h3dlsm->ProjectionX(Form(
"hMassPtBinlsm%d",iPtBin),bin1,bin2);
502 hMassPtBinls=(
TH1D*)hMassPtBinlsp->Clone(Form(
"hMassPtBinls%d",iPtBin));
503 hMassPtBinls->Reset();
504 for(
Int_t iBin=1; iBin<=hMassPtBinlsp->GetNbinsX(); iBin++){
505 Double_t np=hMassPtBinlsp->GetBinContent(iBin);
506 Double_t nm=hMassPtBinlsm->GetBinContent(iBin);
508 Double_t enp=hMassPtBinlsp->GetBinError(iBin);
509 Double_t enm=hMassPtBinlsm->GetBinError(iBin);
511 if(tt>0) ett=2./tt*TMath::Sqrt(np*np*enm*enm+nm*nm*enp*enp);
512 hMassPtBinls->SetBinContent(iBin,tt);
513 hMassPtBinls->SetBinError(iBin,ett);
517 hMassPtBinls->SetLineColor(kGreen+1);
525 hMassPtBin->SetLineColor(1);
526 hMassPtBinr->SetLineColor(4);
527 hMassPtBinme->SetLineColor(kOrange+1);
528 hMassPtBinmeLSpp->SetLineColor(kGreen+2);
529 hMassPtBinmeLSmm->SetLineColor(kCyan);
530 hMassPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
531 hMassPtBinr->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
532 hMassPtBinme->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
533 TH1D* hRatioMEpp=(
TH1D*)hMassPtBinmeLSpp->Clone(Form(
"hRatioPtBinmeLSpp%d",iPtBin));
534 hRatioMEpp->Divide(hMassPtBinme);
535 TH1D* hRatioMEmm=(
TH1D*)hMassPtBinmeLSmm->Clone(Form(
"hRatioPtBinmeLSmm%d",iPtBin));
536 hRatioMEmm->Divide(hMassPtBinme);
537 TH1D* hMassPtBinmeAll=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioPtBinmeAll%d",iPtBin));
538 hMassPtBinmeAll->Add(hMassPtBinmeLSpp);
539 hMassPtBinmeAll->Add(hMassPtBinmeLSmm);
540 hMassPtBinmeAll->SetLineColor(kRed);
541 TH1D* hRatioME=(
TH1D*)hMassPtBinme->Clone(Form(
"hRatioME%d",iPtBin));
542 hRatioME->Divide(hMassPtBin);
543 TH1D* hRatioMEAll=(
TH1D*)hMassPtBinmeAll->Clone(Form(
"hRatioMEAll%d",iPtBin));
544 hRatioMEAll->Divide(hMassPtBin);
547 TCanvas* c0=
new TCanvas(Form(
"CBin%d",iPtBin),Form(
"Bin%d norm",iPtBin),1000,700);
550 TH1D* hRatio=(
TH1D*)hMassPtBinr->Clone(
"hRatio");
551 hRatio->Divide(hMassPtBin);
553 hRatio->GetYaxis()->SetTitle(
"Rotational/All");
554 hRatio->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
556 hMassPtBinr->Scale(1./normRot);
558 hMassPtBinme->GetYaxis()->SetTitle(
"Entries (EvMix)");
559 hMassPtBinme->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
560 hMassPtBinme->DrawCopy();
561 hMassPtBinmeLSpp->Draw(
"same");
562 hMassPtBinmeLSmm->Draw(
"same");
563 tME->SetTextColor(hMassPtBinme->GetLineColor());
564 tMEpp->SetTextColor(hMassPtBinmeLSpp->GetLineColor());
565 tMEmm->SetTextColor(hMassPtBinmeLSmm->GetLineColor());
571 hRatioMEpp->SetMinimum(0.4);
572 hRatioMEpp->SetMaximum(0.6);
573 hRatioMEpp->GetYaxis()->SetTitle(
"ME with LS / ME with OS");
574 hRatioMEpp->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
575 hRatioMEmm->Draw(
"same");
578 hRatioME->SetMaximum(hRatioMEAll->GetMaximum()*1.05);
579 hRatioMEAll->Draw(
"same");
580 hRatioME->GetYaxis()->SetTitle(
"EvMix/All");
581 hRatioME->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
585 hMassPtBinme->Scale(1./normME);
586 hMassPtBinmeAll->Scale(1./normMEAll);
587 printf(
"Background norm bin %d DONE\n",iPtBin);
591 hMassPtBin->GetYaxis()->SetTitle(
"Counts");
592 hMassPtBin->GetYaxis()->SetTitleOffset(2.);
593 hMassPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
594 hMassPtBinr->Draw(
"same");
596 else hMassPtBinmeAll->Draw(
"same");
597 if(hMassPtBinls) hMassPtBinls->Draw(
"same");
599 TLegend* leg=
new TLegend(0.5,0.6,0.89,0.89);
600 leg->SetFillStyle(0);
601 leg->AddEntry(hMassPtBin,
"All candidates",
"L")->SetTextColor(hMassPtBin->GetLineColor());
602 leg->AddEntry(hMassPtBinr,
"Background (rotations)",
"L")->SetTextColor(hMassPtBinr->GetLineColor());
603 if(!
useEMwithLS) leg->AddEntry(hMassPtBinme,
"Background (ME)",
"L")->SetTextColor(hMassPtBinme->GetLineColor());
604 else leg->AddEntry(hMassPtBinmeAll,
"Background (ME)",
"L")->SetTextColor(hMassPtBinmeAll->GetLineColor());
605 if(hMassPtBinls) leg->AddEntry(hMassPtBinls,
"Like-sign",
"L")->SetTextColor(hMassPtBinls->GetLineColor());
610 TH1D* hMassSubRot=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubRot_bin%d",iPtBin));
611 hMassSubRot->Add(hMassPtBinr,-1);
612 hMassSubRot->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Rotational",
binLims[iPtBin],
binLims[iPtBin+1]));
613 TH1D* hMassSubME=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubME_bin%d",iPtBin));
615 else hMassSubME->Add(hMassPtBinmeAll,-1);
616 hMassSubME->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Mixed Ev",
binLims[iPtBin],
binLims[iPtBin+1]));
617 TH1D* hMassSubLS=0x0;
619 hMassSubLS=(
TH1D*)hMassPtBin->Clone(Form(
"hMassSubLS_bin%d",iPtBin));
620 hMassSubLS->Add(hMassPtBinls,-1);
621 hMassSubLS->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c -- Like Sign",
binLims[iPtBin],
binLims[iPtBin+1]));
626 hMassSubRot->Write();
628 if(hMassPtBinls) hMassSubLS->Write();
629 if(hMCReflPtBin) hMCReflPtBin->Write();
630 if(hMCSigPtBin) hMCSigPtBin->Write();
644 if(hMassPtBinls) out2=fitterLS[iPtBin]->
MassFitter(0);
649 TH1D *hMassDirectFit=(
TH1D*)hMassPtBin->Clone(Form(
"hMassDirectFit_bin%d",iPtBin));
656 if(out4 && fitterSB[iPtBin]->GetMassFunc()){
658 fitterSB[iPtBin]->
DrawHere(gPad,3,0);
659 hRawYieldSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield());
660 hRawYieldSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError());
661 if(fitterSB[iPtBin]->GetRawYield()>0){
662 hRelStatSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYieldError()/fitterSB[iPtBin]->GetRawYield());
663 hRelStatSBfit->SetBinError(iPtBin+1,0.00000001);
665 fitterSB[iPtBin]->
Background(3.,background,ebkg);
666 hSoverBSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetRawYield()/background);
667 hSoverBSBfit->SetBinError(iPtBin+1,0.00000001);
668 hGausMeanSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMean());
669 hGausMeanSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetMeanUncertainty());
670 hGausSigmaSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetSigma());
671 hGausSigmaSBfit->SetBinError(iPtBin+1,fitterSB[iPtBin]->GetSigmaUncertainty());
672 hChiSqSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetReducedChiSquare());
673 hChiSqSBfit->SetBinError(iPtBin+1,0.00001);
674 hNdfSBfit->SetBinContent(iPtBin+1,fitterSB[iPtBin]->GetMassFunc()->GetNDF());
675 hNdfSBfit->SetBinError(iPtBin+1,0.00001);
681 TH1F* hsubTemp=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBack%d",hMassDirectFit->GetName(),iPtBin));
682 TH1F* hsubTempAllRange=(TH1F*)hMassDirectFit->Clone(Form(
"%sSubBackAllRange%d",hMassDirectFit->GetName(),iPtBin));
686 for(
Int_t jst=1;jst<=hsubTemp->GetNbinsX();jst++){
687 Double_t backg=funcBkg->Integral(hsubTemp->GetBinLowEdge(jst),hsubTemp->GetBinLowEdge(jst)+hsubTemp->GetBinWidth(jst))/hsubTemp->GetBinWidth(jst);
688 Double_t tot=funcAll->Integral(hsubTempAllRange->GetBinLowEdge(jst),hsubTempAllRange->GetBinLowEdge(jst)+hsubTempAllRange->GetBinWidth(jst))/hsubTempAllRange->GetBinWidth(jst);
689 hsubTemp->SetBinContent(jst,hsubTemp->GetBinContent(jst)-backg);
690 hsubTempAllRange->SetBinContent(jst,hsubTempAllRange->GetBinContent(jst)-tot);
692 hsubTemp->SetLineColor(kBlue);
693 hsubTempAllRange->SetLineColor(kGray+2);
696 for(
Int_t ibs=1; ibs<hsubTemp->GetNbinsX(); ibs++){
697 Double_t binc=hsubTemp->GetBinCenter(ibs);
699 Double_t yl=hsubTemp->GetBinContent(ibs)-hsubTemp->GetBinError(ibs);
700 Double_t yu=hsubTemp->GetBinContent(ibs)+hsubTemp->GetBinError(ibs);
705 if(ymax>0) ymax*=1.2;
707 if(ymin<0) ymin*=1.2;
710 hsubTemp->SetMinimum(ymin);
711 hsubTemp->SetMaximum(ymax);
712 hsubTemp->SetMarkerStyle(20);
713 hsubTemp->SetMarkerColor(hsubTemp->GetLineColor());
714 hsubTemp->DrawCopy();
715 hsubTempAllRange->DrawCopy(
"same");
716 hsubTemp->DrawCopy(
"same");
718 fpeak->SetParameter(0,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+1));
719 fpeak->SetParameter(1,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+2));
720 fpeak->SetParameter(2,funcAll->GetParameter(
nDegreeBackPol[iPtBin]+3));
721 fpeak->DrawCopy(
"same");
725 hRawYieldSBfitBC->SetBinContent(iPtBin+1,bc);
726 hRawYieldSBfitBC->SetBinError(iPtBin+1,errbc);
728 c5pulls->cd(iPtBin+1);
729 TH1F *hPulls=
new TH1F();
730 TH1F *hPullsTrend=
new TH1F();
731 TH1F *hResidualTrend=
new TH1F();
737 c5residuals->cd(iPtBin+1);
741 cCompareResidualTrends->cd(iPtBin+1);
742 hResidualTrend->Draw();
744 c5residualTrend->cd(iPtBin+1);
745 hResidualTrend->Draw();
747 c5pullTrend->cd(iPtBin+1);
751 delete hMassDirectFit;
756 if(out1 && fitterRot[iPtBin]->GetMassFunc()){
757 fitterRot[iPtBin]->
DrawHere(gPad,3,0);
759 hRawYieldRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield());
760 hRawYieldRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError());
761 Double_t minBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()-3.*fitterRot[iPtBin]->GetSigma());
762 Double_t maxBinBkg=hMassPtBin->FindBin(fitterRot[iPtBin]->GetMean()+3.*fitterRot[iPtBin]->GetSigma());
763 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
764 hSoverBRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYield()/background);
765 hSoverBRot->SetBinError(iPtBin+1,0.000001);
766 hRelStatRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetRawYieldError()/fitterRot[iPtBin]->GetRawYield());
767 hRelStatRot->SetBinError(iPtBin+1,0.000001);
768 hGausMeanRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMean());
769 hGausMeanRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetMeanUncertainty());
770 hGausSigmaRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetSigma());
771 hGausSigmaRot->SetBinError(iPtBin+1,fitterRot[iPtBin]->GetSigmaUncertainty());
772 hChiSqRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetReducedChiSquare());
773 hChiSqRot->SetBinError(iPtBin+1,0.00001);
774 hNdfRot->SetBinContent(iPtBin+1,fitterRot[iPtBin]->GetMassFunc()->GetNDF());
775 hNdfRot->SetBinError(iPtBin+1,0.00001);
781 hRawYieldRotBC->SetBinContent(iPtBin+1,bc);
782 hRawYieldRotBC->SetBinError(iPtBin+1,errbc);
784 c2pulls->cd(iPtBin+1);
785 TH1F *hPullsTrend=
new TH1F();
786 TH1F *hPulls=
new TH1F();
787 TH1F *hResidualTrend=
new TH1F();
793 c2residuals->cd(iPtBin+1);
797 c2residualTrend->cd(iPtBin+1);
798 hResidualTrend->Draw();
799 cCompareResidualTrends->cd(iPtBin+1);
800 if(out4)hResidualTrend->Draw(
"same");
801 else hResidualTrend->Draw();
803 c2pullTrend->cd(iPtBin+1);
807 else hMassSubRot->Draw(
"");
811 if(out2 && fitterLS[iPtBin]->GetMassFunc()){
812 fitterLS[iPtBin]->
DrawHere(gPad,3,0);
813 hRawYieldLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield());
814 hRawYieldLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError());
815 Double_t minBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()-3.*fitterLS[iPtBin]->GetSigma());
816 Double_t maxBinBkg=hMassPtBin->FindBin(fitterLS[iPtBin]->GetMean()+3.*fitterLS[iPtBin]->GetSigma());
817 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
818 hSoverBLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYield()/background);
819 hSoverBLS->SetBinError(iPtBin+1,0.000001);
820 hRelStatLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetRawYieldError()/fitterLS[iPtBin]->GetRawYield());
821 hRelStatLS->SetBinError(iPtBin+1,0.0000001);
822 hGausMeanLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMean());
823 hGausMeanLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetMeanUncertainty());
824 hGausSigmaLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetSigma());
825 hGausSigmaLS->SetBinError(iPtBin+1,fitterLS[iPtBin]->GetSigmaUncertainty());
826 hChiSqLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetReducedChiSquare());
827 hChiSqLS->SetBinError(iPtBin+1,0.00001);
828 hNdfLS->SetBinContent(iPtBin+1,fitterLS[iPtBin]->GetMassFunc()->GetNDF());
829 hNdfLS->SetBinError(iPtBin+1,0.00001);
835 hRawYieldLSBC->SetBinContent(iPtBin+1,bc);
836 hRawYieldLSBC->SetBinError(iPtBin+1,errbc);
838 c3pulls->cd(iPtBin+1);
839 TH1F *hPullsTrend=
new TH1F();
840 TH1F *hPulls=
new TH1F();
841 TH1F *hResidualTrend=
new TH1F();
847 c3residuals->cd(iPtBin+1);
851 c3residualTrend->cd(iPtBin+1);
852 hResidualTrend->Draw();
854 cCompareResidualTrends->cd(iPtBin+1);
855 if(out4||out1)hResidualTrend->Draw(
"same");
856 else hResidualTrend->Draw();
858 c3pullTrend->cd(iPtBin+1);
861 else if(hMassPtBinls) hMassSubLS->Draw(
"");
864 if(out3 && fitterME[iPtBin]->GetMassFunc()){
865 fitterME[iPtBin]->
DrawHere(gPad,3,0);
866 hRawYieldME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield());
867 hRawYieldME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetRawYieldError());
868 Double_t minBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()-3.*fitterME[iPtBin]->GetSigma());
869 Double_t maxBinBkg=hMassPtBin->FindBin(fitterME[iPtBin]->GetMean()+3.*fitterME[iPtBin]->GetSigma());
870 background=hMassPtBin->Integral(minBinBkg,maxBinBkg);
871 hSoverBME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYield()/background);
872 hSoverBME->SetBinError(iPtBin+1,0.000001);
873 hRelStatME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetRawYieldError()/fitterME[iPtBin]->GetRawYield());
874 hRelStatME->SetBinError(iPtBin+1,0.000001);
875 hGausMeanME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMean());
876 hGausMeanME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetMeanUncertainty());
877 hGausSigmaME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetSigma());
878 hGausSigmaME->SetBinError(iPtBin+1,fitterME[iPtBin]->GetSigmaUncertainty());
879 hChiSqME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetReducedChiSquare());
880 hChiSqME->SetBinError(iPtBin+1,0.00001);
881 hNdfME->SetBinContent(iPtBin+1,fitterME[iPtBin]->GetMassFunc()->GetNDF());
882 hNdfME->SetBinError(iPtBin+1,0.00001);
888 hRawYieldMEBC->SetBinContent(iPtBin+1,bc);
889 hRawYieldMEBC->SetBinError(iPtBin+1,errbc);
892 c4pulls->cd(iPtBin+1);
893 TH1F *hPullsTrend=
new TH1F();
894 TH1F *hPulls=
new TH1F();
895 TH1F *hResidualTrend=
new TH1F();
900 c4residuals->cd(iPtBin+1);
904 c4residualTrend->cd(iPtBin+1);
905 hResidualTrend->Draw();
907 cCompareResidualTrends->cd(iPtBin+1);
908 if(out4||out1||out2)hResidualTrend->Draw(
"same");
909 else hResidualTrend->Draw();
911 c4pullTrend->cd(iPtBin+1);
914 else hMassSubME->Draw(
"");
922 path.Append(
"/figures");
923 if(
gSystem->AccessPathName(path.Data())){
924 gROOT->ProcessLine(Form(
".!mkdir -p %s",path.Data()));
928 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
929 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
930 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
932 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
933 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.eps",sigConf.Data(),suffix.Data()));
937 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
938 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
939 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
941 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
942 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
943 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
945 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
946 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
947 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
949 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.eps",sigConf.Data(),suffix.Data()));
950 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.eps",sigConf.Data(),suffix.Data()));
951 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.eps",sigConf.Data(),suffix.Data()));
954 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
955 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
956 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
957 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.eps",sigConf.Data(),suffix.Data()));
964 c2->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
965 c3->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
966 c4->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
968 c2residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
969 c3residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
970 c4residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
972 c2residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
973 c3residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
974 c4residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
976 c2pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
977 c3pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
978 c4pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
980 c2pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_Rot.root",sigConf.Data(),suffix.Data()));
981 c3pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_LS.root",sigConf.Data(),suffix.Data()));
982 c4pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_EM.root",sigConf.Data(),suffix.Data()));
985 c5->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
986 c5sub->SaveAs(Form(
"figures/InvMassSpectra_%s_%s_SBsub.root",sigConf.Data(),suffix.Data()));
987 c5residuals->SaveAs(Form(
"figures/ResidualDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
988 c5residualTrend->SaveAs(Form(
"figures/residualTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
989 c5pulls->SaveAs(Form(
"figures/PullDistribution_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
990 c5pullTrend->SaveAs(Form(
"figures/pullTrendvsMass_%s_%s_SB.root",sigConf.Data(),suffix.Data()));
997 TCanvas* cry=
new TCanvas(
"cry",
"RawYield",800,700);
998 cry->SetLeftMargin(0.15);
999 hRawYieldRot->SetMarkerStyle(21);
1000 hRawYieldRot->Draw(
"P");
1001 hRawYieldRot->SetMinimum(0);
1002 hRawYieldRot->GetXaxis()->SetTitle(
"p_{T} (GeV/c)");
1003 hRawYieldRot->GetYaxis()->SetTitle(
"Raw Yield");
1004 hRawYieldRot->GetYaxis()->SetTitleOffset(1.8);
1005 Double_t max=hRawYieldRot->GetMaximum();
1006 if(hRawYieldLS->GetMaximum()>max)max=hRawYieldLS->GetMaximum();
1007 if(hRawYieldME->GetMaximum()>max)max=hRawYieldME->GetMaximum();
1009 if(hRawYieldSBfit->GetMaximum()>max)max=hRawYieldSBfit->GetMaximum();
1011 hRawYieldRot->SetMaximum(max*1.2);
1013 hRawYieldLS->SetMarkerStyle(22);
1014 hRawYieldLS->SetMarkerColor(kGreen+2);
1015 hRawYieldLS->SetLineColor(kGreen+2);
1016 hRawYieldLS->Draw(
"PZSAME");
1017 hRawYieldME->SetMarkerStyle(25);
1018 hRawYieldME->SetMarkerColor(4);
1019 hRawYieldME->SetLineColor(4);
1020 hRawYieldME->Draw(
"PSAME");
1022 hRawYieldSBfit->SetMarkerStyle(27);
1023 hRawYieldSBfit->SetMarkerColor(6);
1024 hRawYieldSBfit->SetLineColor(6);
1025 hRawYieldSBfit->Draw(
"PSAME");
1027 TLegend* legry=
new TLegend(0.7,0.7,0.89,0.89);
1028 legry->SetFillStyle(0);
1029 legry->SetBorderSize(0);
1030 legry->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1031 legry->AddEntry(hRawYieldLS,
"Like Sign",
"PL")->SetTextColor(kGreen+2);
1032 legry->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1034 legry->AddEntry(hRawYieldSBfit,
"Direct Fit",
"PL")->SetTextColor(6);
1037 if(
saveCanvasAsEps>0) cry->SaveAs(Form(
"figures/RawYield_%s_%s.eps",sigConf.Data(),suffix.Data()));
1038 if(
saveCanvasAsRoot) cry->SaveAs(Form(
"figures/RawYield_%s_%s.root",sigConf.Data(),suffix.Data()));
1042 TCanvas* cch2=
new TCanvas(
"cch2",
"Chi2",800,700);
1043 cch2->SetLeftMargin(0.15);
1044 hChiSqRot->SetMarkerStyle(21);
1045 hChiSqRot->Draw(
"P");
1046 hChiSqRot->SetMinimum(0);
1047 hChiSqRot->GetXaxis()->SetTitle(
"p_{T} (GeV/c)");
1048 hChiSqRot->GetYaxis()->SetTitle(
"#chi^{2}/ndf");
1049 hChiSqRot->GetYaxis()->SetTitleOffset(1.8);
1050 Double_t maxc=hChiSqRot->GetMaximum();
1051 if(hChiSqLS->GetMaximum()>maxc)maxc=hChiSqLS->GetMaximum();
1052 if(hChiSqME->GetMaximum()>maxc)maxc=hChiSqME->GetMaximum();
1054 if(hChiSqSBfit->GetMaximum()>maxc)maxc=hChiSqSBfit->GetMaximum();
1056 hChiSqRot->SetMaximum(maxc*1.2);
1058 hChiSqLS->SetMarkerStyle(22);
1059 hChiSqLS->SetMarkerColor(kGreen+2);
1060 hChiSqLS->SetLineColor(kGreen+2);
1061 hChiSqLS->Draw(
"PZSAME");
1062 hChiSqME->SetMarkerStyle(25);
1063 hChiSqME->SetMarkerColor(4);
1064 hChiSqME->SetLineColor(4);
1065 hChiSqME->Draw(
"PSAME");
1067 hChiSqSBfit->SetMarkerStyle(27);
1068 hChiSqSBfit->SetMarkerColor(6);
1069 hChiSqSBfit->SetLineColor(6);
1070 hChiSqSBfit->Draw(
"PSAME");
1073 if(
saveCanvasAsEps>0) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.eps",sigConf.Data(),suffix.Data()));
1074 if(
saveCanvasAsRoot) cch2->SaveAs(Form(
"figures/ChiSq_%s_%s.root",sigConf.Data(),suffix.Data()));
1076 TH1F* hRatioLSToME=(TH1F*)hRawYieldLS->Clone(
"hRatioLStoME");
1077 TH1F* hRatioRotToME=(TH1F*)hRawYieldRot->Clone(
"hRatioRottoME");
1078 TH1F* hRatioMEToME=(TH1F*)hRawYieldME->Clone(
"hRatioMEtoME");
1079 TH1F* hRatioSBToME=(TH1F*)hRawYieldSBfit->Clone(
"hRatioSBtoME");
1080 for(
Int_t ib=1; ib<=hRawYieldME->GetNbinsX(); ib++){
1081 Double_t yme=hRawYieldME->GetBinContent(ib);
1083 hRatioLSToME->SetBinContent(ib,hRawYieldLS->GetBinContent(ib)/yme);
1084 hRatioLSToME->SetBinError(ib,hRawYieldLS->GetBinError(ib)/yme);
1085 hRatioMEToME->SetBinContent(ib,hRawYieldME->GetBinContent(ib)/yme);
1086 hRatioMEToME->SetBinError(ib,hRawYieldME->GetBinError(ib)/yme);
1087 hRatioRotToME->SetBinContent(ib,hRawYieldRot->GetBinContent(ib)/yme);
1088 hRatioRotToME->SetBinError(ib,hRawYieldRot->GetBinError(ib)/yme);
1089 hRatioSBToME->SetBinContent(ib,hRawYieldSBfit->GetBinContent(ib)/yme);
1090 hRatioSBToME->SetBinError(ib,hRawYieldSBfit->GetBinError(ib)/yme);
1094 TCanvas* cry2=
new TCanvas(
"cry2",
"RawYield+Ratios",1400,700);
1097 gPad->SetLeftMargin(0.15);
1098 gPad->SetRightMargin(0.05);
1099 hRawYieldRot->Draw(
"P");
1100 hRawYieldLS->Draw(
"PZSAME");
1101 hRawYieldME->Draw(
"PSAME");
1103 hRawYieldSBfit->Draw(
"PSAME");
1107 hRatioLSToME->SetStats(0);
1108 hRatioLSToME->SetMinimum(0.3);
1109 hRatioLSToME->SetMaximum(1.7);
1110 hRatioLSToME->GetYaxis()->SetTitle(
"Ratio To EvMix");
1111 hRatioLSToME->Draw(
"same");
1112 hRatioRotToME->Draw(
"same");
1113 hRatioMEToME->Draw(
"same");
1114 hRatioSBToME->Draw(
"same");
1115 if(
saveCanvasAsEps>0) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.eps",sigConf.Data(),suffix.Data()));
1116 if(
saveCanvasAsRoot) cry2->SaveAs(Form(
"figures/RawYieldAndRatios_%s_%s.root",sigConf.Data(),suffix.Data()));
1122 cCompareResidualTrends->cd(1);
1123 TLegend *legRT=
new TLegend(*legry);
1124 legRT->SetX1NDC(0.12);
1125 legRT->SetY1NDC(0.7);
1126 legRT->SetX2NDC(0.3);
1127 legRT->SetY2NDC(0.9);
1131 TCanvas* cryBC=
new TCanvas(
"cryBC",
"RawYield with BC",800,700);
1132 cryBC->SetLeftMargin(0.15);
1133 hRawYieldRot->Draw(
"P");
1134 hRawYieldME->Draw(
"PSAME");
1135 hRawYieldLS->Draw(
"PZSAME");
1137 hRawYieldSBfit->Draw(
"PSAME");
1140 if(hRawYieldRotBC->GetMaximum()>max)max=hRawYieldRotBC->GetMaximum();
1141 if(hRawYieldLSBC->GetMaximum()>max)max=hRawYieldLSBC->GetMaximum();
1142 if(hRawYieldMEBC->GetMaximum()>max)max=hRawYieldMEBC->GetMaximum();
1144 if(hRawYieldSBfitBC->GetMaximum()>max)max=hRawYieldSBfitBC->GetMaximum();
1146 hRawYieldRot->SetMaximum(max*1.2);
1148 hRawYieldRotBC->SetMarkerStyle(21);
1149 hRawYieldRotBC->SetLineStyle(2);
1150 hRawYieldRotBC->Draw(
"PSAME");
1153 hRawYieldLSBC->SetMarkerStyle(22);
1154 hRawYieldLSBC->SetMarkerColor(kGreen+2);
1155 hRawYieldLSBC->SetLineColor(kGreen+2);
1156 hRawYieldLSBC->SetLineStyle(2);
1157 hRawYieldLSBC->Draw(
"PZSAME");
1159 hRawYieldMEBC->SetMarkerStyle(25);
1160 hRawYieldMEBC->SetMarkerColor(4);
1161 hRawYieldMEBC->SetLineColor(4);
1162 hRawYieldMEBC->SetLineStyle(2);
1163 hRawYieldMEBC->Draw(
"PSAME");
1165 hRawYieldSBfitBC->SetMarkerStyle(27);
1166 hRawYieldSBfitBC->SetMarkerColor(6);
1167 hRawYieldSBfitBC->SetLineColor(6);
1168 hRawYieldSBfitBC->SetLineStyle(2);
1169 hRawYieldSBfitBC->Draw(
"PSAME");
1172 TLegend* legryBC=
new TLegend(0.7,0.7,0.89,0.89);
1173 legryBC->SetFillStyle(0);
1174 legryBC->SetBorderSize(0);
1175 legryBC->AddEntry(hRawYieldRot,
"Rotational",
"PL")->SetTextColor(1);
1176 legryBC->AddEntry(hRawYieldRotBC,
"Rotational BC",
"PL")->SetTextColor(1);
1177 legryBC->AddEntry(hRawYieldLS,
"Like Sign ",
"PL")->SetTextColor(kGreen+2);
1178 legryBC->AddEntry(hRawYieldLSBC,
"Like Sign BC",
"PL")->SetTextColor(kGreen+2);
1179 legryBC->AddEntry(hRawYieldME,
"Ev Mix",
"PL")->SetTextColor(4);
1180 legryBC->AddEntry(hRawYieldMEBC,
"Ev Mix BC",
"PL")->SetTextColor(4);
1182 legryBC->AddEntry(hRawYieldSBfit,
"Direct Fit",
"PL")->SetTextColor(6);
1183 legryBC->AddEntry(hRawYieldSBfitBC,
"Direct Fit BC",
"PL")->SetTextColor(6);
1186 if(
saveCanvasAsEps>0) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.eps",sigConf.Data(),suffix.Data()));
1187 if(
saveCanvasAsRoot) cryBC->SaveAs(Form(
"figures/RawYieldBC_%s_%s.root",sigConf.Data(),suffix.Data()));
1193 hRawYieldRot->Write();
1194 hRawYieldLS->Write();
1195 hRawYieldME->Write();
1196 hRawYieldSBfit->Write();
1197 hRelStatRot->Write();
1198 hRelStatLS->Write();
1199 hRelStatME->Write();
1200 hRelStatSBfit->Write();
1201 hSoverBRot->Write();
1204 hSoverBSBfit->Write();
1205 hGausMeanRot->Write();
1206 hGausMeanLS->Write();
1207 hGausMeanME->Write();
1208 hGausMeanSBfit->Write();
1209 hGausSigmaRot->Write();
1210 hGausSigmaLS->Write();
1211 hGausSigmaME->Write();
1212 hGausSigmaSBfit->Write();
1216 hChiSqSBfit->Write();
1222 if(hSigmaMC) hSigmaMC->Write();
1236 Double_t minBin=histo->FindBin(mean-3.*sigma);
1237 Double_t maxBin=histo->FindBin(mean+3.*sigma);
1238 Double_t back=histo->Integral(minBin,maxBin);
1239 TPaveText* tpar=
new TPaveText(0.5,0.7,0.89,.87,
"NDC");
1240 tpar->SetBorderSize(0);
1241 tpar->SetFillStyle(0);
1242 tpar->AddText(Form(
"Mean = %.3f #pm %.3f",mean,emean));
1243 tpar->AddText(Form(
"Sigma = %.3f #pm %.3f",sigma,esigma));
1244 tpar->SetTextColor(4);
1247 TPaveText* tss=
new TPaveText(0.15,0.15,0.5,0.4,
"NDC");
1248 tss->SetBorderSize(0);
1249 tss->SetFillStyle(0);
1250 tss->AddText(Form(
"S = %.0f #pm %.0f",sig,esig));
1251 tss->AddText(Form(
"B(3#sigma) = %.3g",back));
1252 tss->AddText(Form(
"S/B (3#sigma) = %.4f",sig/back));
1254 tss->AddText(Form(
"Significance(3#sigma) = %.2f",sig/TMath::Sqrt(back+sig)));
1255 tss->SetTextColor(1);
1261 TH3F* h3d=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYSig");
1263 printf(
"hMassVsPtVsYSig not found\n");
1266 TH3F* h3dr=(
TH3F*)lMC->FindObject(
"hMassVsPtVsYRefl");
1268 printf(
"hMassVsPtVsYRefl not found\n");
1272 TCanvas* cmc1=
new TCanvas(
"InvMassMC",
"InvMassMC",1200,800);
1275 gStyle->SetOptFit(0);
1276 gStyle->SetOptStat(0);
1279 Int_t bin2=h3d->GetYaxis()->FindBin(
binLims[iPtBin+1]-0.0001);
1282 printf(
"Bin %d Pt range=%f %f\n",iPtBin,h3d->GetYaxis()->GetBinLowEdge(bin1),h3d->GetYaxis()->GetBinUpEdge(bin2));
1283 TH1D* hMassMCPtBin=h3d->ProjectionX(Form(
"hMassMCPtBin%d",iPtBin),bin1,bin2);
1284 hMassMCPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1285 hMassMCPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1286 hMassMCPtBin->GetXaxis()->SetRangeUser(1.65,2.06);
1289 hMassMCPtBin->Fit(
"gaus",
"");
1290 TF1* fg=(TF1*)hMassMCPtBin->GetListOfFunctions()->FindObject(
"gaus");
1291 TLatex* tsig=
new TLatex(0.65,0.82,
"Signal");
1293 tsig->SetTextColor(kBlue+1);
1296 TPaveText* t1=
new TPaveText(0.15,0.55,0.4,0.88,
"ndc");
1297 t1->SetFillStyle(0);
1298 t1->SetBorderSize(0);
1299 t1->AddText(Form(
"#mu = %.4f GeV/c^{2}",fg->GetParameter(1)));
1300 t1->AddText(Form(
"#sigma = %.4f GeV/c^{2}",fg->GetParameter(2)));
1301 t1->AddText(Form(
"Integral = %.0f",fg->Integral(1.7,2.1)/hMassMCPtBin->GetBinWidth(1)));
1302 t1->AddText(Form(
"Entries = %.0f",hMassMCPtBin->GetEntries()));
1305 TH1D* hReflPtBin=h3dr->ProjectionX(Form(
"hReflPtBin%d",iPtBin),bin1,bin2);
1306 hReflPtBin->SetTitle(Form(
"%.1f<p_{T}<%.1f GeV/c",
binLims[iPtBin],
binLims[iPtBin+1]));
1307 hReflPtBin->GetXaxis()->SetTitle(
"Invariant mass (GeV/c^{2})");
1308 hReflPtBin->SetLineColor(2);
1309 Int_t bin1=hReflPtBin->FindBin(fg->GetParameter(1)-3.*fg->GetParameter(2));
1310 Int_t bin2=hReflPtBin->FindBin(fg->GetParameter(1)+3.*fg->GetParameter(2));
1311 TLatex* tref=
new TLatex(0.65,0.75,
"Reflections");
1313 tref->SetTextColor(2);
1315 t1->AddText(Form(
"Refl(3#sigma) = %.0f",hReflPtBin->Integral(bin1,bin2)));
1316 hReflPtBin->Draw(
"same");
1317 hSigmaMC->SetBinContent(iPtBin+1,fg->GetParameter(2));
1318 hSigmaMC->SetBinError(iPtBin+1,fg->GetParError(2));
1319 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)
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 * FitMCInvMassSpectra(TList *lMC)
TH1F * GetHistoClone() const
Double_t GetRawYield() const
void WriteFitInfo(AliHFInvMassFitter *fitter, TH1D *histo)