15 import modularAnalysis
as ma
16 from ROOT
import TFile
23 """Reconstruct stuff with tight Mbc cut."""
25 testFile = tempfile.NamedTemporaryFile()
27 main = basf2.create_path()
30 'analysis/1000_B_DstD0Kpi_skimmed.root',
'validation', py_case=self)
31 ma.inputMdst(
'default', inputfile, path=main)
33 ma.fillParticleList(
'pi+:a',
'pionID > 0.5', path=main)
34 ma.fillParticleList(
'K+:a',
'kaonID > 0.5', path=main)
36 ma.reconstructDecay(
'D0:rec -> K-:a pi+:a',
'', 0, path=main)
37 ma.reconstructDecay(
'D*+:rec -> D0:rec pi+:a',
'', 0, path=main)
38 ma.reconstructDecay(
'B0:rec -> D*+:rec pi-:a',
' InvM > 5.27', 0, path=main)
39 ma.matchMCTruth(
'B0:rec', path=main)
41 ntupler = basf2.register_module(
'VariablesToNtuple')
42 ntupler.param(
'fileName', testFile.name)
43 ntupler.param(
'variables', [
'isSignal'])
44 ntupler.param(
'particleList',
'B0:rec')
45 main.add_module(ntupler)
49 ntuplefile = TFile(testFile.name)
50 ntuple = ntuplefile.Get(
'ntuple')
52 self.assertFalse(ntuple.GetEntries() == 0,
"Ntuple is empty.")
54 allBkg = ntuple.GetEntries(
"isSignal == 0")
55 allSig = ntuple.GetEntries(
"isSignal > 0")
57 print(f
"True candidates {allSig}")
58 print(f
"False candidates {allBkg}")
64 allSig == sig_expected,
65 f
"Mbc cut efficiency has changed! n_sig expected: {sig_expected} found: {allSig}.")
66 self.assertTrue(allBkg == bkg_expected, f
"Mbc cut background has changed! n_bkg expected: {bkg_expected} found: {allBkg}.")
68 print(
"Test passed, cleaning up.")
71 if __name__ ==
'__main__':
def require_file(filename, data_type="", py_case=None)