80 bool isBatch = gROOT->IsBatch();
81 gROOT->SetBatch(kTRUE);
85 RooPlot* frame = eNow.frame(40) ;
86 dataE->plotOn(frame) ;
88 TString name = (nTag ==
"B0") ?
"B^{0}" :
"B^{#pm}";
89 sumB.paramOn(frame, Label(name), Format(
"TE"), Layout(0.5, 0.8, 0.85));
92 sumB.plotOn(frame, Components(argus), LineStyle(kDashed)) ;
93 sumB.plotOn(frame, Components(gauss), LineStyle(kDashed), LineColor(kRed)) ;
97 frame->GetXaxis()->SetTitleSize(0.0001);
98 frame->GetXaxis()->SetLabelSize(0.0001);
99 frame->SetTitleSize(0.0001);
100 frame->GetYaxis()->SetTitleSize(0.055);
101 frame->GetYaxis()->SetTitleOffset(1.1);
102 frame->GetYaxis()->SetLabelSize(0.05) ;
107 RooHist* hpull = frame->pullHist() ;
109 RooPlot* frameRat = eNow.frame(Title(
"."));
110 frameRat->GetYaxis()->SetTitle(
"Pull");
111 frameRat->GetYaxis()->CenterTitle();
112 frameRat->GetYaxis()->SetTitleSize(0.13);
114 frameRat->GetYaxis()->SetNdivisions(504);
115 frameRat->GetYaxis()->SetLabelSize(0.12);
116 frameRat->GetXaxis()->SetTitleSize(0.12);
117 frameRat->GetXaxis()->SetTitleOffset(1.1);
118 frameRat->GetXaxis()->SetLabelSize(0.12);
120 frameRat->GetYaxis()->SetTitleOffset(0.4);
121 frameRat->addPlotable(hpull,
"x0 P E1");
122 frameRat->SetMaximum(5.);
123 frameRat->SetMinimum(-5.);
125 TCanvas* c1 =
new TCanvas(nTag +
"_can");
126 TPad* pad =
new TPad(nTag +
"_pad",
"pad", 0, 0.3, 1, 1.0);
127 pad->SetBottomMargin(0.03);
128 pad->SetRightMargin(0.05);
129 pad->SetLeftMargin(0.15);
135 TLine* ll =
new TLine;
136 double mRev = 10578e-3 / 2;
137 ll->SetLineColor(kGreen);
138 ll->DrawLine(mRev, 0, mRev, frame->GetMaximum());
142 TPad* padRat =
new TPad(nTag +
"_padRat",
"padRat", 0, 0.00, 1, 0.3);
143 padRat->SetTopMargin(0.04);
144 padRat->SetBottomMargin(0.35);
145 padRat->SetRightMargin(0.05);
146 padRat->SetLeftMargin(0.15);
152 TLine* l =
new TLine(5279.34e-3, 0.0, 5.37, 0.0);
153 l->SetLineColor(kBlue);
157 gROOT->SetBatch(isBatch);
169 RooRealVar eNow(
"eNow",
"E^{*}_{B} [GeV]", cMBp, 5.37);
171 RooDataHist* dataE0 =
new RooDataHist(
"dataE0hist",
"Dataset from histogram", RooArgSet(eNow), hB0);
172 RooDataHist* dataEp =
new RooDataHist(
"dataEphist",
"Dataset from histogram", RooArgSet(eNow), hBp);
175 RooCategory Bcharge(
"sample",
"sample") ;
176 Bcharge.defineType(
"B0") ;
177 Bcharge.defineType(
"Bp") ;
179 RooDataHist combData(
"combData",
"combined data", eNow, Index(Bcharge), Import(
"B0", *dataE0), Import(
"Bp", *dataEp));
183 RooRealVar sigmean(
"mean",
"#mu", 5.29, 5.27, 5.30) ;
184 RooRealVar sigwidth(
"sigma",
"#sigma", 0.00237, 0.0001, 0.030) ;
186 RooGaussian gauss(
"gauss",
"gaussian PDF", eNow, sigmean, sigwidth) ;
189 RooRealVar argpar(
"Argus_param",
"c_{Argus}", -150.7, -300., +50.0) ;
190 RooRealVar endpointBp(
"EndPointBp",
"endPoint parameter", cMBp, 5.27, 5.291) ;
191 RooRealVar endpointB0(
"EndPointB0",
"endPoint parameter", cMB0, 5.27, 5.291) ;
192 endpointB0.setConstant(kTRUE);
193 endpointBp.setConstant(kTRUE);
197 RooPolyVar shape2B0(
"EndPoint2B0",
"shape parameter", endpointB0, RooArgSet(RooConst(0.), RooConst(2.)));
198 RooPolyVar eNowDifB0(
"eNowDifB0",
"eNowDifB0", eNow, RooArgSet(shape2B0, RooConst(-1.)));
199 RooArgusBG argusB0(
"argusB0",
"Argus PDF", eNowDifB0, endpointB0, argpar) ;
202 RooPolyVar shape2Bp(
"EndPoint2Bp",
"shape parameter", endpointBp, RooArgSet(RooConst(0.), RooConst(2.)));
203 RooPolyVar eNowDifBp(
"eNowDifBp",
"eNowDifBp", eNow, RooArgSet(shape2Bp, RooConst(-1.)));
204 RooArgusBG argusBp(
"argusBp",
"Argus PDF", eNowDifBp, endpointBp, argpar) ;
208 RooRealVar nsigB0(
"nsigB0",
"N_{sig}^{B^{0}}", 100, 0., 100000) ;
209 RooRealVar nbkgB0(
"nbkgB0",
"N_{bg}", 100, 0., 500000) ;
211 RooRealVar nsigBp(
"nsigBp",
"N_{sig}^{B^{#pm}}", 100, 0., 100000) ;
212 RooRealVar nbkgBp(
"nbkgBp",
"N_{bg}", 100, 0., 500000) ;
216 RooAddPdf sumB0(
"sumB0",
"g0+a0", RooArgList(gauss, argusB0), RooArgList(nsigB0, nbkgB0)) ;
217 RooAddPdf sumBp(
"sumBp",
"gP+aP", RooArgList(gauss, argusBp), RooArgList(nsigBp, nbkgBp)) ;
221 RooSimultaneous simPdf(
"simPdf",
"simultaneous pdf", Bcharge) ;
225 simPdf.addPdf(sumB0,
"B0") ;
226 simPdf.addPdf(sumBp,
"Bp") ;
229 simPdf.fitTo(combData);
232 m_canvas =
new TCanvas(
"ecms",
"ecms", 1500, 800);
233 TCanvas* c0 =
plotArgusFit(dataE0, sumB0, argusB0, gauss, eNow,
"B0");
234 TCanvas* cp =
plotArgusFit(dataEp, sumBp, argusBp, gauss, eNow,
"Bp");
240 for (
auto obj : *cp->GetListOfPrimitives()) obj->DrawClone();
242 for (
auto obj : *c0->GetListOfPrimitives()) obj->DrawClone();
254 return {{
"EcmsBBcnt", 2 * sigmean.getValV()}, {
"EcmsBBcntUnc", 2 * sigmean.getError()},
255 {
"EcmsBBspread", 2 * sigwidth.getValV()}, {
"EcmsBBspreadUnc", 2 * sigwidth.getError()}, {
"EcmsBBnsigB0", nsigB0.getValV()}, {
"EcmsBBnsigB0Unc", nsigB0.getError()}, {
"EcmsBBnsigBp", nsigBp.getValV()}, {
"EcmsBBnsigBpUnc", nsigBp.getError()}};