29 from ROOT
import Belle2
30 import modularAnalysis
as ma
33 from variables
import variables
as mc_variables
39 validation_path = b2.Path()
41 ma.inputMdstList(
"default", inputFiles, path=validation_path)
44 ma.fillParticleListsFromMC([B0s],
True, path=validation_path)
46 ma.matchMCTruth(
'B0:all', path=validation_path)
48 Upsilon4S = (
'Upsilon(4S):all',
'')
49 ma.fillParticleListsFromMC([Upsilon4S],
True, path=validation_path)
51 ma.matchMCTruth(
'Upsilon(4S):all', path=validation_path)
53 labelAsymmetry =
"#frac{N^{#it{B}^{0}} - N^{#bar{#it{B}}^{0}}}{N^{#it{B}^{0}} + N^{#bar{#it{B}}^{0}}}"
56 def plotWithAsymmetry(
72 Produces a plot with an asymmetry (y_A -y_B)/(y_A + y_B) below, where y_A and y_B are the y values of curves A and B.
77 rooFitFrame.GetXaxis().SetTitle(
"")
78 rooFitFrame.GetXaxis().SetLabelSize(0)
80 rooFitFrame.GetYaxis().SetTitleSize(0.072)
81 rooFitFrame.GetYaxis().SetTitleOffset(0.98)
82 rooFitFrame.GetYaxis().SetLabelSize(0.055)
87 pointsHist = ROOT.RooHist()
93 xValDot = ROOT.Double(-1.E30)
94 yValDotA = ROOT.Double(-1.E30)
95 yValDotB = ROOT.Double(-1.E30)
97 iDotsA = ROOT.RooRealVar(
"iDotsA",
"", 0.)
98 idotsB = ROOT.RooRealVar(
"idotsB",
"", 0.)
101 iAsymmetry = ROOT.RooFormulaVar(
"yComb",
"",
"(@0 - @1)/(@0 + @1)", ROOT.RooArgList(iDotsA, idotsB))
103 while iBin < dotsA.GetN() - 1:
104 dotsA.GetPoint(iBin, xValDot, yValDotA)
105 dotsB.GetPoint(iBin, xValDot, yValDotB)
107 iDotsA.setVal(yValDotA)
108 idotsB.setVal(yValDotB)
110 errA = float(dotsA.GetErrorYlow(iBin) + dotsA.GetErrorYhigh(iBin))
111 errB = float(dotsB.GetErrorYlow(iBin) + dotsB.GetErrorYhigh(iBin))
113 if np.isnan(iAsymmetry.getVal())
is not True:
115 asymValue = iAsymmetry.getVal()
117 if (yValDotA + yValDotB) > 0:
118 asymError = float(2 * math.sqrt(yValDotA**2 * errA**2 + yValDotB**2 * errB**2) / (yValDotA + yValDotB)**2)
123 if abs(asymValue) > 3:
129 pointsHist.addBinWithXYError(xValDot, asymValue,
130 dotsA.GetErrorXlow(iBin),
131 dotsA.GetErrorXhigh(iBin),
132 asymError, asymError,)
136 pointsHist.SetMarkerStyle(dotsA.GetMarkerStyle())
139 rooFitFramAsym = rooRealVar.frame()
143 rooFitFramAsym.GetXaxis().SetTickSize(0.07)
144 rooFitFramAsym.GetYaxis().SetTickSize(0.024)
146 rooFitFramAsym.SetTitle(
"")
147 rooFitFramAsym.GetXaxis().SetTitle(rooRealVar.GetTitle() +
" " + units)
148 rooFitFramAsym.GetYaxis().SetTitle(asymmVarName +
" ")
150 if asymmVarName ==
"#it{a}(#Delta#it{t})":
151 rooFitFramAsym.GetXaxis().SetTitleSize(0.2)
152 rooFitFramAsym.GetXaxis().SetTitleOffset(0.9)
153 rooFitFramAsym.GetYaxis().SetTitleSize(0.19)
154 rooFitFramAsym.GetYaxis().SetTitleOffset(0.32)
156 rooFitFramAsym.GetXaxis().SetTitleSize(0.18)
157 rooFitFramAsym.GetXaxis().SetTitleOffset(0.95)
158 rooFitFramAsym.GetYaxis().SetTitleSize(0.13)
159 rooFitFramAsym.GetYaxis().SetTitleOffset(0.52)
161 rooFitFramAsym.GetXaxis().SetLabelSize(0.155)
162 rooFitFramAsym.GetYaxis().SetLabelSize(0.120)
164 rooFitFramAsym.SetAxisRange(-1.0, 1.0,
"Y")
165 rooFitFramAsym.GetYaxis().SetNdivisions(10)
166 rooFitFramAsym.GetYaxis().ChangeLabel(1, -1, 0.)
167 rooFitFramAsym.GetYaxis().ChangeLabel(3, -1, 0.)
168 rooFitFramAsym.GetYaxis().ChangeLabel(5, -1, 0.)
169 rooFitFramAsym.GetYaxis().ChangeLabel(6, -1, -1, -1, -1, -1,
"0.0")
170 rooFitFramAsym.GetYaxis().ChangeLabel(7, -1, 0.)
171 rooFitFramAsym.GetYaxis().ChangeLabel(9, -1, 0.)
172 rooFitFramAsym.GetYaxis().ChangeLabel(11, -1, 0.)
176 gLine0 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0,
177 rooFitFramAsym.GetXaxis().GetXmax(), 0)
178 gLine0.SetLineWidth(1)
179 gLine0.SetLineColor(13)
180 gLine0.SetLineStyle(3)
182 gLine1 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0.4,
183 rooFitFramAsym.GetXaxis().GetXmax(), 0.4)
184 gLine1.SetLineWidth(1)
185 gLine1.SetLineColor(13)
186 gLine1.SetLineStyle(3)
188 gLine2 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), -0.4,
189 rooFitFramAsym.GetXaxis().GetXmax(), -0.4)
190 gLine2.SetLineWidth(1)
191 gLine2.SetLineColor(13)
192 gLine2.SetLineStyle(3)
194 gLine3 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0.8,
195 rooFitFramAsym.GetXaxis().GetXmax(), 0.8)
196 gLine3.SetLineWidth(1)
197 gLine3.SetLineColor(13)
198 gLine3.SetLineStyle(3)
200 gLine4 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), -0.8,
201 rooFitFramAsym.GetXaxis().GetXmax(), -0.8)
202 gLine4.SetLineWidth(1)
203 gLine4.SetLineColor(13)
204 gLine4.SetLineStyle(3)
206 c1 = ROOT.TCanvas(
"c1",
"c1", 700, 640)
207 c1.SetBottomMargin(0)
210 Pad1 = ROOT.TPad(
"p1",
"p1", 0, 0.277, 1, 1, 0)
211 Pad2 = ROOT.TPad(
"p2",
"p2", 0, 0, 1, 0.276, 0)
215 Pad1.SetLeftMargin(0.15)
216 Pad1.SetBottomMargin(0.02)
217 Pad1.SetTopMargin(0.06)
219 Pad2.SetLeftMargin(0.15)
220 Pad2.SetBottomMargin(0.4)
221 Pad2.SetTopMargin(0.01)
224 rooFitFramAsym.Draw()
230 pointsHist.Draw(
"P SAME")
248 nameOfPlot =
"WithAsymm" + nameOfPlot +
".pdf"
249 c1.SaveAs(nameOfPlot)
255 This class makes plots to validate the generated CP asymmetry. It saves the decay time information of the simulation
256 for both B mesons by running as a basf2 module. It fills the information in RooDataSets and at the end it fits the
257 known quantum mechanical pdfs to the delta T distribution and the individual decay time distributions of
258 the signal and the tag-side B mesons to check if the S and the A parameters in the simulation are correct.
327 Here the module initializes by declaring the variables corresponding to the interesting physical parameters and
328 decay times. The RooDataSets where the information will be saved are also declared.
333 self.
DTDT = ROOT.RooRealVar(
"DT",
"#Delta#it{t}", 0., -11., 11.,
"ps")
334 self.
TsigTsig = ROOT.RooRealVar(
"Tsig",
"#it{t}_{sig}^{gen}", 0., 0., 11.,
"ps")
335 self.
TtagTtag = ROOT.RooRealVar(
"Ttag",
"#it{t}_{tag}^{gen}", 0., 0., 11.,
"ps")
336 self.
DT0DT0 = ROOT.RooRealVar(
"DT0",
"DT0", 0., -7., 7.)
337 self.
TauTau = ROOT.RooRealVar(
"Tau",
"Tau", 1.525, 0., 4.)
338 self.
AA = ROOT.RooRealVar(
"A",
"A", 0, -1, 1)
339 self.
SS = ROOT.RooRealVar(
"S",
"S", 0, -1, 1)
340 self.
DMDM = ROOT.RooRealVar(
"DM",
"DM", 0.507)
341 self.
NormNorm = ROOT.RooRealVar(
"Norm",
"Norm", 2, 1, 8)
342 self.
BetaGammaBetaGamma = ROOT.RooRealVar(
"BetaGamma",
"BetaGamma", 0.5, 0.1, 1)
344 self.
qq = ROOT.RooCategory(
"q",
"q")
345 self.
qq.defineType(
"1")
346 self.
qq.defineType(
"-1")
348 self.
qsigqsig = ROOT.RooCategory(
"qsig",
"qsig")
349 self.
qsigqsig.defineType(
"1")
350 self.
qsigqsig.defineType(
"-1")
352 self.
fitDatafitData = ROOT.RooDataSet(
"fitData",
"fitData", ROOT.RooArgSet(self.
DTDT, self.
qq))
353 self.
fitDataTagfitDataTag = ROOT.RooDataSet(
"fitDataTag",
"fitDataTag", ROOT.RooArgSet(self.
TtagTtag, self.
qq))
354 self.
fitDataTagDeltaTPosfitDataTagDeltaTPos = ROOT.RooDataSet(
"fitDataTagDeltaTPos",
"fitDataTagDeltaTPos", ROOT.RooArgSet(self.
TtagTtag, self.
qq))
355 self.
fitDataTagDeltaTNegfitDataTagDeltaTNeg = ROOT.RooDataSet(
"fitDataTagDeltaTNeg",
"fitDataTagDeltaTNeg", ROOT.RooArgSet(self.
TtagTtag, self.
qq))
356 self.
fitDataSigfitDataSig = ROOT.RooDataSet(
"fitDataSig",
"fitDataSig", ROOT.RooArgSet(self.
TsigTsig, self.
qq, self.
qsigqsig))
357 self.
fitDataSigDeltaTPosfitDataSigDeltaTPos = ROOT.RooDataSet(
"fitDataSigDeltaTPos",
"fitDataSigDeltaTPos", ROOT.RooArgSet(self.
TsigTsig, self.
qq))
358 self.
fitDataSigDeltaTNegfitDataSigDeltaTNeg = ROOT.RooDataSet(
"fitDataSigDeltaTNeg",
"fitDataSigDeltaTNeg", ROOT.RooArgSet(self.
TsigTsig, self.
qq))
370 self.
DeltaZsigUpsilonDeltaZsigUpsilon = ROOT.RooRealVar(
"DeltaZsigUpsilon",
"(#it{z}_{sig}^{dec} - #it{z}_{sig}^{prod})^{gen}", 0., 0., 0.8)
373 "(#it{z}_{tag}^{dec} - #it{z}_{tag}^{prod})^{gen}",
379 "fitDataDeltaZsigUpsilon",
380 "fitDataDeltaZsigUpsilon",
385 "fitDataDeltaZtagUpsilon",
386 "fitDataDeltaZtagUpsilon",
393 self.
TsigPosNegTsigPosNeg = ROOT.RooRealVar(
"Tsig",
"#it{t}_{sig}^{gen}", 0., 0., 7.,
"ps")
394 self.
TtagPosNegTtagPosNeg = ROOT.RooRealVar(
"Ttag",
"#it{t}_{tag}^{gen}", 0., 0., 7.,
"ps")
398 Here the information is collected event by event.
416 for index
in range(0, plistUpsilon.obj().getListSize()):
417 Upsilon4Sparticle = plistUpsilon.obj().getParticle(index)
419 if Upsilon4Sparticle.getPDGCode() == 300553:
420 zUpsilon = mc_variables.evaluate(
"mcZ", Upsilon4Sparticle)
422 for index
in range(0, plist.obj().getListSize()):
423 B0particle = plist.obj().getParticle(index)
428 if B0particle.getNDaughters() == 2:
430 for B0daughter
in B0particle.getDaughters():
431 B0daughters.append(B0daughter)
432 if (abs(B0daughters[0].getPDGCode()) == 443
and abs(B0daughters[1].getPDGCode()) == 310)
or \
433 (abs(B0daughters[1].getPDGCode()) == 443
and abs(B0daughters[0].getPDGCode()) == 310)
or \
434 (abs(B0daughters[1].getPDGCode()) == 16
and abs(B0daughters[0].getPDGCode()) == 16):
439 tSig = mc_variables.evaluate(
"mcDecayTime", B0particle)
440 zSig = mc_variables.evaluate(
"mcZ", B0particle)
441 sigPDG = B0particle.getPDGCode()
443 tTag = mc_variables.evaluate(
"mcDecayTime", B0particle)
444 zTag = mc_variables.evaluate(
"mcZ", B0particle)
445 tagPDG = B0particle.getPDGCode()
448 B0Flags.append(isB0sig)
450 rejectEventFlag =
False
452 DeltaT = 1000 * (tSig - tTag)
455 if len(B0Flags) == 2:
456 if B0Flags[0] != B0Flags[1]
and rejectEventFlag
is not True:
460 self.
DTDT.setVal(DeltaT)
461 self.
TsigTsig.setVal(float(1000 * tSig))
462 self.
TtagTtag.setVal(float(1000 * tTag))
465 self.
qq.setLabel(
"1")
468 self.
qq.setLabel(
"-1")
471 self.
qsigqsig.setLabel(
"1")
474 self.
qsigqsig.setLabel(
"-1")
476 self.
fitDatafitData.add(ROOT.RooArgSet(self.
DTDT, self.
qq))
495 Here the known quantum mechanical pdfs are defined and fitted to the generated MC distributions.
496 Afterwards, the plots are saved.
504 self.
DMDM.setConstant(ROOT.kTRUE)
505 self.
TauTau.setConstant(ROOT.kTRUE)
506 self.
DT0DT0.setConstant(ROOT.kTRUE)
507 self.
NormNorm.setConstant(ROOT.kTRUE)
516 DeltaTp = ROOT.RooGenericPdf(
519 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1+(A*cos(DM*DT)+S*sin(DM*DT)))",
528 DeltaTm = ROOT.RooGenericPdf(
531 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1-(A*cos(DM*DT)+S*sin(DM*DT)))",
540 DeltaT = ROOT.RooSimultaneous(
"DeltaT",
"DeltaT", self.
qq)
541 DeltaT.addPdf(DeltaTp,
"1")
542 DeltaT.addPdf(DeltaTm,
"-1")
545 fitRes = DeltaT.fitTo(
546 self.
fitDatafitData, ROOT.RooFit.Minos(
547 ROOT.kFALSE), ROOT.RooFit.Extended(
548 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
551 DTFrame = self.
DTDT.frame()
552 print(
"here", str(DTFrame.GetXaxis().GetXmax()))
553 self.
fitDatafitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())))
554 self.
fitDatafitData.plotOn(DTFrame,
555 ROOT.RooFit.Cut(
"q==q::1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
556 ROOT.RooFit.MarkerColor(ROOT.kRed),
557 ROOT.RooFit.Name(
"data_histB0"))
558 self.
fitDatafitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"q==1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
559 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1), ROOT.RooFit.Name(
"data_histAB0"))
567 ROOT.RooFit.ProjWData(
571 ROOT.RooFit.LineWidth(3),
572 ROOT.RooFit.LineColor(
574 ROOT.RooFit.LineStyle(3))
577 ROOT.RooFit.ProjWData(
581 ROOT.RooFit.LineWidth(3),
582 ROOT.RooFit.LineColor(
584 ROOT.RooFit.Components(
"DeltaTp"))
585 DeltaT.plotOn(DTFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
qq), self.
fitDatafitData), ROOT.RooFit.LineWidth(
586 3), ROOT.RooFit.LineColor(ROOT.kBlue + 1), ROOT.RooFit.LineStyle(7), ROOT.RooFit.Components(
"DeltaTm"))
589 DTFrame.GetXaxis().SetTitle(
"#Delta#it{t}^{gen} [ps]")
590 DTFrame.GetXaxis().SetTitleSize(0.05)
591 DTFrame.GetXaxis().SetLabelSize(0.045)
592 DTFrame.GetYaxis().SetTitleSize(0.05)
593 DTFrame.GetYaxis().SetTitleOffset(1.5)
594 DTFrame.GetYaxis().SetLabelSize(0.045)
596 c1 = ROOT.TCanvas(
"c1",
"c1", 1400, 1100)
601 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
602 Pad.SetLeftMargin(0.15)
603 Pad.SetBottomMargin(0.15)
609 curveMC = DTFrame.getCurve(
"DeltaT_Norm[DT]")
610 curveMCB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTp]")
611 curveMCAB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTm]")
612 curveMC.SetFillColor(ROOT.kWhite)
613 curveMCB0.SetFillColor(ROOT.kWhite)
614 curveMCAB0.SetFillColor(ROOT.kWhite)
616 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
617 lMC.AddEntry(curveMC,
"Both")
618 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
619 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
621 lMC.SetTextSize(0.065)
624 textFitRes =
"#it{A}_{#it{CP}} = " + \
625 '{: 1.2f}'.format(self.
AA.getValV()
if abs(self.
AA.getValV()) > 0.005
else abs(self.
AA.getValV())) + \
626 ", " +
"#it{S}_{#it{CP}} = " + \
627 '{: 1.2f}'.format(self.
SS.getValV()
if abs(self.
SS.getValV()) > 0.005
else abs(self.
SS.getValV()))
629 lFitRes = ROOT.TLegend(0.215, 0.905, 0.7, 0.98)
630 lFitRes.AddEntry(
"", textFitRes,
" ")
631 lFitRes.SetBorderSize(0)
632 lFitRes.SetTextSize(0.054)
645 "#it{A}_{#it{CP}} = " +
654 "#it{A}_{#it{CP}} = " +
662 c1.SaveAs(
"./" +
'B0_JPsiKs_DeltaTFittedOnGenMC.pdf')
665 dotsMC = DTFrame.getHist(
"h_fitData")
666 dotsMCB0 = DTFrame.getHist(
"data_histB0")
667 dotsMCAB0 = DTFrame.getHist(
"data_histAB0")
679 "DeltaTFittedOnGenMC",
682 "#it{a}_{#it{CP}}(#Delta#it{t})",
693 self.
SS.setConstant(ROOT.kTRUE)
694 self.
AA.setConstant(ROOT.kTRUE)
697 DeltaZtagUpsilonp = ROOT.RooGenericPdf(
700 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
701 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
702 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
703 "/(1+(Tau*DM)*(Tau*DM)))",
712 DeltaZtagUpsilonm = ROOT.RooGenericPdf(
715 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - " +
716 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
717 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
718 "/(1+(Tau*DM)*(Tau*DM)))",
727 DeltaZtagUpsilonModel = ROOT.RooSimultaneous(
"DeltaZtagUpsilonModel",
"DeltaZtagUpsilonModel", self.
qq)
728 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonp,
"1")
729 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonm,
"-1")
730 DeltaZtagUpsilonModel.Print()
732 fitResTag = DeltaZtagUpsilonModel.fitTo(
734 ROOT.kFALSE), ROOT.RooFit.Extended(
735 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
741 DeltaZtagUpsilonFrame,
742 ROOT.RooFit.Cut(
"q==q::1"),
743 ROOT.RooFit.MarkerColor(
745 ROOT.RooFit.Name(
"data_histB0tag"))
747 DeltaZtagUpsilonFrame,
748 ROOT.RooFit.Cut(
"q==1"),
749 ROOT.RooFit.MarkerColor(
751 ROOT.RooFit.Name(
"data_histAB0tag"))
753 DeltaZtagUpsilonModel.plotOn(
754 DeltaZtagUpsilonFrame,
755 ROOT.RooFit.ProjWData(
759 ROOT.RooFit.LineWidth(3),
760 ROOT.RooFit.LineColor(
762 ROOT.RooFit.LineStyle(3))
763 DeltaZtagUpsilonModel.plotOn(
764 DeltaZtagUpsilonFrame,
765 ROOT.RooFit.ProjWData(
769 ROOT.RooFit.LineWidth(3),
770 ROOT.RooFit.LineColor(
772 ROOT.RooFit.Components(
"DeltaZtagUpsilonp"))
773 DeltaZtagUpsilonModel.plotOn(
774 DeltaZtagUpsilonFrame,
775 ROOT.RooFit.ProjWData(
779 ROOT.RooFit.LineWidth(3),
780 ROOT.RooFit.LineColor(
782 ROOT.RooFit.LineStyle(7),
783 ROOT.RooFit.Components(
"DeltaZtagUpsilonm"))
784 DeltaZtagUpsilonFrame.SetTitle(
"")
785 DeltaZtagUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{tag}^{dec} - #it{z}_{tag}^{prod}){}^{gen} [mm]")
786 DeltaZtagUpsilonFrame.GetXaxis().SetTitleSize(0.05)
787 DeltaZtagUpsilonFrame.GetXaxis().SetLabelSize(0.045)
788 DeltaZtagUpsilonFrame.GetYaxis().SetTitleSize(0.05)
789 DeltaZtagUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
790 DeltaZtagUpsilonFrame.GetYaxis().SetLabelSize(0.045)
792 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
797 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
798 Pad.SetLeftMargin(0.15)
799 Pad.SetBottomMargin(0.15)
802 DeltaZtagUpsilonFrame.Draw()
804 curveMC = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]")
805 curveMCB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonp]")
806 curveMCAB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonm]")
807 curveMC.SetFillColor(ROOT.kWhite)
808 curveMCB0.SetFillColor(ROOT.kWhite)
809 curveMCAB0.SetFillColor(ROOT.kWhite)
811 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
812 lMC.AddEntry(curveMC,
"Both")
813 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
814 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
816 lMC.SetTextSize(0.065)
820 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZtagUpsilonFittedOnGenMC.pdf')
823 dotsMC = DeltaZtagUpsilonFrame.getHist(
"h_fitDataDeltaZtagUpsilon")
824 dotsMCB0 = DeltaZtagUpsilonFrame.getHist(
"data_histB0tag")
825 dotsMCAB0 = DeltaZtagUpsilonFrame.getHist(
"data_histAB0tag")
828 DeltaZtagUpsilonFrame,
837 "DeltaZtagUpsilonFittedOnGenMC",
843 self.
SS.setConstant(ROOT.kFALSE)
844 self.
AA.setConstant(ROOT.kFALSE)
858 Ttagp = ROOT.RooGenericPdf(
861 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 + " +
862 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
870 Ttagm = ROOT.RooGenericPdf(
873 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 - " +
874 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
882 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
qq)
883 TtagModel.addPdf(Ttagp,
"1")
884 TtagModel.addPdf(Ttagm,
"-1")
887 fitResTag = TtagModel.fitTo(
889 ROOT.kFALSE), ROOT.RooFit.Extended(
890 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
893 TtagFrame = self.
TtagTtag.frame()
897 ROOT.RooFit.Cut(
"q==q::1"),
898 ROOT.RooFit.MarkerColor(
900 ROOT.RooFit.Name(
"data_histB0tag"))
903 ROOT.RooFit.Cut(
"q==1"),
904 ROOT.RooFit.MarkerColor(
906 ROOT.RooFit.Name(
"data_histAB0tag"))
910 ROOT.RooFit.ProjWData(
914 ROOT.RooFit.LineWidth(3),
915 ROOT.RooFit.LineColor(
917 ROOT.RooFit.LineStyle(3))
920 ROOT.RooFit.ProjWData(
924 ROOT.RooFit.LineWidth(3),
925 ROOT.RooFit.LineColor(
927 ROOT.RooFit.Components(
"Ttagp"))
930 ROOT.RooFit.ProjWData(
934 ROOT.RooFit.LineWidth(3),
935 ROOT.RooFit.LineColor(
937 ROOT.RooFit.LineStyle(7),
938 ROOT.RooFit.Components(
"Ttagm"))
939 TtagFrame.SetTitle(
"")
940 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
941 TtagFrame.GetXaxis().SetTitleSize(0.05)
942 TtagFrame.GetXaxis().SetLabelSize(0.045)
943 TtagFrame.GetYaxis().SetTitleSize(0.05)
944 TtagFrame.GetYaxis().SetTitleOffset(1.5)
945 TtagFrame.GetYaxis().SetLabelSize(0.045)
947 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
950 self.
TtagTtag.Print()
952 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
953 Pad.SetLeftMargin(0.15)
954 Pad.SetBottomMargin(0.15)
959 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
960 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
961 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
962 curveMC.SetFillColor(ROOT.kWhite)
963 curveMCB0.SetFillColor(ROOT.kWhite)
964 curveMCAB0.SetFillColor(ROOT.kWhite)
966 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
967 lMC.AddEntry(curveMC,
"Both")
968 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
969 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
971 lMC.SetTextSize(0.065)
975 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMC.pdf')
978 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
979 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
980 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
982 plotWithAsymmetry(TtagFrame, self.
TtagTtag, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
983 curveMCAB0,
"[ps]",
"TtagFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
995 Ttagp = ROOT.RooGenericPdf(
998 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1006 Ttagm = ROOT.RooGenericPdf(
1009 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1017 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
qq)
1018 TtagModel.addPdf(Ttagp,
"1")
1019 TtagModel.addPdf(Ttagm,
"-1")
1022 fitResTagPos = TtagModel.fitTo(
1024 ROOT.kFALSE), ROOT.RooFit.Extended(
1025 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1026 fitResTagPos.Print(
"v")
1028 TtagFrame = self.
TtagPosNegTtagPosNeg.frame()
1029 self.
fitDataTagDeltaTPosfitDataTagDeltaTPos.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1031 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1032 ROOT.RooFit.MarkerColor(ROOT.kRed),
1033 ROOT.RooFit.Name(
"data_histB0tag"))
1035 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1036 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1037 ROOT.RooFit.Name(
"data_histAB0tag"))
1039 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
qq), self.
fitDataTagDeltaTPosfitDataTagDeltaTPos),
1040 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1043 ROOT.RooFit.ProjWData(
1047 ROOT.RooFit.LineWidth(3),
1048 ROOT.RooFit.LineColor(
1050 ROOT.RooFit.Components(
"Ttagp"))
1053 ROOT.RooFit.ProjWData(
1057 ROOT.RooFit.LineWidth(3),
1058 ROOT.RooFit.LineColor(
1060 ROOT.RooFit.LineStyle(7),
1061 ROOT.RooFit.Components(
"Ttagm"))
1062 TtagFrame.SetTitle(
"")
1063 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1064 TtagFrame.GetXaxis().SetTitleSize(0.05)
1065 TtagFrame.GetXaxis().SetLabelSize(0.045)
1066 TtagFrame.GetYaxis().SetTitleSize(0.05)
1067 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1068 TtagFrame.GetYaxis().SetLabelSize(0.045)
1070 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1073 self.
TtagTtag.Print()
1075 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1076 Pad.SetLeftMargin(0.15)
1077 Pad.SetBottomMargin(0.15)
1082 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1083 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1084 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1085 curveMC.SetFillColor(ROOT.kWhite)
1086 curveMCB0.SetFillColor(ROOT.kWhite)
1087 curveMCAB0.SetFillColor(ROOT.kWhite)
1089 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1090 lMC.AddEntry(curveMC,
"Both")
1091 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1092 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1094 lMC.SetTextSize(0.065)
1097 fitResTagPos.Print(
"v")
1098 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCPositiveDeltaT.pdf')
1101 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1102 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1103 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1115 "TtagFittedOnGenMCPositiveDeltaT",
1127 self.
AA.setConstant(ROOT.kFALSE)
1130 Ttagp = ROOT.RooGenericPdf(
1133 "(exp(-1*abs(Ttag)/Tau)*(1 + " +
1134 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1135 "(exp(-2*abs(Ttag)/Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1142 Ttagm = ROOT.RooGenericPdf(
1145 "(exp(-1*abs(Ttag)/Tau)*(1 - " +
1146 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1147 "(exp(-2*abs(Ttag)/Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1154 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
qq)
1155 TtagModel.addPdf(Ttagp,
"1")
1156 TtagModel.addPdf(Ttagm,
"-1")
1159 fitResTagNeg = TtagModel.fitTo(
1161 ROOT.kFALSE), ROOT.RooFit.Extended(
1162 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1163 fitResTagNeg.Print(
"v")
1165 TtagFrame = self.
TtagPosNegTtagPosNeg.frame()
1166 self.
fitDataTagDeltaTNegfitDataTagDeltaTNeg.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1168 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1169 ROOT.RooFit.MarkerColor(ROOT.kRed),
1170 ROOT.RooFit.Name(
"data_histB0tag"))
1172 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1173 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1174 ROOT.RooFit.Name(
"data_histAB0tag"))
1176 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
qq), self.
fitDataTagDeltaTNegfitDataTagDeltaTNeg),
1177 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1180 ROOT.RooFit.ProjWData(
1184 ROOT.RooFit.LineWidth(3),
1185 ROOT.RooFit.LineColor(
1187 ROOT.RooFit.Components(
"Ttagp"))
1190 ROOT.RooFit.ProjWData(
1194 ROOT.RooFit.LineWidth(3),
1195 ROOT.RooFit.LineColor(
1197 ROOT.RooFit.LineStyle(7),
1198 ROOT.RooFit.Components(
"Ttagm"))
1199 TtagFrame.SetTitle(
"")
1200 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1201 TtagFrame.GetXaxis().SetTitleSize(0.05)
1202 TtagFrame.GetXaxis().SetLabelSize(0.045)
1203 TtagFrame.GetYaxis().SetTitleSize(0.05)
1204 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1205 TtagFrame.GetYaxis().SetLabelSize(0.045)
1207 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1210 self.
TtagTtag.Print()
1212 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1213 Pad.SetLeftMargin(0.15)
1214 Pad.SetBottomMargin(0.15)
1222 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1223 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1224 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1225 curveMC.SetFillColor(ROOT.kWhite)
1226 curveMCB0.SetFillColor(ROOT.kWhite)
1227 curveMCAB0.SetFillColor(ROOT.kWhite)
1229 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1230 lMC.AddEntry(curveMC,
"Both")
1231 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1232 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1234 lMC.SetTextSize(0.065)
1237 fitResTagNeg.Print(
"v")
1238 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCNegativeDeltaT.pdf')
1241 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1242 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1243 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1255 "TtagFittedOnGenMCNegativeDeltaT",
1269 self.
SS.setConstant(ROOT.kTRUE)
1270 self.
AA.setConstant(ROOT.kTRUE)
1273 DeltaZsigUpsilonp = ROOT.RooGenericPdf(
1274 "DeltaZsigUpsilonp",
1275 "DeltaZsigUpsilonp",
1276 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
1277 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + " +
1278 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))" +
1279 "/(1+(Tau*DM)*(Tau*DM)))",
1288 DeltaZsigUpsilonm = ROOT.RooGenericPdf(
1289 "DeltaZsigUpsilonm",
1290 "DeltaZsigUpsilonm",
1291 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - "
1292 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + "
1293 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))"
1294 "/(1+(Tau*DM)*(Tau*DM)))",
1303 DeltaZsigUpsilonModel = ROOT.RooSimultaneous(
"DeltaZsigUpsilonModel",
"DeltaZsigUpsilonModel", self.
qq)
1304 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonp,
"1")
1305 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonm,
"-1")
1306 DeltaZsigUpsilonModel.Print()
1308 fitResTag = DeltaZsigUpsilonModel.fitTo(
1310 ROOT.kFALSE), ROOT.RooFit.Extended(
1311 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1312 fitResTag.Print(
"v")
1317 DeltaZsigUpsilonFrame,
1318 ROOT.RooFit.Cut(
"q==q::1"),
1319 ROOT.RooFit.MarkerColor(
1321 ROOT.RooFit.Name(
"data_histB0sig"))
1323 DeltaZsigUpsilonFrame,
1324 ROOT.RooFit.Cut(
"q==1"),
1325 ROOT.RooFit.MarkerColor(
1327 ROOT.RooFit.Name(
"data_histAB0sig"))
1329 DeltaZsigUpsilonModel.plotOn(
1330 DeltaZsigUpsilonFrame,
1331 ROOT.RooFit.ProjWData(
1335 ROOT.RooFit.LineWidth(3),
1336 ROOT.RooFit.LineColor(
1338 ROOT.RooFit.LineStyle(3))
1339 DeltaZsigUpsilonModel.plotOn(
1340 DeltaZsigUpsilonFrame,
1341 ROOT.RooFit.ProjWData(
1345 ROOT.RooFit.LineWidth(3),
1346 ROOT.RooFit.LineColor(
1348 ROOT.RooFit.Components(
"DeltaZsigUpsilonp"))
1349 DeltaZsigUpsilonModel.plotOn(
1350 DeltaZsigUpsilonFrame,
1351 ROOT.RooFit.ProjWData(
1355 ROOT.RooFit.LineWidth(3),
1356 ROOT.RooFit.LineColor(
1358 ROOT.RooFit.LineStyle(7),
1359 ROOT.RooFit.Components(
"DeltaZsigUpsilonm"))
1360 DeltaZsigUpsilonFrame.SetTitle(
"")
1361 DeltaZsigUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{sig}^{dec} - #it{z}_{sig}^{prod}){}^{gen} [mm]")
1362 DeltaZsigUpsilonFrame.GetXaxis().SetTitleSize(0.05)
1363 DeltaZsigUpsilonFrame.GetXaxis().SetLabelSize(0.045)
1364 DeltaZsigUpsilonFrame.GetYaxis().SetTitleSize(0.05)
1365 DeltaZsigUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
1366 DeltaZsigUpsilonFrame.GetYaxis().SetLabelSize(0.045)
1368 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1373 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1374 Pad.SetLeftMargin(0.15)
1375 Pad.SetBottomMargin(0.15)
1378 DeltaZsigUpsilonFrame.Draw()
1380 curveMC = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]")
1381 curveMCB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonp]")
1382 curveMCAB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonm]")
1383 curveMC.SetFillColor(ROOT.kWhite)
1384 curveMCB0.SetFillColor(ROOT.kWhite)
1385 curveMCAB0.SetFillColor(ROOT.kWhite)
1387 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1388 lMC.AddEntry(curveMC,
"Both")
1389 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1390 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1392 lMC.SetTextSize(0.065)
1395 fitResTag.Print(
"v")
1396 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZsigUpsilonFittedOnGenMC.pdf')
1399 dotsMC = DeltaZsigUpsilonFrame.getHist(
"h_fitDataDeltaZsigUpsilon")
1400 dotsMCB0 = DeltaZsigUpsilonFrame.getHist(
"data_histB0sig")
1401 dotsMCAB0 = DeltaZsigUpsilonFrame.getHist(
"data_histAB0sig")
1404 DeltaZsigUpsilonFrame,
1413 "DeltaZsigUpsilonFittedOnGenMC",
1419 self.
SS.setConstant(ROOT.kFALSE)
1420 self.
AA.setConstant(ROOT.kFALSE)
1425 Tsigp = ROOT.RooGenericPdf(
1428 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 + " +
1429 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1437 Tsigm = ROOT.RooGenericPdf(
1440 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 - " +
1441 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1449 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qq)
1450 TsigModel.addPdf(Tsigp,
"1")
1451 TsigModel.addPdf(Tsigm,
"-1")
1454 fitResSig = TsigModel.fitTo(
1455 self.
fitDataSigfitDataSig, ROOT.RooFit.Minos(
1456 ROOT.kFALSE), ROOT.RooFit.Extended(
1457 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1458 fitResSig.Print(
"v")
1460 TsigFrame = self.
TsigTsig.frame()
1464 ROOT.RooFit.Cut(
"q==q::1"),
1465 ROOT.RooFit.MarkerColor(
1467 ROOT.RooFit.Name(
"data_histB0sig"))
1470 ROOT.RooFit.Cut(
"q==1"),
1471 ROOT.RooFit.MarkerColor(
1473 ROOT.RooFit.Name(
"data_histAB0sig"))
1477 ROOT.RooFit.ProjWData(
1481 ROOT.RooFit.LineWidth(3),
1482 ROOT.RooFit.LineColor(
1484 ROOT.RooFit.LineStyle(3))
1487 ROOT.RooFit.ProjWData(
1491 ROOT.RooFit.LineWidth(3),
1492 ROOT.RooFit.LineColor(
1494 ROOT.RooFit.Components(
"Tsigp"))
1497 ROOT.RooFit.ProjWData(
1501 ROOT.RooFit.LineWidth(3),
1502 ROOT.RooFit.LineColor(
1504 ROOT.RooFit.LineStyle(7),
1505 ROOT.RooFit.Components(
"Tsigm"))
1506 TsigFrame.SetTitle(
"")
1507 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1508 TsigFrame.GetXaxis().SetTitleSize(0.05)
1509 TsigFrame.GetXaxis().SetLabelSize(0.045)
1510 TsigFrame.GetYaxis().SetTitleSize(0.05)
1511 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1512 TsigFrame.GetYaxis().SetLabelSize(0.045)
1514 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1517 self.
TsigTsig.Print()
1519 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1520 Pad.SetLeftMargin(0.15)
1521 Pad.SetBottomMargin(0.15)
1526 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1527 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1528 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1529 curveMC.SetFillColor(ROOT.kWhite)
1530 curveMCB0.SetFillColor(ROOT.kWhite)
1531 curveMCAB0.SetFillColor(ROOT.kWhite)
1533 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1534 lMC.AddEntry(curveMC,
"Both")
1535 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1536 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1538 lMC.SetTextSize(0.065)
1541 fitResSig.Print(
"v")
1542 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMC.pdf')
1545 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1546 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1547 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1549 plotWithAsymmetry(TsigFrame, self.
TsigTsig, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
1550 curveMCAB0,
"[ps]",
"TsigFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
1563 Tsigp = ROOT.RooGenericPdf(
1566 "(exp(-1*abs(Tsig)/Tau)*(1 + " +
1567 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1568 "(exp(-2*abs(Tsig)/Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1575 Tsigm = ROOT.RooGenericPdf(
1578 "(exp(-1*abs(Tsig)/Tau)*(1 - " +
1579 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1580 "(exp(-2*abs(Tsig)/Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1588 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qq)
1589 TsigModel.addPdf(Tsigp,
"1")
1590 TsigModel.addPdf(Tsigm,
"-1")
1593 fitResSigPos = TsigModel.fitTo(
1595 ROOT.kFALSE), ROOT.RooFit.Extended(
1596 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1597 fitResSigPos.Print(
"v")
1599 TsigFrame = self.
TsigPosNegTsigPosNeg.frame()
1600 self.
fitDataSigDeltaTPosfitDataSigDeltaTPos.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1602 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1603 ROOT.RooFit.MarkerColor(ROOT.kRed),
1604 ROOT.RooFit.Name(
"data_histB0sig"))
1606 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1607 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1608 ROOT.RooFit.Name(
"data_histAB0sig"))
1610 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
qq), self.
fitDataSigDeltaTPosfitDataSigDeltaTPos),
1611 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1614 ROOT.RooFit.ProjWData(
1618 ROOT.RooFit.LineWidth(3),
1619 ROOT.RooFit.LineColor(
1621 ROOT.RooFit.Components(
"Tsigp"))
1624 ROOT.RooFit.ProjWData(
1628 ROOT.RooFit.LineWidth(3),
1629 ROOT.RooFit.LineColor(
1631 ROOT.RooFit.LineStyle(7),
1632 ROOT.RooFit.Components(
"Tsigm"))
1633 TsigFrame.SetTitle(
"")
1634 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1635 TsigFrame.GetXaxis().SetTitleSize(0.05)
1636 TsigFrame.GetXaxis().SetLabelSize(0.045)
1637 TsigFrame.GetYaxis().SetTitleSize(0.05)
1638 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1639 TsigFrame.GetYaxis().SetLabelSize(0.045)
1641 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1644 self.
TsigTsig.Print()
1646 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1647 Pad.SetLeftMargin(0.15)
1648 Pad.SetBottomMargin(0.15)
1653 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1654 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1655 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1656 curveMC.SetFillColor(ROOT.kWhite)
1657 curveMCB0.SetFillColor(ROOT.kWhite)
1658 curveMCAB0.SetFillColor(ROOT.kWhite)
1660 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1661 lMC.AddEntry(curveMC,
"Both")
1662 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1663 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1665 lMC.SetTextSize(0.065)
1668 fitResSigPos.Print(
"v")
1669 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCPositiveDeltaT.pdf')
1672 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1673 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1674 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1686 "TsigFittedOnGenMCPositiveDeltaT",
1698 self.
AA.setConstant(ROOT.kFALSE)
1702 Tsigp = ROOT.RooGenericPdf(
1705 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1713 Tsigm = ROOT.RooGenericPdf(
1716 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1725 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qq)
1726 TsigModel.addPdf(Tsigp,
"1")
1727 TsigModel.addPdf(Tsigm,
"-1")
1730 fitResSigNeg = TsigModel.fitTo(
1732 ROOT.kFALSE), ROOT.RooFit.Extended(
1733 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1734 fitResSigNeg.Print(
"v")
1736 TsigFrame = self.
TsigPosNegTsigPosNeg.frame()
1737 self.
fitDataSigDeltaTNegfitDataSigDeltaTNeg.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1739 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1740 ROOT.RooFit.MarkerColor(ROOT.kRed),
1741 ROOT.RooFit.Name(
"data_histB0sig"))
1743 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1744 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1745 ROOT.RooFit.Name(
"data_histAB0sig"))
1747 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
qq), self.
fitDataSigDeltaTNegfitDataSigDeltaTNeg),
1748 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1751 ROOT.RooFit.ProjWData(
1755 ROOT.RooFit.LineWidth(3),
1756 ROOT.RooFit.LineColor(
1758 ROOT.RooFit.Components(
"Tsigp"))
1761 ROOT.RooFit.ProjWData(
1765 ROOT.RooFit.LineWidth(3),
1766 ROOT.RooFit.LineColor(
1768 ROOT.RooFit.LineStyle(7),
1769 ROOT.RooFit.Components(
"Tsigm"))
1770 TsigFrame.SetTitle(
"")
1771 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1772 TsigFrame.GetXaxis().SetTitleSize(0.05)
1773 TsigFrame.GetXaxis().SetLabelSize(0.045)
1774 TsigFrame.GetYaxis().SetTitleSize(0.05)
1775 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1776 TsigFrame.GetYaxis().SetLabelSize(0.045)
1778 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1781 self.
TsigTsig.Print()
1783 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1784 Pad.SetLeftMargin(0.15)
1785 Pad.SetBottomMargin(0.15)
1793 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1794 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1795 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1796 curveMC.SetFillColor(ROOT.kWhite)
1797 curveMCB0.SetFillColor(ROOT.kWhite)
1798 curveMCAB0.SetFillColor(ROOT.kWhite)
1800 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1801 lMC.AddEntry(curveMC,
"Both")
1802 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1803 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1805 lMC.SetTextSize(0.065)
1808 fitResSigNeg.Print(
"v")
1809 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCNegativeDeltaT.pdf')
1812 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1813 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1814 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1826 "TsigFittedOnGenMCNegativeDeltaT",
1834 self.
TauTau.setConstant(ROOT.kFALSE)
1837 Tsigp = ROOT.RooGenericPdf(
"Tsigp",
"Tsigp",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1838 ROOT.RooArgList(self.
NormNorm, self.
TsigTsig, self.
TauTau, self.
DMDM))
1839 Tsigm = ROOT.RooGenericPdf(
"Tsigm",
"Tsigm",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1840 ROOT.RooArgList(self.
NormNorm, self.
TsigTsig, self.
TauTau, self.
DMDM))
1841 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qsigqsig)
1842 TsigModel.addPdf(Tsigp,
"1")
1843 TsigModel.addPdf(Tsigm,
"-1")
1846 fitResSig = TsigModel.fitTo(
1847 self.
fitDataSigfitDataSig, ROOT.RooFit.Minos(
1848 ROOT.kFALSE), ROOT.RooFit.Extended(
1849 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1850 fitResSig.Print(
"v")
1852 TsigFrame = self.
TsigTsig.frame()
1856 ROOT.RooFit.Cut(
"qsig==qsig::1"),
1857 ROOT.RooFit.MarkerColor(
1859 ROOT.RooFit.Name(
"data_histB0sig"))
1862 ROOT.RooFit.Cut(
"qsig==1"),
1863 ROOT.RooFit.MarkerColor(
1865 ROOT.RooFit.Name(
"data_histAB0sig"))
1869 ROOT.RooFit.ProjWData(
1873 ROOT.RooFit.LineWidth(3),
1874 ROOT.RooFit.LineColor(
1876 ROOT.RooFit.LineStyle(3))
1879 ROOT.RooFit.ProjWData(
1883 ROOT.RooFit.LineWidth(3),
1884 ROOT.RooFit.LineColor(
1886 ROOT.RooFit.Components(
"Tsigp"))
1889 ROOT.RooFit.ProjWData(
1893 ROOT.RooFit.LineWidth(3),
1894 ROOT.RooFit.LineColor(
1896 ROOT.RooFit.LineStyle(7),
1897 ROOT.RooFit.Components(
"Tsigm"))
1898 TsigFrame.SetTitle(
"")
1899 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1900 TsigFrame.GetXaxis().SetTitleSize(0.05)
1901 TsigFrame.GetXaxis().SetLabelSize(0.045)
1902 TsigFrame.GetYaxis().SetTitleSize(0.05)
1903 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1904 TsigFrame.GetYaxis().SetLabelSize(0.045)
1906 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1909 self.
TsigTsig.Print()
1911 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1912 Pad.SetLeftMargin(0.15)
1913 Pad.SetBottomMargin(0.15)
1918 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1919 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1920 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1921 curveMC.SetFillColor(ROOT.kWhite)
1922 curveMCB0.SetFillColor(ROOT.kWhite)
1923 curveMCAB0.SetFillColor(ROOT.kWhite)
1925 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1926 lMC.AddEntry(curveMC,
"Both")
1927 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1928 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1930 lMC.SetTextSize(0.065)
1933 fitResSig.Print(
"v")
1934 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigQsigFittedOnGenMC.pdf')
1939 Diff = B0tagbarsPercentage - B0tagPercentage
1940 print(
"B0 Tag Flavor: ")
1947 B0tagbarsPercentage,
1954 Diff = B0signalbarsPercentage - B0signalPercentage
1955 print(
"B0 Signal Flavor: ")
1962 B0signalbarsPercentage,
1967 print(
"Total amount of events = ", self.
nentriesnentries)
1971 validation_path.add_module(fitDeltaTModule)
1973 b2.process(validation_path)
1974 print(b2.statistics)
fitDataDeltaZtagUpsilon
RooDataSet containing DeltaZtagUpsilon and q.
q
Flavor of the tag-side B0 meson at the time of its decay.
fitDataSigDeltaTNeg
RooDataSet containing Tsig and q for negative DT.
fitData
RooDataSet containing DT and q for each event.
fractionB0InSignalSide
Fraction of B0s in the signal side.
fitDataTagDeltaTNeg
RooDataSet containing Ttag and q for negative DT.
DT0
Production time of the B mesons.
qsig
Flavor of the signal-side B0 meson at the time of its decay.
Norm
Normalization factor of the quantum mechanical pdfs.
A
Direct CP-violation parameter (CP violation in decay).
fitDataDeltaZsigUpsilon
RooDataSet containing DeltaZsigUpsilon and q.
fractionB0barInSignalSide
Fraction of anti-B0s in the signal side.
B0barsInTagSide
Number of tag-side anti-B0s (negative flavor).
BetaGamma
Lorentz boost of the B mesons.
fitDataTagDeltaTPos
RooDataSet containing Ttag and q for positive DT.
B0sInSignalSide
Number of B0s in the signal side (positive flavor).
DM
Mass difference between the two B0-mass eigenstates.
Ttag
Decay time of the tag-side B meson.
TsigPosNeg
Empty variable just to define the limits of the frames in the plots for Tsig.
fitDataSig
RooDataSet containing Tsig and q for each event.
fitDataTag
RooDataSet containing Ttag and q for each event.
DeltaZtagUpsilon
Difference between the production and the decay vertices of the tag-side B0 meson in z direction.
B0sInTagSide
Number of tag-side B0s (positive flavor).
S
Mixing-induced CP-violation parameter (CP violation caused by the overlap between mixing and decay ph...
Tsig
Decay time of the signal B mesons.
DeltaZsigUpsilon
Difference between the production and the decay vertices of the signal-side B0 meson in z direction.
DT
Time difference between the decays of the two generated B mesons.
fitDataSigDeltaTPos
RooDataSet containing Tsig and q for positive DT.
TtagPosNeg
Empty variable just to define the limits of the frames in the plots for Ttag.
nentries
Total number of analyzed events.
B0barsInSignalSide
Number of anti-B0s in the signal side (negative flavor).
a (simplified) python wrapper for StoreObjPtr.