28from ROOT
import Belle2
29import modularAnalysis
as ma
32from variables
import variables
as mc_variables
38validation_path = b2.Path()
40ma.inputMdstList(inputFiles, path=validation_path)
43ma.fillParticleListsFromMC([B0s],
True, path=validation_path)
45ma.matchMCTruth(
'B0:all', path=validation_path)
47Upsilon4S = (
'Upsilon(4S):all',
'')
48ma.fillParticleListsFromMC([Upsilon4S],
True, path=validation_path)
50ma.matchMCTruth(
'Upsilon(4S):all', path=validation_path)
52labelAsymmetry =
"#frac{N^{#it{B}^{0}} - N^{#bar{#it{B}}^{0}}}{N^{#it{B}^{0}} + N^{#bar{#it{B}}^{0}}}"
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()
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.)
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 rejectEventFlag =
False
451 DeltaT = 1000 * (tSig - tTag)
454 if len(B0Flags) == 2:
455 if B0Flags[0] != B0Flags[1]
and rejectEventFlag
is not True:
459 self.
DT.setVal(DeltaT)
460 self.
Tsig.setVal(float(1000 * tSig))
461 self.
Ttag.setVal(float(1000 * tTag))
467 self.
q.setLabel(
"-1")
470 self.
qsig.setLabel(
"1")
473 self.
qsig.setLabel(
"-1")
475 self.
fitData.add(ROOT.RooArgSet(self.
DT, self.
q))
494 Here the known quantum mechanical pdfs are defined and fitted to the generated MC distributions.
495 Afterwards, the plots are saved.
503 self.
DM.setConstant(ROOT.kTRUE)
504 self.
Tau.setConstant(ROOT.kTRUE)
505 self.
DT0.setConstant(ROOT.kTRUE)
506 self.
Norm.setConstant(ROOT.kTRUE)
515 DeltaTp = ROOT.RooGenericPdf(
518 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1+(A*cos(DM*DT)+S*sin(DM*DT)))",
527 DeltaTm = ROOT.RooGenericPdf(
530 "(exp(-1*abs(DT-DT0)/Tau)/(2*Norm*Tau))*(1-(A*cos(DM*DT)+S*sin(DM*DT)))",
539 DeltaT = ROOT.RooSimultaneous(
"DeltaT",
"DeltaT", self.
q)
540 DeltaT.addPdf(DeltaTp,
"1")
541 DeltaT.addPdf(DeltaTm,
"-1")
544 fitRes = DeltaT.fitTo(
545 self.
fitData, ROOT.RooFit.Minos(
546 ROOT.kFALSE), ROOT.RooFit.Extended(
547 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
550 DTFrame = self.
DT.frame()
551 print(
"here", str(DTFrame.GetXaxis().GetXmax()))
552 self.
fitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())))
554 ROOT.RooFit.Cut(
"q==q::1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
555 ROOT.RooFit.MarkerColor(ROOT.kRed),
556 ROOT.RooFit.Name(
"data_histB0"))
557 self.
fitData.plotOn(DTFrame, ROOT.RooFit.Cut(
"q==1" +
" && abs(DT) < " + str(DTFrame.GetXaxis().GetXmax())),
558 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1), ROOT.RooFit.Name(
"data_histAB0"))
566 ROOT.RooFit.ProjWData(
570 ROOT.RooFit.LineWidth(3),
571 ROOT.RooFit.LineColor(
573 ROOT.RooFit.LineStyle(3))
576 ROOT.RooFit.ProjWData(
580 ROOT.RooFit.LineWidth(3),
581 ROOT.RooFit.LineColor(
583 ROOT.RooFit.Components(
"DeltaTp"))
584 DeltaT.plotOn(DTFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitData), ROOT.RooFit.LineWidth(
585 3), ROOT.RooFit.LineColor(ROOT.kBlue + 1), ROOT.RooFit.LineStyle(7), ROOT.RooFit.Components(
"DeltaTm"))
588 DTFrame.GetXaxis().SetTitle(
"#Delta#it{t}^{gen} [ps]")
589 DTFrame.GetXaxis().SetTitleSize(0.05)
590 DTFrame.GetXaxis().SetLabelSize(0.045)
591 DTFrame.GetYaxis().SetTitleSize(0.05)
592 DTFrame.GetYaxis().SetTitleOffset(1.5)
593 DTFrame.GetYaxis().SetLabelSize(0.045)
595 c1 = ROOT.TCanvas(
"c1",
"c1", 1400, 1100)
600 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
601 Pad.SetLeftMargin(0.15)
602 Pad.SetBottomMargin(0.15)
608 curveMC = DTFrame.getCurve(
"DeltaT_Norm[DT]")
609 curveMCB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTp]")
610 curveMCAB0 = DTFrame.getCurve(
"DeltaT_Norm[DT]_Comp[DeltaTm]")
611 curveMC.SetFillColor(ROOT.kWhite)
612 curveMCB0.SetFillColor(ROOT.kWhite)
613 curveMCAB0.SetFillColor(ROOT.kWhite)
615 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
616 lMC.AddEntry(curveMC,
"Both")
617 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
618 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
620 lMC.SetTextSize(0.065)
623 textFitRes =
"#it{A}_{#it{CP}} = " + \
624 f
'{self.A.getValV() if abs(self.A.getValV()) > 0.005 else abs(self.A.getValV()): 1.2f}' + \
625 ", " +
"#it{S}_{#it{CP}} = " + \
626 f
'{self.S.getValV() if abs(self.S.getValV()) > 0.005 else abs(self.S.getValV()): 1.2f}'
628 lFitRes = ROOT.TLegend(0.215, 0.905, 0.7, 0.98)
629 lFitRes.AddEntry(
"", textFitRes,
" ")
630 lFitRes.SetBorderSize(0)
631 lFitRes.SetTextSize(0.054)
644 "#it{A}_{#it{CP}} = " +
645 f
'{self.A.getValV():1.2f}' +
647 f
'{self.A.getError():1.2f}')
651 "#it{A}_{#it{CP}} = " +
652 f
'{self.S.getValV():1.2f}' +
654 f
'{self.S.getError():1.2f}')
657 c1.SaveAs(
"./" +
'B0_JPsiKs_DeltaTFittedOnGenMC.pdf')
660 dotsMC = DTFrame.getHist(
"h_fitData")
661 dotsMCB0 = DTFrame.getHist(
"data_histB0")
662 dotsMCAB0 = DTFrame.getHist(
"data_histAB0")
674 "DeltaTFittedOnGenMC",
677 "#it{a}_{#it{CP}}(#Delta#it{t})",
688 self.
S.setConstant(ROOT.kTRUE)
689 self.
A.setConstant(ROOT.kTRUE)
692 DeltaZtagUpsilonp = ROOT.RooGenericPdf(
695 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
696 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
697 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
698 "/(1+(Tau*DM)*(Tau*DM)))",
707 DeltaZtagUpsilonm = ROOT.RooGenericPdf(
710 "(exp(-1*abs(DeltaZtagUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - " +
711 "(A*(cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))) + " +
712 " S*((DM*Tau)*cos(DM*DeltaZtagUpsilon/(0.3*BetaGamma)) - sin(DM*DeltaZtagUpsilon/(0.3*BetaGamma))))" +
713 "/(1+(Tau*DM)*(Tau*DM)))",
722 DeltaZtagUpsilonModel = ROOT.RooSimultaneous(
"DeltaZtagUpsilonModel",
"DeltaZtagUpsilonModel", self.
q)
723 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonp,
"1")
724 DeltaZtagUpsilonModel.addPdf(DeltaZtagUpsilonm,
"-1")
725 DeltaZtagUpsilonModel.Print()
727 fitResTag = DeltaZtagUpsilonModel.fitTo(
729 ROOT.kFALSE), ROOT.RooFit.Extended(
730 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
736 DeltaZtagUpsilonFrame,
737 ROOT.RooFit.Cut(
"q==q::1"),
738 ROOT.RooFit.MarkerColor(
740 ROOT.RooFit.Name(
"data_histB0tag"))
742 DeltaZtagUpsilonFrame,
743 ROOT.RooFit.Cut(
"q==1"),
744 ROOT.RooFit.MarkerColor(
746 ROOT.RooFit.Name(
"data_histAB0tag"))
748 DeltaZtagUpsilonModel.plotOn(
749 DeltaZtagUpsilonFrame,
750 ROOT.RooFit.ProjWData(
754 ROOT.RooFit.LineWidth(3),
755 ROOT.RooFit.LineColor(
757 ROOT.RooFit.LineStyle(3))
758 DeltaZtagUpsilonModel.plotOn(
759 DeltaZtagUpsilonFrame,
760 ROOT.RooFit.ProjWData(
764 ROOT.RooFit.LineWidth(3),
765 ROOT.RooFit.LineColor(
767 ROOT.RooFit.Components(
"DeltaZtagUpsilonp"))
768 DeltaZtagUpsilonModel.plotOn(
769 DeltaZtagUpsilonFrame,
770 ROOT.RooFit.ProjWData(
774 ROOT.RooFit.LineWidth(3),
775 ROOT.RooFit.LineColor(
777 ROOT.RooFit.LineStyle(7),
778 ROOT.RooFit.Components(
"DeltaZtagUpsilonm"))
779 DeltaZtagUpsilonFrame.SetTitle(
"")
780 DeltaZtagUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{tag}^{dec} - #it{z}_{tag}^{prod}){}^{gen} [mm]")
781 DeltaZtagUpsilonFrame.GetXaxis().SetTitleSize(0.05)
782 DeltaZtagUpsilonFrame.GetXaxis().SetLabelSize(0.045)
783 DeltaZtagUpsilonFrame.GetYaxis().SetTitleSize(0.05)
784 DeltaZtagUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
785 DeltaZtagUpsilonFrame.GetYaxis().SetLabelSize(0.045)
787 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
792 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
793 Pad.SetLeftMargin(0.15)
794 Pad.SetBottomMargin(0.15)
797 DeltaZtagUpsilonFrame.Draw()
799 curveMC = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]")
800 curveMCB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonp]")
801 curveMCAB0 = DeltaZtagUpsilonFrame.getCurve(
"DeltaZtagUpsilonModel_Norm[DeltaZtagUpsilon]_Comp[DeltaZtagUpsilonm]")
802 curveMC.SetFillColor(ROOT.kWhite)
803 curveMCB0.SetFillColor(ROOT.kWhite)
804 curveMCAB0.SetFillColor(ROOT.kWhite)
806 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
807 lMC.AddEntry(curveMC,
"Both")
808 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
809 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
811 lMC.SetTextSize(0.065)
815 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZtagUpsilonFittedOnGenMC.pdf')
818 dotsMC = DeltaZtagUpsilonFrame.getHist(
"h_fitDataDeltaZtagUpsilon")
819 dotsMCB0 = DeltaZtagUpsilonFrame.getHist(
"data_histB0tag")
820 dotsMCAB0 = DeltaZtagUpsilonFrame.getHist(
"data_histAB0tag")
823 DeltaZtagUpsilonFrame,
832 "DeltaZtagUpsilonFittedOnGenMC",
838 self.
S.setConstant(ROOT.kFALSE)
839 self.
A.setConstant(ROOT.kFALSE)
853 Ttagp = ROOT.RooGenericPdf(
856 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 + " +
857 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
865 Ttagm = ROOT.RooGenericPdf(
868 "(exp(-1*abs(Ttag)/Tau)/(Norm*Tau))*(1 - " +
869 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM)))",
877 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
878 TtagModel.addPdf(Ttagp,
"1")
879 TtagModel.addPdf(Ttagm,
"-1")
882 fitResTag = TtagModel.fitTo(
884 ROOT.kFALSE), ROOT.RooFit.Extended(
885 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
888 TtagFrame = self.
Ttag.frame()
892 ROOT.RooFit.Cut(
"q==q::1"),
893 ROOT.RooFit.MarkerColor(
895 ROOT.RooFit.Name(
"data_histB0tag"))
898 ROOT.RooFit.Cut(
"q==1"),
899 ROOT.RooFit.MarkerColor(
901 ROOT.RooFit.Name(
"data_histAB0tag"))
905 ROOT.RooFit.ProjWData(
909 ROOT.RooFit.LineWidth(3),
910 ROOT.RooFit.LineColor(
912 ROOT.RooFit.LineStyle(3))
915 ROOT.RooFit.ProjWData(
919 ROOT.RooFit.LineWidth(3),
920 ROOT.RooFit.LineColor(
922 ROOT.RooFit.Components(
"Ttagp"))
925 ROOT.RooFit.ProjWData(
929 ROOT.RooFit.LineWidth(3),
930 ROOT.RooFit.LineColor(
932 ROOT.RooFit.LineStyle(7),
933 ROOT.RooFit.Components(
"Ttagm"))
934 TtagFrame.SetTitle(
"")
935 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
936 TtagFrame.GetXaxis().SetTitleSize(0.05)
937 TtagFrame.GetXaxis().SetLabelSize(0.045)
938 TtagFrame.GetYaxis().SetTitleSize(0.05)
939 TtagFrame.GetYaxis().SetTitleOffset(1.5)
940 TtagFrame.GetYaxis().SetLabelSize(0.045)
942 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
947 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
948 Pad.SetLeftMargin(0.15)
949 Pad.SetBottomMargin(0.15)
954 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
955 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
956 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
957 curveMC.SetFillColor(ROOT.kWhite)
958 curveMCB0.SetFillColor(ROOT.kWhite)
959 curveMCAB0.SetFillColor(ROOT.kWhite)
961 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
962 lMC.AddEntry(curveMC,
"Both")
963 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
964 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
966 lMC.SetTextSize(0.065)
970 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMC.pdf')
973 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
974 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
975 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
977 plotWithAsymmetry(TtagFrame, self.
Ttag, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
978 curveMCAB0,
"[ps]",
"TtagFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
990 Ttagp = ROOT.RooGenericPdf(
993 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1001 Ttagm = ROOT.RooGenericPdf(
1004 "(exp(-2*abs(Ttag)/Tau)/(Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1012 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
1013 TtagModel.addPdf(Ttagp,
"1")
1014 TtagModel.addPdf(Ttagm,
"-1")
1017 fitResTagPos = TtagModel.fitTo(
1019 ROOT.kFALSE), ROOT.RooFit.Extended(
1020 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1021 fitResTagPos.Print(
"v")
1024 self.
fitDataTagDeltaTPos.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1026 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1027 ROOT.RooFit.MarkerColor(ROOT.kRed),
1028 ROOT.RooFit.Name(
"data_histB0tag"))
1030 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1031 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1032 ROOT.RooFit.Name(
"data_histAB0tag"))
1034 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataTagDeltaTPos),
1035 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1038 ROOT.RooFit.ProjWData(
1042 ROOT.RooFit.LineWidth(3),
1043 ROOT.RooFit.LineColor(
1045 ROOT.RooFit.Components(
"Ttagp"))
1048 ROOT.RooFit.ProjWData(
1052 ROOT.RooFit.LineWidth(3),
1053 ROOT.RooFit.LineColor(
1055 ROOT.RooFit.LineStyle(7),
1056 ROOT.RooFit.Components(
"Ttagm"))
1057 TtagFrame.SetTitle(
"")
1058 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1059 TtagFrame.GetXaxis().SetTitleSize(0.05)
1060 TtagFrame.GetXaxis().SetLabelSize(0.045)
1061 TtagFrame.GetYaxis().SetTitleSize(0.05)
1062 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1063 TtagFrame.GetYaxis().SetLabelSize(0.045)
1065 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1070 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1071 Pad.SetLeftMargin(0.15)
1072 Pad.SetBottomMargin(0.15)
1077 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1078 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1079 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1080 curveMC.SetFillColor(ROOT.kWhite)
1081 curveMCB0.SetFillColor(ROOT.kWhite)
1082 curveMCAB0.SetFillColor(ROOT.kWhite)
1084 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1085 lMC.AddEntry(curveMC,
"Both")
1086 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1087 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1089 lMC.SetTextSize(0.065)
1092 fitResTagPos.Print(
"v")
1093 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCPositiveDeltaT.pdf')
1096 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1097 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1098 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1110 "TtagFittedOnGenMCPositiveDeltaT",
1122 self.
A.setConstant(ROOT.kFALSE)
1125 Ttagp = ROOT.RooGenericPdf(
1128 "(exp(-1*abs(Ttag)/Tau)*(1 + " +
1129 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1130 "(exp(-2*abs(Ttag)/Tau))*(1 + (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1137 Ttagm = ROOT.RooGenericPdf(
1140 "(exp(-1*abs(Ttag)/Tau)*(1 - " +
1141 "(A*(cos(DM*Ttag)+(DM*Tau)*sin(DM*Ttag)) + S*((DM*Tau)*cos(DM*Ttag) - sin(DM*Ttag)))/(1+(Tau*DM)*(Tau*DM))) - " +
1142 "(exp(-2*abs(Ttag)/Tau))*(1 - (A + S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1149 TtagModel = ROOT.RooSimultaneous(
"TtagModel",
"TtagModel", self.
q)
1150 TtagModel.addPdf(Ttagp,
"1")
1151 TtagModel.addPdf(Ttagm,
"-1")
1154 fitResTagNeg = TtagModel.fitTo(
1156 ROOT.kFALSE), ROOT.RooFit.Extended(
1157 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1158 fitResTagNeg.Print(
"v")
1161 self.
fitDataTagDeltaTNeg.plotOn(TtagFrame, ROOT.RooFit.Cut(
"Ttag < " + str(TtagFrame.GetXaxis().GetXmax())))
1163 ROOT.RooFit.Cut(
"q==q::1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1164 ROOT.RooFit.MarkerColor(ROOT.kRed),
1165 ROOT.RooFit.Name(
"data_histB0tag"))
1167 ROOT.RooFit.Cut(
"q==1 && Ttag < " + str(TtagFrame.GetXaxis().GetXmax())),
1168 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1169 ROOT.RooFit.Name(
"data_histAB0tag"))
1171 TtagModel.plotOn(TtagFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataTagDeltaTNeg),
1172 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1175 ROOT.RooFit.ProjWData(
1179 ROOT.RooFit.LineWidth(3),
1180 ROOT.RooFit.LineColor(
1182 ROOT.RooFit.Components(
"Ttagp"))
1185 ROOT.RooFit.ProjWData(
1189 ROOT.RooFit.LineWidth(3),
1190 ROOT.RooFit.LineColor(
1192 ROOT.RooFit.LineStyle(7),
1193 ROOT.RooFit.Components(
"Ttagm"))
1194 TtagFrame.SetTitle(
"")
1195 TtagFrame.GetXaxis().SetTitle(
"#it{t}_{tag}^{gen} [ps]")
1196 TtagFrame.GetXaxis().SetTitleSize(0.05)
1197 TtagFrame.GetXaxis().SetLabelSize(0.045)
1198 TtagFrame.GetYaxis().SetTitleSize(0.05)
1199 TtagFrame.GetYaxis().SetTitleOffset(1.5)
1200 TtagFrame.GetYaxis().SetLabelSize(0.045)
1202 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1207 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1208 Pad.SetLeftMargin(0.15)
1209 Pad.SetBottomMargin(0.15)
1217 curveMC = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]")
1218 curveMCB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagp]")
1219 curveMCAB0 = TtagFrame.getCurve(
"TtagModel_Norm[Ttag]_Comp[Ttagm]")
1220 curveMC.SetFillColor(ROOT.kWhite)
1221 curveMCB0.SetFillColor(ROOT.kWhite)
1222 curveMCAB0.SetFillColor(ROOT.kWhite)
1224 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1225 lMC.AddEntry(curveMC,
"Both")
1226 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1227 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1229 lMC.SetTextSize(0.065)
1232 fitResTagNeg.Print(
"v")
1233 c2.SaveAs(
"./" +
'B0_JPsiKs_TtagFittedOnGenMCNegativeDeltaT.pdf')
1236 dotsMC = TtagFrame.getHist(
"h_fitDataTag")
1237 dotsMCB0 = TtagFrame.getHist(
"data_histB0tag")
1238 dotsMCAB0 = TtagFrame.getHist(
"data_histAB0tag")
1250 "TtagFittedOnGenMCNegativeDeltaT",
1264 self.
S.setConstant(ROOT.kTRUE)
1265 self.
A.setConstant(ROOT.kTRUE)
1268 DeltaZsigUpsilonp = ROOT.RooGenericPdf(
1269 "DeltaZsigUpsilonp",
1270 "DeltaZsigUpsilonp",
1271 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 + " +
1272 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + " +
1273 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))" +
1274 "/(1+(Tau*DM)*(Tau*DM)))",
1283 DeltaZsigUpsilonm = ROOT.RooGenericPdf(
1284 "DeltaZsigUpsilonm",
1285 "DeltaZsigUpsilonm",
1286 "(exp(-1*abs(DeltaZsigUpsilon/(0.3*BetaGamma))/Tau)/(Norm*Tau))*(1 - "
1287 "(A*(cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma))+(DM*Tau)*sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))) + "
1288 "S*(-(DM*Tau)*cos(DM*DeltaZsigUpsilon/(0.3*BetaGamma)) + sin(DM*DeltaZsigUpsilon/(0.3*BetaGamma))))"
1289 "/(1+(Tau*DM)*(Tau*DM)))",
1298 DeltaZsigUpsilonModel = ROOT.RooSimultaneous(
"DeltaZsigUpsilonModel",
"DeltaZsigUpsilonModel", self.
q)
1299 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonp,
"1")
1300 DeltaZsigUpsilonModel.addPdf(DeltaZsigUpsilonm,
"-1")
1301 DeltaZsigUpsilonModel.Print()
1303 fitResTag = DeltaZsigUpsilonModel.fitTo(
1305 ROOT.kFALSE), ROOT.RooFit.Extended(
1306 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1307 fitResTag.Print(
"v")
1312 DeltaZsigUpsilonFrame,
1313 ROOT.RooFit.Cut(
"q==q::1"),
1314 ROOT.RooFit.MarkerColor(
1316 ROOT.RooFit.Name(
"data_histB0sig"))
1318 DeltaZsigUpsilonFrame,
1319 ROOT.RooFit.Cut(
"q==1"),
1320 ROOT.RooFit.MarkerColor(
1322 ROOT.RooFit.Name(
"data_histAB0sig"))
1324 DeltaZsigUpsilonModel.plotOn(
1325 DeltaZsigUpsilonFrame,
1326 ROOT.RooFit.ProjWData(
1330 ROOT.RooFit.LineWidth(3),
1331 ROOT.RooFit.LineColor(
1333 ROOT.RooFit.LineStyle(3))
1334 DeltaZsigUpsilonModel.plotOn(
1335 DeltaZsigUpsilonFrame,
1336 ROOT.RooFit.ProjWData(
1340 ROOT.RooFit.LineWidth(3),
1341 ROOT.RooFit.LineColor(
1343 ROOT.RooFit.Components(
"DeltaZsigUpsilonp"))
1344 DeltaZsigUpsilonModel.plotOn(
1345 DeltaZsigUpsilonFrame,
1346 ROOT.RooFit.ProjWData(
1350 ROOT.RooFit.LineWidth(3),
1351 ROOT.RooFit.LineColor(
1353 ROOT.RooFit.LineStyle(7),
1354 ROOT.RooFit.Components(
"DeltaZsigUpsilonm"))
1355 DeltaZsigUpsilonFrame.SetTitle(
"")
1356 DeltaZsigUpsilonFrame.GetXaxis().SetTitle(
"(#it{z}_{sig}^{dec} - #it{z}_{sig}^{prod}){}^{gen} [mm]")
1357 DeltaZsigUpsilonFrame.GetXaxis().SetTitleSize(0.05)
1358 DeltaZsigUpsilonFrame.GetXaxis().SetLabelSize(0.045)
1359 DeltaZsigUpsilonFrame.GetYaxis().SetTitleSize(0.05)
1360 DeltaZsigUpsilonFrame.GetYaxis().SetTitleOffset(1.5)
1361 DeltaZsigUpsilonFrame.GetYaxis().SetLabelSize(0.045)
1363 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1368 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1369 Pad.SetLeftMargin(0.15)
1370 Pad.SetBottomMargin(0.15)
1373 DeltaZsigUpsilonFrame.Draw()
1375 curveMC = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]")
1376 curveMCB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonp]")
1377 curveMCAB0 = DeltaZsigUpsilonFrame.getCurve(
"DeltaZsigUpsilonModel_Norm[DeltaZsigUpsilon]_Comp[DeltaZsigUpsilonm]")
1378 curveMC.SetFillColor(ROOT.kWhite)
1379 curveMCB0.SetFillColor(ROOT.kWhite)
1380 curveMCAB0.SetFillColor(ROOT.kWhite)
1382 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1383 lMC.AddEntry(curveMC,
"Both")
1384 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1385 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1387 lMC.SetTextSize(0.065)
1390 fitResTag.Print(
"v")
1391 c2.SaveAs(
"./" +
'B0_JPsiKs_DeltaZsigUpsilonFittedOnGenMC.pdf')
1394 dotsMC = DeltaZsigUpsilonFrame.getHist(
"h_fitDataDeltaZsigUpsilon")
1395 dotsMCB0 = DeltaZsigUpsilonFrame.getHist(
"data_histB0sig")
1396 dotsMCAB0 = DeltaZsigUpsilonFrame.getHist(
"data_histAB0sig")
1399 DeltaZsigUpsilonFrame,
1408 "DeltaZsigUpsilonFittedOnGenMC",
1414 self.
S.setConstant(ROOT.kFALSE)
1415 self.
A.setConstant(ROOT.kFALSE)
1420 Tsigp = ROOT.RooGenericPdf(
1423 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 + " +
1424 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1432 Tsigm = ROOT.RooGenericPdf(
1435 "(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))*(1 - " +
1436 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM)))",
1444 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1445 TsigModel.addPdf(Tsigp,
"1")
1446 TsigModel.addPdf(Tsigm,
"-1")
1449 fitResSig = TsigModel.fitTo(
1451 ROOT.kFALSE), ROOT.RooFit.Extended(
1452 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1453 fitResSig.Print(
"v")
1455 TsigFrame = self.
Tsig.frame()
1459 ROOT.RooFit.Cut(
"q==q::1"),
1460 ROOT.RooFit.MarkerColor(
1462 ROOT.RooFit.Name(
"data_histB0sig"))
1465 ROOT.RooFit.Cut(
"q==1"),
1466 ROOT.RooFit.MarkerColor(
1468 ROOT.RooFit.Name(
"data_histAB0sig"))
1472 ROOT.RooFit.ProjWData(
1476 ROOT.RooFit.LineWidth(3),
1477 ROOT.RooFit.LineColor(
1479 ROOT.RooFit.LineStyle(3))
1482 ROOT.RooFit.ProjWData(
1486 ROOT.RooFit.LineWidth(3),
1487 ROOT.RooFit.LineColor(
1489 ROOT.RooFit.Components(
"Tsigp"))
1492 ROOT.RooFit.ProjWData(
1496 ROOT.RooFit.LineWidth(3),
1497 ROOT.RooFit.LineColor(
1499 ROOT.RooFit.LineStyle(7),
1500 ROOT.RooFit.Components(
"Tsigm"))
1501 TsigFrame.SetTitle(
"")
1502 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1503 TsigFrame.GetXaxis().SetTitleSize(0.05)
1504 TsigFrame.GetXaxis().SetLabelSize(0.045)
1505 TsigFrame.GetYaxis().SetTitleSize(0.05)
1506 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1507 TsigFrame.GetYaxis().SetLabelSize(0.045)
1509 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1514 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1515 Pad.SetLeftMargin(0.15)
1516 Pad.SetBottomMargin(0.15)
1521 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1522 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1523 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1524 curveMC.SetFillColor(ROOT.kWhite)
1525 curveMCB0.SetFillColor(ROOT.kWhite)
1526 curveMCAB0.SetFillColor(ROOT.kWhite)
1528 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1529 lMC.AddEntry(curveMC,
"Both")
1530 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1531 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1533 lMC.SetTextSize(0.065)
1536 fitResSig.Print(
"v")
1537 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMC.pdf')
1540 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1541 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1542 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1544 plotWithAsymmetry(TsigFrame, self.
Tsig, dotsMC, dotsMCB0, dotsMCAB0, curveMC, curveMCB0,
1545 curveMCAB0,
"[ps]",
"TsigFittedOnGenMC", lMC,
"", labelAsymmetry,
True)
1558 Tsigp = ROOT.RooGenericPdf(
1561 "(exp(-1*abs(Tsig)/Tau)*(1 + " +
1562 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1563 "(exp(-2*abs(Tsig)/Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1570 Tsigm = ROOT.RooGenericPdf(
1573 "(exp(-1*abs(Tsig)/Tau)*(1 - " +
1574 "(A*(cos(DM*Tsig)+(DM*Tau)*sin(DM*Tsig)) + S*(-(DM*Tau)*cos(DM*Tsig) + sin(DM*Tsig)))/(1+(Tau*DM)*(Tau*DM))) - " +
1575 "(exp(-2*abs(Tsig)/Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM))))/(Tau)",
1583 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1584 TsigModel.addPdf(Tsigp,
"1")
1585 TsigModel.addPdf(Tsigm,
"-1")
1588 fitResSigPos = TsigModel.fitTo(
1590 ROOT.kFALSE), ROOT.RooFit.Extended(
1591 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1592 fitResSigPos.Print(
"v")
1595 self.
fitDataSigDeltaTPos.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1597 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1598 ROOT.RooFit.MarkerColor(ROOT.kRed),
1599 ROOT.RooFit.Name(
"data_histB0sig"))
1601 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1602 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1603 ROOT.RooFit.Name(
"data_histAB0sig"))
1605 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataSigDeltaTPos),
1606 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1609 ROOT.RooFit.ProjWData(
1613 ROOT.RooFit.LineWidth(3),
1614 ROOT.RooFit.LineColor(
1616 ROOT.RooFit.Components(
"Tsigp"))
1619 ROOT.RooFit.ProjWData(
1623 ROOT.RooFit.LineWidth(3),
1624 ROOT.RooFit.LineColor(
1626 ROOT.RooFit.LineStyle(7),
1627 ROOT.RooFit.Components(
"Tsigm"))
1628 TsigFrame.SetTitle(
"")
1629 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1630 TsigFrame.GetXaxis().SetTitleSize(0.05)
1631 TsigFrame.GetXaxis().SetLabelSize(0.045)
1632 TsigFrame.GetYaxis().SetTitleSize(0.05)
1633 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1634 TsigFrame.GetYaxis().SetLabelSize(0.045)
1636 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1641 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1642 Pad.SetLeftMargin(0.15)
1643 Pad.SetBottomMargin(0.15)
1648 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1649 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1650 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1651 curveMC.SetFillColor(ROOT.kWhite)
1652 curveMCB0.SetFillColor(ROOT.kWhite)
1653 curveMCAB0.SetFillColor(ROOT.kWhite)
1655 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1656 lMC.AddEntry(curveMC,
"Both")
1657 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1658 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1660 lMC.SetTextSize(0.065)
1663 fitResSigPos.Print(
"v")
1664 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCPositiveDeltaT.pdf')
1667 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1668 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1669 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1681 "TsigFittedOnGenMCPositiveDeltaT",
1693 self.
A.setConstant(ROOT.kFALSE)
1697 Tsigp = ROOT.RooGenericPdf(
1700 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 + (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1708 Tsigm = ROOT.RooGenericPdf(
1711 "(exp(-2*abs(Tsig)/Tau)/(Tau))*(1 - (A - S*(DM*Tau))/(1+(Tau*DM)*(Tau*DM)))",
1720 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
q)
1721 TsigModel.addPdf(Tsigp,
"1")
1722 TsigModel.addPdf(Tsigm,
"-1")
1725 fitResSigNeg = TsigModel.fitTo(
1727 ROOT.kFALSE), ROOT.RooFit.Extended(
1728 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1729 fitResSigNeg.Print(
"v")
1732 self.
fitDataSigDeltaTNeg.plotOn(TsigFrame, ROOT.RooFit.Cut(
"Tsig < " + str(TsigFrame.GetXaxis().GetXmax())))
1734 ROOT.RooFit.Cut(
"q==q::1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1735 ROOT.RooFit.MarkerColor(ROOT.kRed),
1736 ROOT.RooFit.Name(
"data_histB0sig"))
1738 ROOT.RooFit.Cut(
"q==1 && Tsig < " + str(TsigFrame.GetXaxis().GetXmax())),
1739 ROOT.RooFit.MarkerColor(ROOT.kBlue + 1),
1740 ROOT.RooFit.Name(
"data_histAB0sig"))
1742 TsigModel.plotOn(TsigFrame, ROOT.RooFit.ProjWData(ROOT.RooArgSet(self.
q), self.
fitDataSigDeltaTNeg),
1743 ROOT.RooFit.LineWidth(3), ROOT.RooFit.LineColor(ROOT.kBlack), ROOT.RooFit.LineStyle(3))
1746 ROOT.RooFit.ProjWData(
1750 ROOT.RooFit.LineWidth(3),
1751 ROOT.RooFit.LineColor(
1753 ROOT.RooFit.Components(
"Tsigp"))
1756 ROOT.RooFit.ProjWData(
1760 ROOT.RooFit.LineWidth(3),
1761 ROOT.RooFit.LineColor(
1763 ROOT.RooFit.LineStyle(7),
1764 ROOT.RooFit.Components(
"Tsigm"))
1765 TsigFrame.SetTitle(
"")
1766 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1767 TsigFrame.GetXaxis().SetTitleSize(0.05)
1768 TsigFrame.GetXaxis().SetLabelSize(0.045)
1769 TsigFrame.GetYaxis().SetTitleSize(0.05)
1770 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1771 TsigFrame.GetYaxis().SetLabelSize(0.045)
1773 c2 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1778 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1779 Pad.SetLeftMargin(0.15)
1780 Pad.SetBottomMargin(0.15)
1788 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1789 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1790 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1791 curveMC.SetFillColor(ROOT.kWhite)
1792 curveMCB0.SetFillColor(ROOT.kWhite)
1793 curveMCAB0.SetFillColor(ROOT.kWhite)
1795 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1796 lMC.AddEntry(curveMC,
"Both")
1797 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1798 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1800 lMC.SetTextSize(0.065)
1803 fitResSigNeg.Print(
"v")
1804 c2.SaveAs(
"./" +
'B0_JPsiKs_TsigFittedOnGenMCNegativeDeltaT.pdf')
1807 dotsMC = TsigFrame.getHist(
"h_fitDataSig")
1808 dotsMCB0 = TsigFrame.getHist(
"data_histB0sig")
1809 dotsMCAB0 = TsigFrame.getHist(
"data_histAB0sig")
1821 "TsigFittedOnGenMCNegativeDeltaT",
1829 self.
Tau.setConstant(ROOT.kFALSE)
1832 Tsigp = ROOT.RooGenericPdf(
"Tsigp",
"Tsigp",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1834 Tsigm = ROOT.RooGenericPdf(
"Tsigm",
"Tsigm",
"(exp(-1*abs(Tsig)/Tau)/(Norm*Tau))",
1836 TsigModel = ROOT.RooSimultaneous(
"TsigModel",
"TsigModel", self.
qsig)
1837 TsigModel.addPdf(Tsigp,
"1")
1838 TsigModel.addPdf(Tsigm,
"-1")
1841 fitResSig = TsigModel.fitTo(
1843 ROOT.kFALSE), ROOT.RooFit.Extended(
1844 ROOT.kFALSE), ROOT.RooFit.NumCPU(1), ROOT.RooFit.Save())
1845 fitResSig.Print(
"v")
1847 TsigFrame = self.
Tsig.frame()
1851 ROOT.RooFit.Cut(
"qsig==qsig::1"),
1852 ROOT.RooFit.MarkerColor(
1854 ROOT.RooFit.Name(
"data_histB0sig"))
1857 ROOT.RooFit.Cut(
"qsig==1"),
1858 ROOT.RooFit.MarkerColor(
1860 ROOT.RooFit.Name(
"data_histAB0sig"))
1864 ROOT.RooFit.ProjWData(
1868 ROOT.RooFit.LineWidth(3),
1869 ROOT.RooFit.LineColor(
1871 ROOT.RooFit.LineStyle(3))
1874 ROOT.RooFit.ProjWData(
1878 ROOT.RooFit.LineWidth(3),
1879 ROOT.RooFit.LineColor(
1881 ROOT.RooFit.Components(
"Tsigp"))
1884 ROOT.RooFit.ProjWData(
1888 ROOT.RooFit.LineWidth(3),
1889 ROOT.RooFit.LineColor(
1891 ROOT.RooFit.LineStyle(7),
1892 ROOT.RooFit.Components(
"Tsigm"))
1893 TsigFrame.SetTitle(
"")
1894 TsigFrame.GetXaxis().SetTitle(
"#it{t}_{sig}^{gen} [ps]")
1895 TsigFrame.GetXaxis().SetTitleSize(0.05)
1896 TsigFrame.GetXaxis().SetLabelSize(0.045)
1897 TsigFrame.GetYaxis().SetTitleSize(0.05)
1898 TsigFrame.GetYaxis().SetTitleOffset(1.5)
1899 TsigFrame.GetYaxis().SetLabelSize(0.045)
1901 c3 = ROOT.TCanvas(
"c2",
"c2", 1400, 1100)
1906 Pad = ROOT.TPad(
"p1",
"p1", 0, 0, 1, 1, 0, 0, 0)
1907 Pad.SetLeftMargin(0.15)
1908 Pad.SetBottomMargin(0.15)
1913 curveMC = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]")
1914 curveMCB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigp]")
1915 curveMCAB0 = TsigFrame.getCurve(
"TsigModel_Norm[Tsig]_Comp[Tsigm]")
1916 curveMC.SetFillColor(ROOT.kWhite)
1917 curveMCB0.SetFillColor(ROOT.kWhite)
1918 curveMCAB0.SetFillColor(ROOT.kWhite)
1920 lMC = ROOT.TLegend(0.73, 0.60, 0.89, 0.89)
1921 lMC.AddEntry(curveMC,
"Both")
1922 lMC.AddEntry(curveMCAB0,
'#bar{#it{B}}^{0}')
1923 lMC.AddEntry(curveMCB0,
'#it{B}^{0}')
1925 lMC.SetTextSize(0.065)
1928 fitResSig.Print(
"v")
1929 c3.SaveAs(
"./" +
'B0_JPsiKs_TsigQsigFittedOnGenMC.pdf')
1934 Diff = B0tagbarsPercentage - B0tagPercentage
1935 print(
"B0 Tag Flavor: ")
1938 f
" {B0tagPercentage:0.4f}",
1940 f
" {B0tagbarsPercentage:0.4f}",
1946 Diff = B0signalbarsPercentage - B0signalPercentage
1947 print(
"B0 Signal Flavor: ")
1950 f
" {B0signalPercentage:0.4f}",
1952 f
" {B0signalbarsPercentage:0.4f}",
1956 print(
"Total amount of events = ", self.
nentries)
1960validation_path.add_module(fitDeltaTModule)
1962b2.process(validation_path)
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.