Belle II Software development
TestTreeFits Class Reference
Inheritance diagram for TestTreeFits:

Public Member Functions

def testFit (self)
 

Detailed Description

The unit test case for TreeFitter

Definition at line 20 of file treeFit_klong.py.

Member Function Documentation

◆ testFit()

def testFit (   self)
Run the test fit

Definition at line 23 of file treeFit_klong.py.

23 def testFit(self):
24 """Run the test fit"""
25
26 basf2.set_random_seed('klong')
27 testFile = tempfile.NamedTemporaryFile()
28
29 main = basf2.create_path()
30
31 ma.inputMdstList([basf2.find_file('B02JpsiKL_Jpsi2mumu.root', 'examples', False)], path=main)
32
33 ma.fillParticleList('mu+:sig', 'muonID > 0.5', path=main)
34 stdKlongs('allklm', path=main)
35
36 ma.reconstructDecay('J/psi:mumu -> mu-:sig mu+:sig', '3.08 < M < 3.12', path=main)
37 ma.reconstructDecay('B0:sig -> J/psi:mumu K_L0:allklm', '', path=main)
38 ma.matchMCTruth('B0:sig', path=main)
39
40 conf = -1
41 main.add_module('TreeFitter',
42 particleList='B0:sig',
43 confidenceLevel=conf,
44 massConstraintList=[511],
45 ipConstraint=True,
46 updateAllDaughters=True)
47
48 ntupler = basf2.register_module('VariablesToNtuple')
49 ntupler.param('fileName', testFile.name)
50 ntupler.param('variables', ['chiProb', 'isSignal', 'Mbc', 'deltaE', 'dz'])
51 ntupler.param('particleList', 'B0:sig')
52 main.add_module(ntupler)
53
54 basf2.process(main)
55
56 ntuplefile = TFile(testFile.name)
57 ntuple = ntuplefile.Get('ntuple')
58
59 self.assertFalse(ntuple.GetEntries() == 0, "Ntuple is empty.")
60
61 allSig = ntuple.GetEntries("isSignal == 1")
62 allBkg = ntuple.GetEntries("isSignal == 0")
63
64 truePositives = ntuple.GetEntries("(chiProb > 0) && (isSignal == 1)")
65 falsePositives = ntuple.GetEntries("(chiProb > 0) && (isSignal == 0)")
66
67 SigDeltaEReasonable = ntuple.GetEntries("isSignal==1 && deltaE<0.1 && chiProb>0")
68
69 print(f"True fit survivors: {truePositives} out of {allSig} true candidates")
70 print(f"False fit survivors: {falsePositives} out of {allBkg} false candidates")
71 print(f"True fit survivors with reasonable deltaE: {SigDeltaEReasonable}")
72
73 self.assertTrue(allBkg - falsePositives >= 37,
74 f"Background rejection: {allBkg-falsePositives} out of {allBkg} false candidates rejected")
75 self.assertTrue(truePositives >= 508, f"Signal efficiency: {truePositives} out of {allSig} true candidates retained")
76
77 self.assertTrue(SigDeltaEReasonable >= 433,
78 f"Signal kinematics is correctly reconstructed in {SigDeltaEReasonable} candidates.")
79
80 print("Test passed, cleaning up.")
81
82

The documentation for this class was generated from the following file: