18 class TestGetDefaultChannels(unittest.TestCase):
19 def test_get_default(self):
21 self.assertEqual([p.identifier
for p
in particles],
22 [
'pi+:generic',
'K+:generic',
'p+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
23 'pi0:generic',
'K_S0:generic',
'Lambda0:generic',
'Sigma+:generic',
'J/psi:generic',
24 'D0:generic',
'D+:generic',
'D_s+:generic',
'Lambda_c+:generic',
25 'D*0:generic',
'D*+:generic',
'D_s*+:generic',
26 'B0:generic',
'B+:generic',
27 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
28 'B0:semileptonic',
'B+:semileptonic'])
30 def test_get_hadronic(self):
32 self.assertEqual([p.identifier
for p
in particles],
33 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
34 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
35 'D_s*+:generic',
'B0:generic',
'B+:generic'])
37 def test_get_semileptonic(self):
39 self.assertEqual([p.identifier
for p
in particles],
40 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
41 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
42 'D_s*+:generic',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
43 'B0:semileptonic',
'B+:semileptonic'])
45 def test_get_charged(self):
47 self.assertEqual([p.identifier
for p
in particles],
48 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
49 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
50 'D_s*+:generic',
'B+:generic',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
51 'D*+:semileptonic',
'B+:semileptonic'])
53 def test_get_neutral(self):
55 self.assertEqual([p.identifier
for p
in particles],
56 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
57 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
58 'D_s*+:generic',
'B0:generic',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
59 'D*+:semileptonic',
'B0:semileptonic'])
61 def test_get_klong(self):
63 self.assertEqual([p.identifier
for p
in particles],
64 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
65 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
66 'D_s*+:generic',
'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
69 def test_B_extra_cut(self):
71 self.assertEqual([p.identifier
for p
in particles],
72 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
73 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
74 'D_s*+:generic',
'B0:generic',
'B+:generic',
75 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
76 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
77 'B0:semileptonic',
'B+:semileptonic',
79 self.assertEqual(particles[14].preCutConfig.userCut,
'Mbc > 5.2 and abs(deltaE) < 0.5 and [nRemainingTracksInROE == 0]')
80 self.assertEqual(particles[15].preCutConfig.userCut,
'Mbc > 5.2 and abs(deltaE) < 0.5 and [nRemainingTracksInROE == 0]')
81 self.assertEqual(particles[23].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
82 self.assertEqual(particles[24].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
83 self.assertEqual(particles[29].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
84 self.assertEqual(particles[30].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
86 def test_get_specific(self):
88 self.assertEqual([p.identifier
for p
in particles],
89 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
90 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
91 'D_s*+:generic',
'B0:generic',
'B+:generic',
92 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
93 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
94 'B0:semileptonic',
'B+:semileptonic'])
95 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
96 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
97 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
98 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
99 self.assertEqual(particles[4].preCutConfig.userCut,
'[[clusterReg == 1 and E > 0.10] or [clusterReg == 2 and E > 0.09]'
100 ' or [clusterReg == 3 and E > 0.16]] and isInRestOfEvent > 0.5')
101 self.assertEqual(particles[6].preCutConfig.userCut,
'0.4 < M < 0.6')
102 self.assertEqual(particles[6].channels[2].preCutConfig.userCut,
'0.4 < M < 0.6 and isInRestOfEvent > 0.5')
103 self.assertEqual(particles[16].preCutConfig.userCut,
'isInRestOfEvent > 0.5')
105 def test_get_specific_converted(self):
108 self.assertEqual([p.identifier
for p
in particles],
109 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
110 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
111 'D_s*+:generic',
'B0:generic',
'B+:generic',
112 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
113 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
114 'B0:semileptonic',
'B+:semileptonic'])
115 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
116 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
117 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
118 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
119 self.assertEqual(particles[4].preCutConfig.userCut,
'goodBelleGamma == 1 and clusterBelleQuality == 0 '
120 'and isInRestOfEvent > 0.5')
121 self.assertEqual(particles[5].preCutConfig.userCut,
'0.08 < InvM < 0.18 and isInRestOfEvent > 0.5')
122 self.assertEqual(particles[6].preCutConfig.userCut,
'0.4 < M < 0.6 and isInRestOfEvent > 0.5')
123 self.assertEqual(particles[16].preCutConfig.userCut,
'isInRestOfEvent > 0.5')
126 def test_get_converted(self):
129 self.assertEqual([p.identifier
for p
in particles],
130 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
131 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
132 'D_s*+:generic',
'B0:generic',
'B+:generic',
133 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
134 'B0:semileptonic',
'B+:semileptonic'])
136 chargedVariables = [
'eIDBelle',
138 'atcPIDBelle(4,2)',
'atcPIDBelle(4,3)',
140 'p',
'pt',
'pz',
'dr',
'dz',
'chiProb',
'extraInfo(preCut_rank)']
141 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
142 self.assertEqual(particles[0].mvaConfig.variables, chargedVariables)
143 self.assertEqual(particles[0].preCutConfig.bestCandidateVariable,
'atcPIDBelle(2,3)')
144 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
145 self.assertEqual(particles[1].mvaConfig.variables, chargedVariables)
146 self.assertEqual(particles[1].preCutConfig.bestCandidateVariable,
'atcPIDBelle(3,2)')
147 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
148 self.assertEqual(particles[2].mvaConfig.variables, chargedVariables)
149 self.assertEqual(particles[2].preCutConfig.bestCandidateVariable,
'muIDBelle')
150 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
151 self.assertEqual(particles[3].mvaConfig.variables, chargedVariables)
152 self.assertEqual(particles[3].preCutConfig.bestCandidateVariable,
'eIDBelle')
153 self.assertEqual(particles[4].preCutConfig.userCut,
'goodBelleGamma == 1 and clusterBelleQuality == 0')
154 self.assertEqual(particles[6].mvaConfig.variables, [
'dr',
'dz',
'distance',
'significanceOfDistance',
'chiProb',
156 'useCMSFrame(E)',
'daughterAngle(0,1)',
157 'cosAngleBetweenMomentumAndVertexVector',
158 'extraInfo(preCut_rank)',
'extraInfo(goodKs)',
'extraInfo(ksnbVLike)',
159 'extraInfo(ksnbNoLam)',
'extraInfo(ksnbStandard)'])
163 class TestGetFRChannels(unittest.TestCase):
164 def test_get_default(self):
166 self.assertEqual([p.identifier
for p
in particles],
167 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
168 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
169 'D_s*+:generic',
'B0:generic',
'B+:generic'])
170 self.assertEqual(len(particles[0].channels), 1)
171 self.assertEqual(len(particles[1].channels), 1)
172 self.assertEqual(len(particles[2].channels), 1)
173 self.assertEqual(len(particles[3].channels), 1)
174 self.assertEqual(len(particles[4].channels), 2)
175 self.assertEqual(len(particles[5].channels), 1)
176 self.assertEqual(len(particles[6].channels), 3)
177 self.assertEqual(len(particles[7].channels), 2)
178 self.assertEqual(len(particles[8].channels), 10)
179 self.assertEqual(len(particles[9].channels), 7)
180 self.assertEqual(len(particles[10].channels), 8)
181 self.assertEqual(len(particles[11].channels), 2)
182 self.assertEqual(len(particles[12].channels), 2)
183 self.assertEqual(len(particles[13].channels), 1)
184 self.assertEqual(len(particles[14].channels), 15)
185 self.assertEqual(len(particles[15].channels), 17)
188 if __name__ ==
'__main__':
189 tempdir = tempfile.mkdtemp()
192 atexit.register(shutil.rmtree, tempdir)