26 class TestGetDefaultChannels(unittest.TestCase):
27 def test_get_default(self):
29 self.assertEqual([p.identifier
for p
in particles],
30 [
'pi+:generic',
'K+:generic',
'p+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
31 'pi0:generic',
'K_S0:generic',
'Lambda0:generic',
'Sigma+:generic',
'J/psi:generic',
32 'D0:generic',
'D+:generic',
'D_s+:generic',
'Lambda_c+:generic',
33 'D*0:generic',
'D*+:generic',
'D_s*+:generic',
34 'B0:generic',
'B+:generic',
35 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
36 'B0:semileptonic',
'B+:semileptonic'])
38 def test_get_hadronic(self):
40 self.assertEqual([p.identifier
for p
in particles],
41 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
42 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
43 'D_s*+:generic',
'B0:generic',
'B+:generic'])
45 def test_get_semileptonic(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',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
51 'B0:semileptonic',
'B+:semileptonic'])
53 def test_get_charged(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',
'B+:generic',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
59 'D*+:semileptonic',
'B+:semileptonic'])
61 def test_get_neutral(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',
'B0:generic',
'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
67 'D*+:semileptonic',
'B0:semileptonic'])
69 def test_get_klong(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',
'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
77 def test_B_extra_cut(self):
79 self.assertEqual([p.identifier
for p
in particles],
80 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
81 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
82 'D_s*+:generic',
'B0:generic',
'B+:generic',
83 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
84 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
85 'B0:semileptonic',
'B+:semileptonic',
87 self.assertEqual(particles[14].preCutConfig.userCut,
'Mbc > 5.2 and abs(deltaE) < 0.5 and [nRemainingTracksInROE == 0]')
88 self.assertEqual(particles[15].preCutConfig.userCut,
'Mbc > 5.2 and abs(deltaE) < 0.5 and [nRemainingTracksInROE == 0]')
89 self.assertEqual(particles[23].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
90 self.assertEqual(particles[24].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
91 self.assertEqual(particles[29].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
92 self.assertEqual(particles[30].preCutConfig.userCut,
'nRemainingTracksInROE == 0')
94 def test_get_specific(self):
96 self.assertEqual([p.identifier
for p
in particles],
97 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
98 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
99 'D_s*+:generic',
'B0:generic',
'B+:generic',
100 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
101 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
102 'B0:semileptonic',
'B+:semileptonic'])
103 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
104 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
105 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
106 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
107 self.assertEqual(particles[4].preCutConfig.userCut,
'[[clusterReg == 1 and E > 0.10] or [clusterReg == 2 and E > 0.09]'
108 ' or [clusterReg == 3 and E > 0.16]] and isInRestOfEvent > 0.5')
109 self.assertEqual(particles[6].preCutConfig.userCut,
'0.4 < M < 0.6')
110 self.assertEqual(particles[6].channels[2].preCutConfig.userCut,
'0.4 < M < 0.6 and isInRestOfEvent > 0.5')
111 self.assertEqual(particles[16].preCutConfig.userCut,
'isInRestOfEvent > 0.5')
113 def test_get_specific_converted(self):
116 self.assertEqual([p.identifier
for p
in particles],
117 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
118 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
119 'D_s*+:generic',
'B0:generic',
'B+:generic',
120 'K_L0:generic',
'D0:KL',
'D+:KL',
'D_s+:KL',
'D*0:KL',
'D*+:KL',
'D_s*+:KL',
'B0:KL',
'B+:KL',
121 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
122 'B0:semileptonic',
'B+:semileptonic'])
123 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
124 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
125 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
126 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4] and isInRestOfEvent > 0.5')
127 self.assertEqual(particles[4].preCutConfig.userCut,
'goodBelleGamma == 1 and clusterBelleQuality == 0 '
128 'and isInRestOfEvent > 0.5')
129 self.assertEqual(particles[5].preCutConfig.userCut,
'0.08 < InvM < 0.18 and isInRestOfEvent > 0.5')
130 self.assertEqual(particles[6].preCutConfig.userCut,
'0.4 < M < 0.6 and isInRestOfEvent > 0.5')
131 self.assertEqual(particles[16].preCutConfig.userCut,
'isInRestOfEvent > 0.5')
134 def test_get_converted(self):
137 self.assertEqual([p.identifier
for p
in particles],
138 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
139 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
140 'D_s*+:generic',
'B0:generic',
'B+:generic',
141 'D0:semileptonic',
'D+:semileptonic',
'D*0:semileptonic',
'D*+:semileptonic',
142 'B0:semileptonic',
'B+:semileptonic'])
144 chargedVariables = [
'eIDBelle',
146 'atcPIDBelle(4,2)',
'atcPIDBelle(4,3)',
148 'p',
'pt',
'pz',
'dr',
'dz',
'chiProb',
'extraInfo(preCut_rank)']
149 self.assertEqual(particles[0].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
150 self.assertEqual(particles[0].mvaConfig.variables, chargedVariables)
151 self.assertEqual(particles[0].preCutConfig.bestCandidateVariable,
'atcPIDBelle(2,3)')
152 self.assertEqual(particles[1].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
153 self.assertEqual(particles[1].mvaConfig.variables, chargedVariables)
154 self.assertEqual(particles[1].preCutConfig.bestCandidateVariable,
'atcPIDBelle(3,2)')
155 self.assertEqual(particles[2].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
156 self.assertEqual(particles[2].mvaConfig.variables, chargedVariables)
157 self.assertEqual(particles[2].preCutConfig.bestCandidateVariable,
'muIDBelle')
158 self.assertEqual(particles[3].preCutConfig.userCut,
'[dr < 2] and [abs(dz) < 4]')
159 self.assertEqual(particles[3].mvaConfig.variables, chargedVariables)
160 self.assertEqual(particles[3].preCutConfig.bestCandidateVariable,
'eIDBelle')
161 self.assertEqual(particles[4].preCutConfig.userCut,
'goodBelleGamma == 1 and clusterBelleQuality == 0')
162 self.assertEqual(particles[6].mvaConfig.variables, [
'dr',
'dz',
'distance',
'significanceOfDistance',
'chiProb',
164 'useCMSFrame(E)',
'daughterAngle(0,1)',
165 'cosAngleBetweenMomentumAndVertexVector',
166 'extraInfo(preCut_rank)',
'extraInfo(goodKs)',
'extraInfo(ksnbVLike)',
167 'extraInfo(ksnbNoLam)',
'extraInfo(ksnbStandard)'])
171 class TestGetFRChannels(unittest.TestCase):
172 def test_get_default(self):
174 self.assertEqual([p.identifier
for p
in particles],
175 [
'pi+:generic',
'K+:generic',
'mu+:generic',
'e+:generic',
'gamma:generic',
'pi0:generic',
'K_S0:generic',
176 'J/psi:generic',
'D0:generic',
'D+:generic',
'D_s+:generic',
'D*0:generic',
'D*+:generic',
177 'D_s*+:generic',
'B0:generic',
'B+:generic'])
178 self.assertEqual(len(particles[0].channels), 1)
179 self.assertEqual(len(particles[1].channels), 1)
180 self.assertEqual(len(particles[2].channels), 1)
181 self.assertEqual(len(particles[3].channels), 1)
182 self.assertEqual(len(particles[4].channels), 2)
183 self.assertEqual(len(particles[5].channels), 1)
184 self.assertEqual(len(particles[6].channels), 3)
185 self.assertEqual(len(particles[7].channels), 2)
186 self.assertEqual(len(particles[8].channels), 10)
187 self.assertEqual(len(particles[9].channels), 7)
188 self.assertEqual(len(particles[10].channels), 8)
189 self.assertEqual(len(particles[11].channels), 2)
190 self.assertEqual(len(particles[12].channels), 2)
191 self.assertEqual(len(particles[13].channels), 1)
192 self.assertEqual(len(particles[14].channels), 15)
193 self.assertEqual(len(particles[15].channels), 17)
196 if __name__ ==
'__main__':
197 tempdir = tempfile.mkdtemp()
200 atexit.register(shutil.rmtree, tempdir)
def get_fr_channels(convertedFromBelle=False)
def get_default_channels(B_extra_cut=None, hadronic=True, semileptonic=True, KLong=False, baryonic=True, chargedB=True, neutralB=True, specific=False, removeSLD=False, strangeB=False)