24 from ROOT
import Belle2
25 import modularAnalysis
as ma
27 import matplotlib.pyplot
as plt
32 from variables
import variables
as mc_variables
38 validation_path = b2.Path()
40 ma.inputMdstList(
"default", inputFiles, path=validation_path)
43 ma.fillParticleListsFromMC([B0s],
True, path=validation_path)
45 ma.matchMCTruth(
'B0:all', path=validation_path)
47 Upsilon4S = (
'Upsilon(4S):all',
'')
48 ma.fillParticleListsFromMC([Upsilon4S],
True, path=validation_path)
50 ma.matchMCTruth(
'Upsilon(4S):all', path=validation_path)
52 labelAsymmetry =
"#frac{N^{#it{B}^{0}} - N^{#bar{#it{B}}^{0}}}{N^{#it{B}^{0}} + N^{#bar{#it{B}}^{0}}}"
55 def plotWithAsymmetry(
71 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.
76 rooFitFrame.GetXaxis().SetTitle(
"")
77 rooFitFrame.GetXaxis().SetLabelSize(0)
79 rooFitFrame.GetYaxis().SetTitleSize(0.072)
80 rooFitFrame.GetYaxis().SetTitleOffset(0.98)
81 rooFitFrame.GetYaxis().SetLabelSize(0.055)
86 pointsHist = ROOT.RooHist()
90 xValModel = ROOT.Double(-1.E30)
91 yValModel = ROOT.Double(-1.E30)
92 xValDot = ROOT.Double(-1.E30)
93 yValDotA = ROOT.Double(-1.E30)
94 yValDotB = ROOT.Double(-1.E30)
96 iDotsA = ROOT.RooRealVar(
"iDotsA",
"", 0.)
97 idotsB = ROOT.RooRealVar(
"idotsB",
"", 0.)
98 iDotError = ROOT.RooRealVar(
"iDotErrorA",
"", 0.)
100 iAsymmetry = ROOT.RooFormulaVar(
"yComb",
"",
"(@0 - @1)/(@0 + @1)", ROOT.RooArgList(iDotsA, idotsB))
102 while iBin < dotsA.GetN() - 1:
103 dotsA.GetPoint(iBin, xValDot, yValDotA)
104 dotsB.GetPoint(iBin, xValDot, yValDotB)
106 iDotsA.setVal(yValDotA)
107 idotsB.setVal(yValDotB)
109 errA = float(dotsA.GetErrorYlow(iBin) + dotsA.GetErrorYhigh(iBin))
110 errB = float(dotsB.GetErrorYlow(iBin) + dotsB.GetErrorYhigh(iBin))
112 if np.isnan(iAsymmetry.getVal())
is not True:
114 asymValue = iAsymmetry.getVal()
116 if (yValDotA + yValDotB) > 0:
117 asymError = float(2 * math.sqrt(yValDotA**2 * errA**2 + yValDotB**2 * errB**2) / (yValDotA + yValDotB)**2)
122 if abs(asymValue) > 3:
128 pointsHist.addBinWithXYError(xValDot, asymValue,
129 dotsA.GetErrorXlow(iBin),
130 dotsA.GetErrorXhigh(iBin),
131 asymError, asymError,)
135 pointsHist.SetMarkerStyle(dotsA.GetMarkerStyle())
138 rooFitFramAsym = rooRealVar.frame()
142 rooFitFramAsym.GetXaxis().SetTickSize(0.07)
143 rooFitFramAsym.GetYaxis().SetTickSize(0.024)
145 rooFitFramAsym.SetTitle(
"")
146 rooFitFramAsym.GetXaxis().SetTitle(rooRealVar.GetTitle() +
" " + units)
147 rooFitFramAsym.GetYaxis().SetTitle(asymmVarName +
" ")
149 if asymmVarName ==
"#it{a}(#Delta#it{t})":
150 rooFitFramAsym.GetXaxis().SetTitleSize(0.2)
151 rooFitFramAsym.GetXaxis().SetTitleOffset(0.9)
152 rooFitFramAsym.GetYaxis().SetTitleSize(0.19)
153 rooFitFramAsym.GetYaxis().SetTitleOffset(0.32)
155 rooFitFramAsym.GetXaxis().SetTitleSize(0.18)
156 rooFitFramAsym.GetXaxis().SetTitleOffset(0.95)
157 rooFitFramAsym.GetYaxis().SetTitleSize(0.13)
158 rooFitFramAsym.GetYaxis().SetTitleOffset(0.52)
160 rooFitFramAsym.GetXaxis().SetLabelSize(0.155)
161 rooFitFramAsym.GetYaxis().SetLabelSize(0.120)
163 rooFitFramAsym.SetAxisRange(-1.0, 1.0,
"Y")
164 rooFitFramAsym.GetYaxis().SetNdivisions(10)
165 rooFitFramAsym.GetYaxis().ChangeLabel(1, -1, 0.)
166 rooFitFramAsym.GetYaxis().ChangeLabel(3, -1, 0.)
167 rooFitFramAsym.GetYaxis().ChangeLabel(5, -1, 0.)
168 rooFitFramAsym.GetYaxis().ChangeLabel(6, -1, -1, -1, -1, -1,
"0.0")
169 rooFitFramAsym.GetYaxis().ChangeLabel(7, -1, 0.)
170 rooFitFramAsym.GetYaxis().ChangeLabel(9, -1, 0.)
171 rooFitFramAsym.GetYaxis().ChangeLabel(11, -1, 0.)
175 gLine0 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0,
176 rooFitFramAsym.GetXaxis().GetXmax(), 0)
177 gLine0.SetLineWidth(1)
178 gLine0.SetLineColor(13)
179 gLine0.SetLineStyle(3)
181 gLine1 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0.4,
182 rooFitFramAsym.GetXaxis().GetXmax(), 0.4)
183 gLine1.SetLineWidth(1)
184 gLine1.SetLineColor(13)
185 gLine1.SetLineStyle(3)
187 gLine2 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), -0.4,
188 rooFitFramAsym.GetXaxis().GetXmax(), -0.4)
189 gLine2.SetLineWidth(1)
190 gLine2.SetLineColor(13)
191 gLine2.SetLineStyle(3)
193 gLine3 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), 0.8,
194 rooFitFramAsym.GetXaxis().GetXmax(), 0.8)
195 gLine3.SetLineWidth(1)
196 gLine3.SetLineColor(13)
197 gLine3.SetLineStyle(3)
199 gLine4 = ROOT.TLine(rooFitFramAsym.GetXaxis().GetXmin(), -0.8,
200 rooFitFramAsym.GetXaxis().GetXmax(), -0.8)
201 gLine4.SetLineWidth(1)
202 gLine4.SetLineColor(13)
203 gLine4.SetLineStyle(3)
205 c1 = ROOT.TCanvas(
"c1",
"c1", 700, 640)
206 c1.SetBottomMargin(0)
209 Pad1 = ROOT.TPad(
"p1",
"p1", 0, 0.277, 1, 1, 0)
210 Pad2 = ROOT.TPad(
"p2",
"p2", 0, 0, 1, 0.276, 0)
214 Pad1.SetLeftMargin(0.15)
215 Pad1.SetBottomMargin(0.02)
216 Pad1.SetTopMargin(0.06)
218 Pad2.SetLeftMargin(0.15)
219 Pad2.SetBottomMargin(0.4)
220 Pad2.SetTopMargin(0.01)
223 rooFitFramAsym.Draw()
229 pointsHist.Draw(
"P SAME")
247 nameOfPlot =
"WithAsymm" + nameOfPlot +
".pdf"
248 c1.SaveAs(nameOfPlot)
254 This class makes plots to validate the generated CP asymmetry. It saves the decay time information of the simulation
255 for both B mesons by running as a basf2 module. It fills the information in RooDataSets and at the end it fits the
256 known quantum mechanical pdfs to the delta T distribution and the individual decay time distributions of
257 the signal and the tag-side B mesons to check if the S and the A parameters in the simulation are correct.
326 Here the module initializes by declaring the variables corresponding to the interesting physical parameters and
327 decay times. The RooDataSets where the information will be saved are also declared.
332 self.
DT = ROOT.RooRealVar(
"DT",
"#Delta#it{t}", 0., -11., 11.,
"ps")
333 self.
Tsig = ROOT.RooRealVar(
"Tsig",
"#it{t}_{sig}^{gen}", 0., 0., 11.,
"ps")
334 self.
Ttag = ROOT.RooRealVar(
"Ttag",
"#it{t}_{tag}^{gen}", 0., 0., 11.,
"ps")
335 self.
DT0 = ROOT.RooRealVar(
"DT0",
"DT0", 0., -7., 7.)
336 self.
Tau = ROOT.RooRealVar(
"Tau",
"Tau", 1.525, 0., 4.)
337 self.
A = ROOT.RooRealVar(
"A",
"A", 0, -1, 1)
338 self.
S = ROOT.RooRealVar(
"S",
"S", 0, -1, 1)
339 self.
DM = ROOT.RooRealVar(
"DM",
"DM", 0.507)
340 self.
Norm = ROOT.RooRealVar(
"Norm",
"Norm", 2, 1, 8)
341 self.
BetaGamma = ROOT.RooRealVar(
"BetaGamma",
"BetaGamma", 0.5, 0.1, 1)
343 self.
q = ROOT.RooCategory(
"q",
"q")
344 self.
q.defineType(
"1")
345 self.
q.defineType(
"-1")
347 self.
qsig = ROOT.RooCategory(
"qsig",
"qsig")
348 self.
qsig.defineType(
"1")
349 self.
qsig.defineType(
"-1")
351 self.
fitData = ROOT.RooDataSet(
"fitData",
"fitData", ROOT.RooArgSet(self.
DT, self.
q))
352 self.
fitDataTag = ROOT.RooDataSet(
"fitDataTag",
"fitDataTag", ROOT.RooArgSet(self.
Ttag, self.
q))
355 self.
fitDataSig = ROOT.RooDataSet(
"fitDataSig",
"fitDataSig", ROOT.RooArgSet(self.
Tsig, self.
q, self.
qsig))
369 self.
DeltaZsigUpsilon = ROOT.RooRealVar(
"DeltaZsigUpsilon",
"(#it{z}_{sig}^{dec} - #it{z}_{sig}^{prod})^{gen}", 0., 0., 0.8)
372 "(#it{z}_{tag}^{dec} - #it{z}_{tag}^{prod})^{gen}",
378 "fitDataDeltaZsigUpsilon",
379 "fitDataDeltaZsigUpsilon",
384 "fitDataDeltaZtagUpsilon",
385 "fitDataDeltaZtagUpsilon",
392 self.
TsigPosNeg = ROOT.RooRealVar(
"Tsig",
"#it{t}_{sig}^{gen}", 0., 0., 7.,
"ps")
393 self.
TtagPosNeg = ROOT.RooRealVar(
"Ttag",
"#it{t}_{tag}^{gen}", 0., 0., 7.,
"ps")
397 Here the information is collected event by event.
415 for index
in range(0, plistUpsilon.obj().getListSize()):
416 Upsilon4Sparticle = plistUpsilon.obj().getParticle(index)
418 if Upsilon4Sparticle.getPDGCode() == 300553:
419 zUpsilon = mc_variables.evaluate(
"mcZ", Upsilon4Sparticle)
421 for index
in range(0, plist.obj().getListSize()):
422 B0particle = plist.obj().getParticle(index)
427 if B0particle.getNDaughters() == 2:
429 for B0daughter
in B0particle.getDaughters():
430 B0daughters.append(B0daughter)
431 if (abs(B0daughters[0].getPDGCode()) == 443
and abs(B0daughters[1].getPDGCode()) == 310)
or \
432 (abs(B0daughters[1].getPDGCode()) == 443
and abs(B0daughters[0].getPDGCode()) == 310)
or \
433 (abs(B0daughters[1].getPDGCode()) == 16
and abs(B0daughters[0].getPDGCode()) == 16):
438 tSig = mc_variables.evaluate(
"mcDecayTime", B0particle)
439 zSig = mc_variables.evaluate(
"mcZ", B0particle)
440 sigPDG = B0particle.getPDGCode()
442 tTag = mc_variables.evaluate(
"mcDecayTime", B0particle)
443 zTag = mc_variables.evaluate(
"mcZ", B0particle)
444 tagPDG = B0particle.getPDGCode()
447 B0Flags.append(isB0sig)
449 tagProb = random.uniform(0, 1)
450 signalProb = random.uniform(0, 1)
452 rejectEventFlag =
False
454 DeltaT = 1000 * (tSig - tTag)
457 if len(B0Flags) == 2:
458 if B0Flags[0] != B0Flags[1]
and rejectEventFlag
is not True:
462 self.
DT.setVal(DeltaT)
463 self.
Tsig.setVal(float(1000 * tSig))
464 self.
Ttag.setVal(float(1000 * tTag))
470 self.
q.setLabel(
"-1")
473 self.
qsig.setLabel(
"1")
476 self.
qsig.setLabel(
"-1")
478 self.
fitData.add(ROOT.RooArgSet(self.
DT, self.
q))
497 Here the known quantum mechanical pdfs are defined and fitted to the generated MC distributions.
498 Afterwards, the plots are saved.
506 self.
DM.setConstant(ROOT.kTRUE)
507 self.
Tau.setConstant(ROOT.kTRUE)
508 self.
DT0.setConstant(ROOT.kTRUE)
509 self.
Norm.setConstant(ROOT.kTRUE)
518 DeltaTp = ROOT.RooGenericPdf(
521 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1+(A*cos(DM*DT)+S*sin(DM*DT)))",
530 DeltaTm = ROOT.RooGenericPdf(
533 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1-(A*cos(DM*DT)+S*sin(DM*DT)))",
542 DeltaT = ROOT.RooSimultaneous(
"DeltaT",
"DeltaT", self.
q)
543 DeltaT.addPdf(DeltaTp,
"1")
544 DeltaT.addPdf(DeltaTm,
"-1")
547 fitRes = DeltaT.fitTo(
548 self.
fitData, ROOT.RooFit.Minos(
549 ROOT.kFALSE), ROOT.RooFit.Extended(
550 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
553 DTFrame = self.
DT.frame()
554 print(
"here", str(DTFrame.GetXaxis().GetXmax()))
555 self.
fitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())))
557 ROOT.RooFit.Cut(
"q==q::1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
558 ROOT.RooFit.MarkerColor(ROOT.kRed),
559 ROOT.RooFit.Name(
"data_histB0"))
560 self.
fitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"q==1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
561 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1), ROOT.RooFit.Name(
"data_histAB0"))
569 ROOT.RooFit.ProjWData(
573 ROOT.RooFit.LineWidth(3),
574 ROOT.RooFit.LineColor(
576 ROOT.RooFit.LineStyle(3))
579 ROOT.RooFit.ProjWData(
583 ROOT.RooFit.LineWidth(3),
584 ROOT.RooFit.LineColor(
586 ROOT.RooFit.Components(
"DeltaTp"))
587 DeltaT.plotOn(DTFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitData), ROOT.RooFit.LineWidth(
588 3), ROOT.RooFit.LineColor(ROOT.kBlue + 1), ROOT.RooFit.LineStyle(7), ROOT.RooFit.Components(
"DeltaTm"))
591 DTFrame.GetXaxis().SetTitle(
"#Delta#it{t}^{gen} [ps]")
592 DTFrame.GetXaxis().SetTitleSize(0.05)
593 DTFrame.GetXaxis().SetLabelSize(0.045)
594 DTFrame.GetYaxis().SetTitleSize(0.05)
595 DTFrame.GetYaxis().SetTitleOffset(1.5)
596 DTFrame.GetYaxis().SetLabelSize(0.045)
598 c1 = ROOT.TCanvas(
"c1",
"c1", 1400, 1100)
603 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
604 Pad.SetLeftMargin(0.15)
605 Pad.SetBottomMargin(0.15)
611 curveMC = DTFrame.getCurve(
"DeltaT_Norm[DT]")
612 curveMCB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTp]")
613 curveMCAB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTm]")
614 curveMC.SetFillColor(ROOT.kWhite)
615 curveMCB0.SetFillColor(ROOT.kWhite)
616 curveMCAB0.SetFillColor(ROOT.kWhite)
618 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
619 lMC.AddEntry(curveMC,
"Both")
620 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
621 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
623 lMC.SetTextSize(0.065)
626 textFitRes =
"#it{A}_{#it{CP}} = " + \
627 '{: 1.2f}'.format(self.
A.getValV()
if abs(self.
A.getValV()) > 0.005
else abs(self.
A.getValV())) + \
628 ", " +
"#it{S}_{#it{CP}} = " + \
629 '{: 1.2f}'.format(self.
S.getValV()
if abs(self.
S.getValV()) > 0.005
else abs(self.
S.getValV()))
631 lFitRes = ROOT.TLegend(0.215, 0.905, 0.7, 0.98)
632 lFitRes.AddEntry(
"", textFitRes,
" ")
633 lFitRes.SetBorderSize(0)
634 lFitRes.SetTextSize(0.054)
644 textValA = ROOT.TText(
647 "#it{A}_{#it{CP}} = " +
653 textValS = ROOT.TText(
656 "#it{A}_{#it{CP}} = " +
664 c1.SaveAs(
"./" +
'B0_JPsiKs_DeltaTFittedOnGenMC.pdf')
667 dotsMC = DTFrame.getHist(
"h_fitData")
668 dotsMCB0 = DTFrame.getHist(
"data_histB0")
669 dotsMCAB0 = DTFrame.getHist(
"data_histAB0")
681 "DeltaTFittedOnGenMC",
684 "#it{a}_{#it{CP}}(#Delta#it{t})",
695 self.
S.setConstant(ROOT.kTRUE)
696 self.
A.setConstant(ROOT.kTRUE)
699 DeltaZtagUpsilonp = ROOT.RooGenericPdf(
702 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
703 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
704 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
705 "/(1+(Tau*DM)*(Tau*DM)))",
714 DeltaZtagUpsilonm = ROOT.RooGenericPdf(
717 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - " +
718 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
719 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
720 "/(1+(Tau*DM)*(Tau*DM)))",
729 DeltaZtagUpsilonModel = ROOT.RooSimultaneous(
"DeltaZtagUpsilonModel",
"DeltaZtagUpsilonModel", self.
q)
730 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonp,
"1")
731 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonm,
"-1")
732 DeltaZtagUpsilonModel.Print()
734 fitResTag = DeltaZtagUpsilonModel.fitTo(
736 ROOT.kFALSE), ROOT.RooFit.Extended(
737 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
743 DeltaZtagUpsilonFrame,
744 ROOT.RooFit.Cut(
"q==q::1"),
745 ROOT.RooFit.MarkerColor(
747 ROOT.RooFit.Name(
"data_histB0tag"))
749 DeltaZtagUpsilonFrame,
750 ROOT.RooFit.Cut(
"q==1"),
751 ROOT.RooFit.MarkerColor(
753 ROOT.RooFit.Name(
"data_histAB0tag"))
755 DeltaZtagUpsilonModel.plotOn(
756 DeltaZtagUpsilonFrame,
757 ROOT.RooFit.ProjWData(
761 ROOT.RooFit.LineWidth(3),
762 ROOT.RooFit.LineColor(
764 ROOT.RooFit.LineStyle(3))
765 DeltaZtagUpsilonModel.plotOn(
766 DeltaZtagUpsilonFrame,
767 ROOT.RooFit.ProjWData(
771 ROOT.RooFit.LineWidth(3),
772 ROOT.RooFit.LineColor(
774 ROOT.RooFit.Components(
"DeltaZtagUpsilonp"))
775 DeltaZtagUpsilonModel.plotOn(
776 DeltaZtagUpsilonFrame,
777 ROOT.RooFit.ProjWData(
781 ROOT.RooFit.LineWidth(3),
782 ROOT.RooFit.LineColor(
784 ROOT.RooFit.LineStyle(7),
785 ROOT.RooFit.Components(
"DeltaZtagUpsilonm"))
786 DeltaZtagUpsilonFrame.SetTitle(
"")
787 DeltaZtagUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{tag}^{dec} - #it{z}_{tag}^{prod}){}^{gen} [mm]")
788 DeltaZtagUpsilonFrame.GetXaxis().SetTitleSize(0.05)
789 DeltaZtagUpsilonFrame.GetXaxis().SetLabelSize(0.045)
790 DeltaZtagUpsilonFrame.GetYaxis().SetTitleSize(0.05)
791 DeltaZtagUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
792 DeltaZtagUpsilonFrame.GetYaxis().SetLabelSize(0.045)
794 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
799 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
800 Pad.SetLeftMargin(0.15)
801 Pad.SetBottomMargin(0.15)
804 DeltaZtagUpsilonFrame.Draw()
806 curveMC = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]")
807 curveMCB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonp]")
808 curveMCAB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonm]")
809 curveMC.SetFillColor(ROOT.kWhite)
810 curveMCB0.SetFillColor(ROOT.kWhite)
811 curveMCAB0.SetFillColor(ROOT.kWhite)
813 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
814 lMC.AddEntry(curveMC,
"Both")
815 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
816 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
818 lMC.SetTextSize(0.065)
822 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZtagUpsilonFittedOnGenMC.pdf')
825 dotsMC = DeltaZtagUpsilonFrame.getHist(
"h_fitDataDeltaZtagUpsilon")
826 dotsMCB0 = DeltaZtagUpsilonFrame.getHist(
"data_histB0tag")
827 dotsMCAB0 = DeltaZtagUpsilonFrame.getHist(
"data_histAB0tag")
830 DeltaZtagUpsilonFrame,
839 "DeltaZtagUpsilonFittedOnGenMC",
845 self.
S.setConstant(ROOT.kFALSE)
846 self.
A.setConstant(ROOT.kFALSE)
860 Ttagp = ROOT.RooGenericPdf(
863 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 + " +
864 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
872 Ttagm = ROOT.RooGenericPdf(
875 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 - " +
876 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
884 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
885 TtagModel.addPdf(Ttagp,
"1")
886 TtagModel.addPdf(Ttagm,
"-1")
889 fitResTag = TtagModel.fitTo(
891 ROOT.kFALSE), ROOT.RooFit.Extended(
892 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
895 TtagFrame = self.
Ttag.frame()
899 ROOT.RooFit.Cut(
"q==q::1"),
900 ROOT.RooFit.MarkerColor(
902 ROOT.RooFit.Name(
"data_histB0tag"))
905 ROOT.RooFit.Cut(
"q==1"),
906 ROOT.RooFit.MarkerColor(
908 ROOT.RooFit.Name(
"data_histAB0tag"))
912 ROOT.RooFit.ProjWData(
916 ROOT.RooFit.LineWidth(3),
917 ROOT.RooFit.LineColor(
919 ROOT.RooFit.LineStyle(3))
922 ROOT.RooFit.ProjWData(
926 ROOT.RooFit.LineWidth(3),
927 ROOT.RooFit.LineColor(
929 ROOT.RooFit.Components(
"Ttagp"))
932 ROOT.RooFit.ProjWData(
936 ROOT.RooFit.LineWidth(3),
937 ROOT.RooFit.LineColor(
939 ROOT.RooFit.LineStyle(7),
940 ROOT.RooFit.Components(
"Ttagm"))
941 TtagFrame.SetTitle(
"")
942 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
943 TtagFrame.GetXaxis().SetTitleSize(0.05)
944 TtagFrame.GetXaxis().SetLabelSize(0.045)
945 TtagFrame.GetYaxis().SetTitleSize(0.05)
946 TtagFrame.GetYaxis().SetTitleOffset(1.5)
947 TtagFrame.GetYaxis().SetLabelSize(0.045)
949 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
954 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
955 Pad.SetLeftMargin(0.15)
956 Pad.SetBottomMargin(0.15)
961 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
962 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
963 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
964 curveMC.SetFillColor(ROOT.kWhite)
965 curveMCB0.SetFillColor(ROOT.kWhite)
966 curveMCAB0.SetFillColor(ROOT.kWhite)
968 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
969 lMC.AddEntry(curveMC,
"Both")
970 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
971 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
973 lMC.SetTextSize(0.065)
977 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMC.pdf')
980 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
981 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
982 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
984 plotWithAsymmetry(TtagFrame, self.
Ttag, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
985 curveMCAB0,
"[ps]",
"TtagFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
997 Ttagp = ROOT.RooGenericPdf(
1000 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1008 Ttagm = ROOT.RooGenericPdf(
1011 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1019 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
1020 TtagModel.addPdf(Ttagp,
"1")
1021 TtagModel.addPdf(Ttagm,
"-1")
1024 fitResTagPos = TtagModel.fitTo(
1026 ROOT.kFALSE), ROOT.RooFit.Extended(
1027 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1028 fitResTagPos.Print(
"v")
1031 self.
fitDataTagDeltaTPos.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1033 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1034 ROOT.RooFit.MarkerColor(ROOT.kRed),
1035 ROOT.RooFit.Name(
"data_histB0tag"))
1037 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1038 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1039 ROOT.RooFit.Name(
"data_histAB0tag"))
1041 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataTagDeltaTPos),
1042 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1045 ROOT.RooFit.ProjWData(
1049 ROOT.RooFit.LineWidth(3),
1050 ROOT.RooFit.LineColor(
1052 ROOT.RooFit.Components(
"Ttagp"))
1055 ROOT.RooFit.ProjWData(
1059 ROOT.RooFit.LineWidth(3),
1060 ROOT.RooFit.LineColor(
1062 ROOT.RooFit.LineStyle(7),
1063 ROOT.RooFit.Components(
"Ttagm"))
1064 TtagFrame.SetTitle(
"")
1065 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1066 TtagFrame.GetXaxis().SetTitleSize(0.05)
1067 TtagFrame.GetXaxis().SetLabelSize(0.045)
1068 TtagFrame.GetYaxis().SetTitleSize(0.05)
1069 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1070 TtagFrame.GetYaxis().SetLabelSize(0.045)
1072 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1077 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1078 Pad.SetLeftMargin(0.15)
1079 Pad.SetBottomMargin(0.15)
1084 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1085 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1086 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1087 curveMC.SetFillColor(ROOT.kWhite)
1088 curveMCB0.SetFillColor(ROOT.kWhite)
1089 curveMCAB0.SetFillColor(ROOT.kWhite)
1091 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1092 lMC.AddEntry(curveMC,
"Both")
1093 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1094 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1096 lMC.SetTextSize(0.065)
1099 fitResTagPos.Print(
"v")
1100 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCPositiveDeltaT.pdf')
1103 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1104 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1105 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1117 "TtagFittedOnGenMCPositiveDeltaT",
1129 self.
A.setConstant(ROOT.kFALSE)
1132 Ttagp = ROOT.RooGenericPdf(
1135 "(exp(-1*abs(Ttag)/Tau)*(1 + " +
1136 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1137 "(exp(-2*abs(Ttag)/Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1144 Ttagm = ROOT.RooGenericPdf(
1147 "(exp(-1*abs(Ttag)/Tau)*(1 - " +
1148 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1149 "(exp(-2*abs(Ttag)/Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1156 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
1157 TtagModel.addPdf(Ttagp,
"1")
1158 TtagModel.addPdf(Ttagm,
"-1")
1161 fitResTagNeg = TtagModel.fitTo(
1163 ROOT.kFALSE), ROOT.RooFit.Extended(
1164 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1165 fitResTagNeg.Print(
"v")
1168 self.
fitDataTagDeltaTNeg.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1170 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1171 ROOT.RooFit.MarkerColor(ROOT.kRed),
1172 ROOT.RooFit.Name(
"data_histB0tag"))
1174 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1175 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1176 ROOT.RooFit.Name(
"data_histAB0tag"))
1178 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataTagDeltaTNeg),
1179 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1182 ROOT.RooFit.ProjWData(
1186 ROOT.RooFit.LineWidth(3),
1187 ROOT.RooFit.LineColor(
1189 ROOT.RooFit.Components(
"Ttagp"))
1192 ROOT.RooFit.ProjWData(
1196 ROOT.RooFit.LineWidth(3),
1197 ROOT.RooFit.LineColor(
1199 ROOT.RooFit.LineStyle(7),
1200 ROOT.RooFit.Components(
"Ttagm"))
1201 TtagFrame.SetTitle(
"")
1202 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1203 TtagFrame.GetXaxis().SetTitleSize(0.05)
1204 TtagFrame.GetXaxis().SetLabelSize(0.045)
1205 TtagFrame.GetYaxis().SetTitleSize(0.05)
1206 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1207 TtagFrame.GetYaxis().SetLabelSize(0.045)
1209 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1214 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1215 Pad.SetLeftMargin(0.15)
1216 Pad.SetBottomMargin(0.15)
1224 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1225 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1226 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1227 curveMC.SetFillColor(ROOT.kWhite)
1228 curveMCB0.SetFillColor(ROOT.kWhite)
1229 curveMCAB0.SetFillColor(ROOT.kWhite)
1231 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1232 lMC.AddEntry(curveMC,
"Both")
1233 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1234 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1236 lMC.SetTextSize(0.065)
1239 fitResTagNeg.Print(
"v")
1240 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCNegativeDeltaT.pdf')
1243 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1244 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1245 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1257 "TtagFittedOnGenMCNegativeDeltaT",
1271 self.
S.setConstant(ROOT.kTRUE)
1272 self.
A.setConstant(ROOT.kTRUE)
1275 DeltaZsigUpsilonp = ROOT.RooGenericPdf(
1276 "DeltaZsigUpsilonp",
1277 "DeltaZsigUpsilonp",
1278 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
1279 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + " +
1280 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))" +
1281 "/(1+(Tau*DM)*(Tau*DM)))",
1290 DeltaZsigUpsilonm = ROOT.RooGenericPdf(
1291 "DeltaZsigUpsilonm",
1292 "DeltaZsigUpsilonm",
1293 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - "
1294 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + "
1295 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))"
1296 "/(1+(Tau*DM)*(Tau*DM)))",
1305 DeltaZsigUpsilonModel = ROOT.RooSimultaneous(
"DeltaZsigUpsilonModel",
"DeltaZsigUpsilonModel", self.
q)
1306 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonp,
"1")
1307 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonm,
"-1")
1308 DeltaZsigUpsilonModel.Print()
1310 fitResTag = DeltaZsigUpsilonModel.fitTo(
1312 ROOT.kFALSE), ROOT.RooFit.Extended(
1313 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1314 fitResTag.Print(
"v")
1319 DeltaZsigUpsilonFrame,
1320 ROOT.RooFit.Cut(
"q==q::1"),
1321 ROOT.RooFit.MarkerColor(
1323 ROOT.RooFit.Name(
"data_histB0sig"))
1325 DeltaZsigUpsilonFrame,
1326 ROOT.RooFit.Cut(
"q==1"),
1327 ROOT.RooFit.MarkerColor(
1329 ROOT.RooFit.Name(
"data_histAB0sig"))
1331 DeltaZsigUpsilonModel.plotOn(
1332 DeltaZsigUpsilonFrame,
1333 ROOT.RooFit.ProjWData(
1337 ROOT.RooFit.LineWidth(3),
1338 ROOT.RooFit.LineColor(
1340 ROOT.RooFit.LineStyle(3))
1341 DeltaZsigUpsilonModel.plotOn(
1342 DeltaZsigUpsilonFrame,
1343 ROOT.RooFit.ProjWData(
1347 ROOT.RooFit.LineWidth(3),
1348 ROOT.RooFit.LineColor(
1350 ROOT.RooFit.Components(
"DeltaZsigUpsilonp"))
1351 DeltaZsigUpsilonModel.plotOn(
1352 DeltaZsigUpsilonFrame,
1353 ROOT.RooFit.ProjWData(
1357 ROOT.RooFit.LineWidth(3),
1358 ROOT.RooFit.LineColor(
1360 ROOT.RooFit.LineStyle(7),
1361 ROOT.RooFit.Components(
"DeltaZsigUpsilonm"))
1362 DeltaZsigUpsilonFrame.SetTitle(
"")
1363 DeltaZsigUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{sig}^{dec} - #it{z}_{sig}^{prod}){}^{gen} [mm]")
1364 DeltaZsigUpsilonFrame.GetXaxis().SetTitleSize(0.05)
1365 DeltaZsigUpsilonFrame.GetXaxis().SetLabelSize(0.045)
1366 DeltaZsigUpsilonFrame.GetYaxis().SetTitleSize(0.05)
1367 DeltaZsigUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
1368 DeltaZsigUpsilonFrame.GetYaxis().SetLabelSize(0.045)
1370 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1375 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1376 Pad.SetLeftMargin(0.15)
1377 Pad.SetBottomMargin(0.15)
1380 DeltaZsigUpsilonFrame.Draw()
1382 curveMC = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]")
1383 curveMCB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonp]")
1384 curveMCAB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonm]")
1385 curveMC.SetFillColor(ROOT.kWhite)
1386 curveMCB0.SetFillColor(ROOT.kWhite)
1387 curveMCAB0.SetFillColor(ROOT.kWhite)
1389 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1390 lMC.AddEntry(curveMC,
"Both")
1391 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1392 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1394 lMC.SetTextSize(0.065)
1397 fitResTag.Print(
"v")
1398 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZsigUpsilonFittedOnGenMC.pdf')
1401 dotsMC = DeltaZsigUpsilonFrame.getHist(
"h_fitDataDeltaZsigUpsilon")
1402 dotsMCB0 = DeltaZsigUpsilonFrame.getHist(
"data_histB0sig")
1403 dotsMCAB0 = DeltaZsigUpsilonFrame.getHist(
"data_histAB0sig")
1406 DeltaZsigUpsilonFrame,
1415 "DeltaZsigUpsilonFittedOnGenMC",
1421 self.
S.setConstant(ROOT.kFALSE)
1422 self.
A.setConstant(ROOT.kFALSE)
1427 Tsigp = ROOT.RooGenericPdf(
1430 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 + " +
1431 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1439 Tsigm = ROOT.RooGenericPdf(
1442 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 - " +
1443 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1451 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1452 TsigModel.addPdf(Tsigp,
"1")
1453 TsigModel.addPdf(Tsigm,
"-1")
1456 fitResSig = TsigModel.fitTo(
1458 ROOT.kFALSE), ROOT.RooFit.Extended(
1459 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1460 fitResSig.Print(
"v")
1462 TsigFrame = self.
Tsig.frame()
1466 ROOT.RooFit.Cut(
"q==q::1"),
1467 ROOT.RooFit.MarkerColor(
1469 ROOT.RooFit.Name(
"data_histB0sig"))
1472 ROOT.RooFit.Cut(
"q==1"),
1473 ROOT.RooFit.MarkerColor(
1475 ROOT.RooFit.Name(
"data_histAB0sig"))
1479 ROOT.RooFit.ProjWData(
1483 ROOT.RooFit.LineWidth(3),
1484 ROOT.RooFit.LineColor(
1486 ROOT.RooFit.LineStyle(3))
1489 ROOT.RooFit.ProjWData(
1493 ROOT.RooFit.LineWidth(3),
1494 ROOT.RooFit.LineColor(
1496 ROOT.RooFit.Components(
"Tsigp"))
1499 ROOT.RooFit.ProjWData(
1503 ROOT.RooFit.LineWidth(3),
1504 ROOT.RooFit.LineColor(
1506 ROOT.RooFit.LineStyle(7),
1507 ROOT.RooFit.Components(
"Tsigm"))
1508 TsigFrame.SetTitle(
"")
1509 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1510 TsigFrame.GetXaxis().SetTitleSize(0.05)
1511 TsigFrame.GetXaxis().SetLabelSize(0.045)
1512 TsigFrame.GetYaxis().SetTitleSize(0.05)
1513 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1514 TsigFrame.GetYaxis().SetLabelSize(0.045)
1516 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1521 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1522 Pad.SetLeftMargin(0.15)
1523 Pad.SetBottomMargin(0.15)
1528 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1529 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1530 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1531 curveMC.SetFillColor(ROOT.kWhite)
1532 curveMCB0.SetFillColor(ROOT.kWhite)
1533 curveMCAB0.SetFillColor(ROOT.kWhite)
1535 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1536 lMC.AddEntry(curveMC,
"Both")
1537 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1538 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1540 lMC.SetTextSize(0.065)
1543 fitResSig.Print(
"v")
1544 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMC.pdf')
1547 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1548 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1549 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1551 plotWithAsymmetry(TsigFrame, self.
Tsig, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
1552 curveMCAB0,
"[ps]",
"TsigFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
1565 Tsigp = ROOT.RooGenericPdf(
1568 "(exp(-1*abs(Tsig)/Tau)*(1 + " +
1569 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1570 "(exp(-2*abs(Tsig)/Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1577 Tsigm = ROOT.RooGenericPdf(
1580 "(exp(-1*abs(Tsig)/Tau)*(1 - " +
1581 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1582 "(exp(-2*abs(Tsig)/Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1590 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1591 TsigModel.addPdf(Tsigp,
"1")
1592 TsigModel.addPdf(Tsigm,
"-1")
1595 fitResSigPos = TsigModel.fitTo(
1597 ROOT.kFALSE), ROOT.RooFit.Extended(
1598 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1599 fitResSigPos.Print(
"v")
1602 self.
fitDataSigDeltaTPos.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1604 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1605 ROOT.RooFit.MarkerColor(ROOT.kRed),
1606 ROOT.RooFit.Name(
"data_histB0sig"))
1608 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1609 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1610 ROOT.RooFit.Name(
"data_histAB0sig"))
1612 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataSigDeltaTPos),
1613 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1616 ROOT.RooFit.ProjWData(
1620 ROOT.RooFit.LineWidth(3),
1621 ROOT.RooFit.LineColor(
1623 ROOT.RooFit.Components(
"Tsigp"))
1626 ROOT.RooFit.ProjWData(
1630 ROOT.RooFit.LineWidth(3),
1631 ROOT.RooFit.LineColor(
1633 ROOT.RooFit.LineStyle(7),
1634 ROOT.RooFit.Components(
"Tsigm"))
1635 TsigFrame.SetTitle(
"")
1636 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1637 TsigFrame.GetXaxis().SetTitleSize(0.05)
1638 TsigFrame.GetXaxis().SetLabelSize(0.045)
1639 TsigFrame.GetYaxis().SetTitleSize(0.05)
1640 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1641 TsigFrame.GetYaxis().SetLabelSize(0.045)
1643 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1648 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1649 Pad.SetLeftMargin(0.15)
1650 Pad.SetBottomMargin(0.15)
1655 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1656 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1657 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1658 curveMC.SetFillColor(ROOT.kWhite)
1659 curveMCB0.SetFillColor(ROOT.kWhite)
1660 curveMCAB0.SetFillColor(ROOT.kWhite)
1662 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1663 lMC.AddEntry(curveMC,
"Both")
1664 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1665 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1667 lMC.SetTextSize(0.065)
1670 fitResSigPos.Print(
"v")
1671 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCPositiveDeltaT.pdf')
1674 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1675 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1676 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1688 "TsigFittedOnGenMCPositiveDeltaT",
1700 self.
A.setConstant(ROOT.kFALSE)
1704 Tsigp = ROOT.RooGenericPdf(
1707 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1715 Tsigm = ROOT.RooGenericPdf(
1718 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1727 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1728 TsigModel.addPdf(Tsigp,
"1")
1729 TsigModel.addPdf(Tsigm,
"-1")
1732 fitResSigNeg = TsigModel.fitTo(
1734 ROOT.kFALSE), ROOT.RooFit.Extended(
1735 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1736 fitResSigNeg.Print(
"v")
1739 self.
fitDataSigDeltaTNeg.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1741 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1742 ROOT.RooFit.MarkerColor(ROOT.kRed),
1743 ROOT.RooFit.Name(
"data_histB0sig"))
1745 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1746 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1747 ROOT.RooFit.Name(
"data_histAB0sig"))
1749 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataSigDeltaTNeg),
1750 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1753 ROOT.RooFit.ProjWData(
1757 ROOT.RooFit.LineWidth(3),
1758 ROOT.RooFit.LineColor(
1760 ROOT.RooFit.Components(
"Tsigp"))
1763 ROOT.RooFit.ProjWData(
1767 ROOT.RooFit.LineWidth(3),
1768 ROOT.RooFit.LineColor(
1770 ROOT.RooFit.LineStyle(7),
1771 ROOT.RooFit.Components(
"Tsigm"))
1772 TsigFrame.SetTitle(
"")
1773 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1774 TsigFrame.GetXaxis().SetTitleSize(0.05)
1775 TsigFrame.GetXaxis().SetLabelSize(0.045)
1776 TsigFrame.GetYaxis().SetTitleSize(0.05)
1777 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1778 TsigFrame.GetYaxis().SetLabelSize(0.045)
1780 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1785 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1786 Pad.SetLeftMargin(0.15)
1787 Pad.SetBottomMargin(0.15)
1795 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1796 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1797 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1798 curveMC.SetFillColor(ROOT.kWhite)
1799 curveMCB0.SetFillColor(ROOT.kWhite)
1800 curveMCAB0.SetFillColor(ROOT.kWhite)
1802 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1803 lMC.AddEntry(curveMC,
"Both")
1804 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1805 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1807 lMC.SetTextSize(0.065)
1810 fitResSigNeg.Print(
"v")
1811 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCNegativeDeltaT.pdf')
1814 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1815 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1816 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1828 "TsigFittedOnGenMCNegativeDeltaT",
1836 self.
Tau.setConstant(ROOT.kFALSE)
1839 Tsigp = ROOT.RooGenericPdf(
"Tsigp",
"Tsigp",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1841 Tsigm = ROOT.RooGenericPdf(
"Tsigm",
"Tsigm",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1843 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qsig)
1844 TsigModel.addPdf(Tsigp,
"1")
1845 TsigModel.addPdf(Tsigm,
"-1")
1848 fitResSig = TsigModel.fitTo(
1850 ROOT.kFALSE), ROOT.RooFit.Extended(
1851 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1852 fitResSig.Print(
"v")
1854 TsigFrame = self.
Tsig.frame()
1858 ROOT.RooFit.Cut(
"qsig==qsig::1"),
1859 ROOT.RooFit.MarkerColor(
1861 ROOT.RooFit.Name(
"data_histB0sig"))
1864 ROOT.RooFit.Cut(
"qsig==1"),
1865 ROOT.RooFit.MarkerColor(
1867 ROOT.RooFit.Name(
"data_histAB0sig"))
1871 ROOT.RooFit.ProjWData(
1875 ROOT.RooFit.LineWidth(3),
1876 ROOT.RooFit.LineColor(
1878 ROOT.RooFit.LineStyle(3))
1881 ROOT.RooFit.ProjWData(
1885 ROOT.RooFit.LineWidth(3),
1886 ROOT.RooFit.LineColor(
1888 ROOT.RooFit.Components(
"Tsigp"))
1891 ROOT.RooFit.ProjWData(
1895 ROOT.RooFit.LineWidth(3),
1896 ROOT.RooFit.LineColor(
1898 ROOT.RooFit.LineStyle(7),
1899 ROOT.RooFit.Components(
"Tsigm"))
1900 TsigFrame.SetTitle(
"")
1901 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1902 TsigFrame.GetXaxis().SetTitleSize(0.05)
1903 TsigFrame.GetXaxis().SetLabelSize(0.045)
1904 TsigFrame.GetYaxis().SetTitleSize(0.05)
1905 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1906 TsigFrame.GetYaxis().SetLabelSize(0.045)
1908 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1913 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1914 Pad.SetLeftMargin(0.15)
1915 Pad.SetBottomMargin(0.15)
1920 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1921 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1922 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1923 curveMC.SetFillColor(ROOT.kWhite)
1924 curveMCB0.SetFillColor(ROOT.kWhite)
1925 curveMCAB0.SetFillColor(ROOT.kWhite)
1927 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1928 lMC.AddEntry(curveMC,
"Both")
1929 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1930 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1932 lMC.SetTextSize(0.065)
1935 fitResSig.Print(
"v")
1936 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigQsigFittedOnGenMC.pdf')
1941 Diff = B0tagbarsPercentage - B0tagPercentage
1942 print(
"B0 Tag Flavor: ")
1949 B0tagbarsPercentage,
1956 Diff = B0signalbarsPercentage - B0signalPercentage
1957 print(
"B0 Signal Flavor: ")
1964 B0signalbarsPercentage,
1969 print(
"Total amount of events = ", self.
nentries)
1973 validation_path.add_module(fitDeltaTModule)
1975 b2.process(validation_path)
1976 print(b2.statistics)