EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtbTosllMSFF.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
22
24#include "EvtGenBase/EvtPDL.hh"
26
27#include <cmath>
28#include <cstdlib>
29
33
34double EvtbTosllMSFF::equation9_10( double ff0, double M2, double q2,
35 double sigma1, double sigma2, int eq_num )
36{
37 double ff = 1.0;
38
39 switch ( eq_num ) {
40 case 9:
41 ff = 1. / ( 1. - q2 / M2 );
42 [[fallthrough]];
43 case 10:
44 ff = ff * ff0 /
45 ( 1. - sigma1 * q2 / M2 + sigma2 * pow( q2, 2 ) / pow( M2, 2 ) );
46 break;
47 default:
48 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
49 << "In the function EvtbTosllMSFF::equation9_10 \n"
50 << "the parameter eq_num non equal to the 9 or 10! \n"
51 << "eq_num =" << eq_num << std::endl;
52 ::abort();
53 }
54
55 return ff;
56}
57
58void EvtbTosllMSFF::getScalarFF( EvtId parent, EvtId daught, double t,
59 double& fp, double& f0, double& ft )
60{
61 int models_counter = 0; // counter of the accepted models
62
63 // B -> K transition form factors
64 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
65 daught == EvtPDL::getId( std::string( "K+" ) ) ) ||
66 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
67 daught == EvtPDL::getId( std::string( "K-" ) ) ) ||
68 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
69 daught == EvtPDL::getId( std::string( "K0" ) ) ) ||
70 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
71 daught == EvtPDL::getId( std::string( "anti-K0" ) ) ) ||
72 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
73 daught == EvtPDL::getId( std::string( "K_S0" ) ) ) ||
74 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
75 daught == EvtPDL::getId( std::string( "K_S0" ) ) ) ||
76 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
77 daught == EvtPDL::getId( std::string( "K_L0" ) ) ) ||
78 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
79 daught == EvtPDL::getId( std::string( "K_L0" ) ) ) ) {
80 double ff0[] = { 0.36, 0.36, 0.35 };
81 double sigma1[] = { 0.43, 0.70, 0.43 };
82 double sigma2[] = { 0.00, 0.27, 0.00 };
83 int eq_num[] = { 9, 10, 9 };
84 double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
85 double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
86
87 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
88 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
89 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
90
91 models_counter = models_counter + 1;
92
93 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
94 // << "\n B -> K transition form factors"
95 // << std::endl;
96 }
97
98 // B -> \pi transition form factors
99 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
100 daught == EvtPDL::getId( std::string( "pi+" ) ) ) ||
101 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
102 daught == EvtPDL::getId( std::string( "pi-" ) ) ) ||
103 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
104 daught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
105 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
106 daught == EvtPDL::getId( std::string( "pi0" ) ) ) ) {
107 double ff0[] = { 0.29, 0.29, 0.28 };
108 double sigma1[] = { 0.48, 0.76, 0.48 };
109 double sigma2[] = { 0.00, 0.28, 0.00 };
110 int eq_num[] = { 9, 10, 9 };
111 double M_P2 = 5.27 * 5.27; // GeV^2 for B^0 - meson
112 double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
113
114 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
115 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
116 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
117
118 models_counter = models_counter + 1;
119
120 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
121 // << "\n B -> pi transition form factors"
122 // << std::endl;
123 }
124
125 // B_d -> \eta transition form factors
126 if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
127 daught == EvtPDL::getId( std::string( "eta" ) ) ) ||
128 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
129 daught == EvtPDL::getId( std::string( "eta" ) ) ) ) {
130 double ff0[] = { 0.36, 0.36, 0.36 };
131 double sigma1[] = { 0.60, 0.80, 0.58 };
132 double sigma2[] = { 0.20, 0.40, 0.18 };
133 int eq_num[] = { 9, 10, 9 };
134 double M_P2 = 5.27 * 5.27; // GeV^2 for B_d^0 - meson
135 double M_V2 = 5.32 * 5.32; // GeV^2 for B_d^* - meson
136
137 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
138 fp = -0.5 * fp;
139 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
140 f0 = -0.5 * f0;
141 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
142 ft = -0.5 * ft;
143
144 models_counter = models_counter + 1;
145
146 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
147 // << "\n Bd -> eta transition form factors"
148 // << std::endl;
149 }
150
151 // B_d -> \eta' transition form factors
152 if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
153 daught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
154 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
155 daught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
156 double ff0[] = { 0.36, 0.36, 0.39 };
157 double sigma1[] = { 0.60, 0.80, 0.58 };
158 double sigma2[] = { 0.20, 0.45, 0.18 };
159 int eq_num[] = { 9, 10, 9 };
160 double M_P2 = 5.27 * 5.27; // GeV^2 for B_d^0 - meson
161 double M_V2 = 5.32 * 5.32; // GeV^2 for B_d^* - meson
162
163 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
164 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
165 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
166
167 models_counter = models_counter + 1;
168
169 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
170 // << "\n Bd -> eta transition form factors"
171 // << std::endl;
172 }
173
174 // B_s -> \eta transition form factors
175 if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
176 daught == EvtPDL::getId( std::string( "eta" ) ) ) ||
177 ( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
178 daught == EvtPDL::getId( std::string( "eta" ) ) ) ) {
179 double ff0[] = { 0.36, 0.36, 0.36 };
180 double sigma1[] = { 0.60, 0.80, 0.58 };
181 double sigma2[] = { 0.20, 0.40, 0.18 };
182 int eq_num[] = { 9, 10, 9 };
183 double M_P2 = 5.37 * 5.37; // GeV^2 for B_s^0 - meson
184 double M_V2 = 5.42 * 5.42; // GeV^2 for B_s^* - meson
185
186 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
187 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
188 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
189
190 models_counter = models_counter + 1;
191
192 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
193 // << "\n Bs -> eta transition form factors"
194 // << std::endl;
195 }
196
197 // B_s -> \eta' transition form factors
198 if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
199 daught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
200 ( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
201 daught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
202 double ff0[] = { 0.36, 0.36, 0.39 };
203 double sigma1[] = { 0.60, 0.80, 0.58 };
204 double sigma2[] = { 0.20, 0.45, 0.18 };
205 int eq_num[] = { 9, 10, 9 };
206 double M_P2 = 5.37 * 5.37; // GeV^2 for B_s^0 - meson
207 double M_V2 = 5.42 * 5.42; // GeV^2 for B_s^* - meson
208
209 fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
210 f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
211 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
212
213 models_counter = models_counter + 1;
214
215 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
216 // << "\n Bs -> eta transition form factors"
217 // << std::endl;
218 }
219
220 // B_s -> f_0(980) transition form factors
221 if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
222 daught == EvtPDL::getId( std::string( "f_0" ) ) ) ||
223 ( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
224 daught == EvtPDL::getId( std::string( "f_0" ) ) ) ) {
225 double ff0[] = { 0.238, 0.238, 0.308 };
226 double sigma1[] = { 1.50, 0.53, 1.46 };
227 double sigma2[] = { 0.58, -0.36, 0.58 };
228 int eq_num[] = { 10, 10, 10 };
229 double M_P2 = 5.366 * 5.366; // GeV^2 for B_s^0 - meson
230
231 fp = 0.0 -
232 equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
233 f0 = 0.0 -
234 equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
235 ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
236
237 models_counter = models_counter + 1;
238
239 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
240 // << "\n Bs -> eta transition form factors"
241 // << std::endl;
242 }
243
244 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
245 // << "\n Scalar form-factors at q^2 = " << t
246 // << " for B -> P transition:"
247 // << "\n fp = " << fp
248 // << "\n f0 = " << f0
249 // << "\n ft = " << ft << std::endl;
250
251 if ( models_counter != 1 ) {
252 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
253 << "\n In the function EvtbTosllMSFF::getScalarFF(...) \n"
254 << "the parameter models_counter not equal 1! \n"
255 << "models_counter = " << models_counter << std::endl;
256 ::abort();
257 }
258}
259
260void EvtbTosllMSFF::getVectorFF( EvtId parent, EvtId daught, double t,
261 double& a1, double& a2, double& a0, double& v,
262 double& t1, double& t2, double& t3 )
263{
264 int models_counter = 0; // counter of the accepted models
265 double thetaK = -34.0 * 3.14159 / 180; // K_1(1270) - K_1(1400) mixing angle
266
267 // \bar B -> \bar K* transition form factors
268 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
269 daught == EvtPDL::getId( std::string( "K*+" ) ) ) ||
270 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
271 daught == EvtPDL::getId( std::string( "K*-" ) ) ) ||
272 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
273 daught == EvtPDL::getId( std::string( "K*0" ) ) ) ||
274 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
275 daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ) {
276 double ff0[] = { 0.44, 0.45, 0.36, 0.32, 0.39, 0.39, 0.27 };
277 double sigma1[] = { 0.45, 0.46, 0.64, 1.23, 0.45, 0.72, 1.31 };
278 double sigma2[] = { 0.00, 0.00, 0.36, 0.38, 0.00, 0.62, 0.41 };
279 int eq_num[] = { 9, 9, 10, 10, 9, 10, 10 };
280 double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
281 double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
282
283 v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
284 a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
285 a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
286 a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
287
288 t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
289 t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
290 t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
291
292 models_counter = models_counter + 1;
293
294 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
295 // << "\n barB -> barK* transition form factors"
296 // << std::endl;
297 }
298
299 // \bar B -> \bar\rho transition form factors
300 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
301 daught == EvtPDL::getId( std::string( "rho+" ) ) ) ||
302 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
303 daught == EvtPDL::getId( std::string( "rho-" ) ) ) ||
304 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
305 daught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
306 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
307 daught == EvtPDL::getId( std::string( "rho0" ) ) ) ) {
308 double ff0[] = { 0.31, 0.30, 0.26, 0.24, 0.27, 0.27, 0.19 };
309 double sigma1[] = { 0.59, 0.54, 0.73, 1.40, 0.60, 0.74, 1.42 };
310 double sigma2[] = { 0.00, 0.00, 0.10, 0.50, 0.00, 0.19, 0.51 };
311 int eq_num[] = { 9, 9, 10, 10, 9, 10, 10 };
312 double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
313 double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
314
315 v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
316 a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
317 a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
318 a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
319
320 t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
321 t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
322 t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
323
324 models_counter = models_counter + 1;
325
326 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
327 // << "\n barB -> bar rho transition form factors"
328 // << std::endl;
329 }
330
331 // \bar B -> \omega transition form factors (exactly as for \bar B -> \rho^0 ff!)
332 if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
333 daught == EvtPDL::getId( std::string( "omega" ) ) ) ||
334 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
335 daught == EvtPDL::getId( std::string( "omega" ) ) ) ) {
336 double ff0[] = { 0.31, 0.30, 0.26, 0.24, 0.27, 0.27, 0.19 };
337 double sigma1[] = { 0.59, 0.54, 0.73, 1.40, 0.60, 0.74, 1.42 };
338 double sigma2[] = { 0.00, 0.00, 0.10, 0.50, 0.00, 0.19, 0.51 };
339 int eq_num[] = { 9, 9, 10, 10, 9, 10, 10 };
340 double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
341 double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
342
343 v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
344 a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
345 a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
346 a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
347
348 t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
349 t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
350 t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
351
352 models_counter = models_counter + 1;
353
354 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
355 // << "\n barB -> omega transition form factors"
356 // << std::endl;
357 }
358
359 // \bar Bs -> phi transition form factors
360 if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
361 daught == EvtPDL::getId( std::string( "phi" ) ) ) ||
362 ( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
363 daught == EvtPDL::getId( std::string( "phi" ) ) ) ) {
364 double ff0[] = { 0.44, 0.42, 0.34, 0.31, 0.38, 0.38, 0.26 };
365 double sigma1[] = { 0.62, 0.55, 0.73, 1.30, 0.62, 0.83, 1.41 };
366 double sigma2[] = { 0.20, 0.12, 0.42, 0.52, 0.20, 0.71, 0.57 };
367 int eq_num[] = { 9, 9, 10, 10, 9, 10, 10 };
368 double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
369 double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
370
371 v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
372 a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
373 a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
374 a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
375
376 t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
377 t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
378 t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
379
380 models_counter = models_counter + 1;
381
382 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
383 // << "\n barBs -> phi transition form factors"
384 // << std::endl;
385 }
386
387 // \bar Bs -> K* (without \bar !) transition form factors
388 if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
389 daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
390 ( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
391 daught == EvtPDL::getId( std::string( "K*0" ) ) ) ) {
392 double ff0[] = { 0.38, 0.37, 0.29, 0.26, 0.32, 0.32, 0.23 };
393 double sigma1[] = { 0.66, 0.60, 0.86, 1.32, 0.66, 0.98, 1.42 };
394 double sigma2[] = { 0.30, 0.16, 0.60, 0.54, 0.31, 0.90, 0.62 };
395 int eq_num[] = { 9, 9, 10, 10, 9, 10, 10 };
396 double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
397 double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
398
399 v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
400 a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
401 a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
402 a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
403
404 t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
405 t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
406 t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
407
408 models_counter = models_counter + 1;
409
410 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
411 // << "\n barBs -> K* transition form factors"
412 // << std::endl;
413 }
414
415 // \bar B -> \bar K_1(1270) transition form factors
416 // See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
417 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
418 daught == EvtPDL::getId( std::string( "K_1+" ) ) ) ||
419 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
420 daught == EvtPDL::getId( std::string( "K_1-" ) ) ) ||
421 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
422 daught == EvtPDL::getId( std::string( "K_10" ) ) ) ||
423 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
424 daught == EvtPDL::getId( std::string( "anti-K_10" ) ) ) ) {
425 double ff0A[] = { 0.450, 0.340, 0.41, 0.22, 0.31, 0.310, 0.28 };
426 double sigma1A[] = { 1.600, 0.635, 1.51, 2.40, 2.01, 0.629, 1.36 };
427 double sigma2A[] = { 0.974, 0.211, 1.18, 1.78, 1.50, 0.387, 0.72 };
428 double ff0B[] = { -0.37, -0.29, -0.17, -0.45, -0.25, -0.250, -0.11 };
429 double sigma1B[] = { 1.72, 0.729, 0.919, 1.34, 1.59, 0.378, -1.61 };
430 double sigma2B[] = { 0.912, 0.074, 0.855, 0.69, 0.79, -0.755, 10.2 };
431 int eq_num[] = { 10, 10, 10, 10, 10, 10, 10 };
432
433 double MM2 = 5.279 * 5.279; // GeV^2
434 double MB = 5.279; // GeV
435 double MK1 = 1.272; // GeV
436 double MK1A = 1.31; // GeV
437 double MK1B = 1.34; // GeV
438
439 double sinK = sin( thetaK ); // sin(-34^o)
440 double cosK = cos( thetaK ); // cos(-34^o)
441
442 double a, v0, v1, v2;
443
444 a = sinK *
445 equation9_10( ff0A[0], MM2, t, sigma1A[0], sigma2A[0], eq_num[0] ) *
446 ( MB + MK1 ) / ( MB + MK1A );
447 a = a + cosK *
448 equation9_10( ff0B[0], MM2, t, sigma1B[0], sigma2B[0],
449 eq_num[0] ) *
450 ( MB + MK1 ) / ( MB + MK1B );
451
452 v0 = sinK *
453 equation9_10( ff0A[1], MM2, t, sigma1A[1], sigma2A[1], eq_num[1] ) *
454 MK1A / MK1;
455 v0 = v0 + cosK *
456 equation9_10( ff0B[1], MM2, t, sigma1B[1], sigma2B[1],
457 eq_num[1] ) *
458 MK1B / MK1;
459
460 v1 = sinK *
461 equation9_10( ff0A[2], MM2, t, sigma1A[2], sigma2A[2], eq_num[2] ) *
462 ( MB + MK1A ) / ( MB + MK1 );
463 v1 = v1 + cosK *
464 equation9_10( ff0B[2], MM2, t, sigma1B[2], sigma2B[2],
465 eq_num[2] ) *
466 ( MB + MK1B ) / ( MB + MK1 );
467
468 v2 = sinK *
469 equation9_10( ff0A[3], MM2, t, sigma1A[3], sigma2A[3], eq_num[3] ) *
470 ( MB + MK1 ) / ( MB + MK1A );
471 v2 = v2 + cosK *
472 equation9_10( ff0B[3], MM2, t, sigma1B[3], sigma2B[3],
473 eq_num[3] ) *
474 ( MB + MK1 ) / ( MB + MK1B );
475
476 v = a;
477 a0 = v0;
478 a1 = v1;
479 a2 = v2;
480
481 t1 = sinK *
482 equation9_10( ff0A[4], MM2, t, sigma1A[4], sigma2A[4], eq_num[4] );
483 t1 = t1 + cosK * equation9_10( ff0B[4], MM2, t, sigma1B[4], sigma2B[4],
484 eq_num[4] );
485
486 t2 = sinK *
487 equation9_10( ff0A[5], MM2, t, sigma1A[5], sigma2A[5], eq_num[5] ) *
488 ( MB * MB - MK1A * MK1A ) / ( MB * MB - MK1 * MK1 );
489 t2 = t2 + cosK *
490 equation9_10( ff0B[5], MM2, t, sigma1B[5], sigma2B[5],
491 eq_num[5] ) *
492 ( MB * MB - MK1B * MK1B ) / ( MB * MB - MK1 * MK1 );
493
494 t3 = sinK *
495 equation9_10( ff0A[6], MM2, t, sigma1A[6], sigma2A[6], eq_num[6] );
496 t3 = t3 + cosK * equation9_10( ff0B[6], MM2, t, sigma1B[6], sigma2B[6],
497 eq_num[6] );
498
499 models_counter = models_counter + 1;
500
501 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
502 // << "\n barB -> bar K_1(1270) transition form factors"
503 // << std::endl;
504 }
505
506 // \bar B -> \bar K_1(1400) transition form factors
507 // See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
508 if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
509 daught == EvtPDL::getId( std::string( "K'_1+" ) ) ) ||
510 ( parent == EvtPDL::getId( std::string( "B-" ) ) &&
511 daught == EvtPDL::getId( std::string( "K'_1-" ) ) ) ||
512 ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
513 daught == EvtPDL::getId( std::string( "K'_10" ) ) ) ||
514 ( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
515 daught == EvtPDL::getId( std::string( "anti-K'_10" ) ) ) ) {
516 double ff0A[] = { 0.450, 0.340, 0.41, 0.22, 0.31, 0.310, 0.28 };
517 double sigma1A[] = { 1.600, 0.635, 1.51, 2.40, 2.01, 0.629, 1.36 };
518 double sigma2A[] = { 0.974, 0.211, 1.18, 1.78, 1.50, 0.387, 0.72 };
519 double ff0B[] = { -0.37, -0.29, -0.17, -0.45, -0.25, -0.250, -0.11 };
520 double sigma1B[] = { 1.72, 0.729, 0.919, 1.34, 1.59, 0.378, -1.61 };
521 double sigma2B[] = { 0.912, 0.074, 0.855, 0.69, 0.79, -0.755, 10.2 };
522 int eq_num[] = { 10, 10, 10, 10, 10, 10, 10 };
523
524 double MM2 = 5.279 * 5.279; // GeV^2
525 double MB = 5.279; // GeV
526 double MK1 = 1.403; // GeV
527 double MK1A = 1.31; // GeV
528 double MK1B = 1.34; // GeV
529
530 double sinK = sin( thetaK ); // sin(-34^o)
531 double cosK = cos( thetaK ); // cos(-34^o)
532
533 double a, v0, v1, v2;
534
535 a = cosK *
536 equation9_10( ff0A[0], MM2, t, sigma1A[0], sigma2A[0], eq_num[0] ) *
537 ( MB + MK1 ) / ( MB + MK1A );
538 a = a - sinK *
539 equation9_10( ff0B[0], MM2, t, sigma1B[0], sigma2B[0],
540 eq_num[0] ) *
541 ( MB + MK1 ) / ( MB + MK1B );
542
543 v0 = cosK *
544 equation9_10( ff0A[1], MM2, t, sigma1A[1], sigma2A[1], eq_num[1] ) *
545 MK1A / MK1;
546 v0 = v0 - sinK *
547 equation9_10( ff0B[1], MM2, t, sigma1B[1], sigma2B[1],
548 eq_num[1] ) *
549 MK1B / MK1;
550
551 v1 = cosK *
552 equation9_10( ff0A[2], MM2, t, sigma1A[2], sigma2A[2], eq_num[2] ) *
553 ( MB + MK1A ) / ( MB + MK1 );
554 v1 = v1 - sinK *
555 equation9_10( ff0B[2], MM2, t, sigma1B[2], sigma2B[2],
556 eq_num[2] ) *
557 ( MB + MK1B ) / ( MB + MK1 );
558
559 v2 = cosK *
560 equation9_10( ff0A[3], MM2, t, sigma1A[3], sigma2A[3], eq_num[3] ) *
561 ( MB + MK1 ) / ( MB + MK1A );
562 v2 = v2 - sinK *
563 equation9_10( ff0B[3], MM2, t, sigma1B[3], sigma2B[3],
564 eq_num[3] ) *
565 ( MB + MK1 ) / ( MB + MK1B );
566
567 v = a;
568 a0 = v0;
569 a1 = v1;
570 a2 = v2;
571
572 t1 = cosK *
573 equation9_10( ff0A[4], MM2, t, sigma1A[4], sigma2A[4], eq_num[4] );
574 t1 = t1 - sinK * equation9_10( ff0B[4], MM2, t, sigma1B[4], sigma2B[4],
575 eq_num[4] );
576
577 t2 = cosK *
578 equation9_10( ff0A[5], MM2, t, sigma1A[5], sigma2A[5], eq_num[5] ) *
579 ( MB * MB - MK1A * MK1A ) / ( MB * MB - MK1 * MK1 );
580 t2 = t2 - sinK *
581 equation9_10( ff0B[5], MM2, t, sigma1B[5], sigma2B[5],
582 eq_num[5] ) *
583 ( MB * MB - MK1B * MK1B ) / ( MB * MB - MK1 * MK1 );
584
585 t3 = cosK *
586 equation9_10( ff0A[6], MM2, t, sigma1A[6], sigma2A[6], eq_num[6] );
587 t3 = t3 - sinK * equation9_10( ff0B[6], MM2, t, sigma1B[6], sigma2B[6],
588 eq_num[6] );
589
590 models_counter = models_counter + 1;
591
592 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
593 // << "\n barB -> bar K_1(1270) transition form factors"
594 // << std::endl;
595 }
596
597 // EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
598 // << "\n Vector form-factors at q^2 = " << t
599 // << " for B -> V transition:"
600 // << "\n v = " << v
601 // << "\n a0 = " << a0
602 // << "\n a1 = " << a1
603 // << "\n a2 = " << a2
604 // << "\n t1 = " << t1
605 // << "\n t2 = " << t2
606 // << "\n t3 = " << t3 << std::endl;
607
608 if ( models_counter != 1 ) {
609 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
610 << "\n In the function EvtbTosllMSFF::getVectorFF(...) \n"
611 << "the parameter models_counter not equal 1! \n"
612 << "models_counter = " << models_counter << std::endl;
613 ::abort();
614 }
615}
616
617// Getting the quark mass (in GeV) using to the dispersion quark model
618// of D.Melikhov, B.Stech, PRD62, 014006 (2000).
619//
620// i=1 => return m_u;
621// i=2 => return m_d;
622// i=3 => return m_s;
623// i=4 => return m_c;
624// i=5 => return m_b;
626{
627 double qm = 0.0;
628
629 switch ( i ) {
630 case 1:
631 qm = 0.23; // m_u
632 break;
633 case 2:
634 qm = 0.23; // m_d = m_u
635 break;
636 case 3:
637 qm = 0.35; // m_s
638 break;
639 case 4:
640 qm = 1.45; // m_c
641 break;
642 case 5:
643 qm = 4.85; // m_b
644 break;
645 default:
646 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
647 << "In the function EvtbTosllMSFF::getQuarkMass \n"
648 << "the parameter i not equal 1, 2, 3, 4 or 5! \n"
649 << "i =" << i << std::endl;
650 ::abort();
651 }
652
653 return qm;
654}
const double a2
const double a1
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283
void getScalarFF(EvtId parent, EvtId daught, double t, double &fp, double &f0, double &ft) override
void getVectorFF(EvtId parent, EvtId daught, double t, double &a1, double &a2, double &a0, double &v, double &t1, double &t2, double &t3) override
double getQuarkMass(int i) override
double equation9_10(double ff0, double M2, double q2, double sigma1, double sigma2, int eq_num)