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