Belle II Software development
EvtBGLFF.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include "EvtGenBase/EvtReport.hh"
10#include "EvtGenBase/EvtId.hh"
11#include "EvtGenBase/EvtPDL.hh"
12#include <math.h>
13#include <stdlib.h>
14
15#include "generators/evtgen/models/EvtBGLFF.h"
16
17// BGL (N=3) for scalar meson i.e. B->Dlv (l=e,mu,tau)
18EvtBGLFF::EvtBGLFF(double bglap_0, double bglap_1, double bglap_2, double bglap_3, double bgla0_0, double bgla0_1, double bgla0_2,
19 double bgla0_3)
20{
21
22 ap_0 = bglap_0;
23 ap_1 = bglap_1;
24 ap_2 = bglap_2;
25 ap_3 = bglap_3;
26
27 a0_0 = bgla0_0;
28 a0_1 = bgla0_1;
29 a0_2 = bgla0_2;
30 a0_3 = bgla0_3;
31
32 return;
33}
34
35
36// BGL for vector meson i.e. B->D*lv (l=e,mu), and should not be used to taus.
37EvtBGLFF::EvtBGLFF(double bgla_0, double bgla_1, double bglb_0, double bglb_1, double bglc_1, double bglc_2)
38{
39
40 a_0 = bgla_0;
41 a_1 = bgla_1;
42
43 b_0 = bglb_0;
44 b_1 = bglb_1;
45
46 c_1 = bglc_1;
47 c_2 = bglc_2;
48
49 return;
50}
51
52
53// Use dispersion relation parametrization from
54// C.G.Boyd, B.Grinstein, R.F.Lebed, Phys. Rev. Lett. 74,4603(1995)
55// and
56// R.Glattauer, etc. (Belle) Phys. Rev. D 93,032006 (2016).
57// a+0, a+1, a+2, a+3 : 0.0126, -0.094, 0.34, -0.1
58// a00, a01, a02, a03 : 0.0115, -0.057, 0.12, 0.4
59
60// Form factors defined following Equ. (4) and (8) in the later paper
61// and following the EvtGen convention as in Equ. (54) in the
62// EvtGen guide (BAD 522 V6 EvtGen V00-11-06).
63
64// NOTE : This is the default BGL model in Belle II.
65
66void EvtBGLFF::getscalarff(EvtId parent, EvtId,
67 double t, double mass, double* fp, double* f0)
68{
69
70 double mb = EvtPDL::getMeanMass(parent);
71 double r = mass / mb;
72 double w = ((mb * mb) + (mass * mass) - t) / (2.0 * mb * mass);
73 const double z = (sqrt(w + 1) - sqrt(2.)) / (sqrt(w + 1) + sqrt(2.));
74 const double p_i = 1.0;
75
76 double phi_sub = (1 + r) * (1 - z) + 2.0 * sqrt(r) * (1 + z);
77
78 double phi_p = 1.1213 * pow(1 + z, 2.) * sqrt(1 - z) * pow(phi_sub, -5);
79
80 double phi_0 = 0.5299 * (1 + z) * pow(1 - z, 1.5) * pow(phi_sub, -4);
81
82
83 *fp = (ap_0 + ap_1 * z + ap_2 * z * z + ap_3 * z * z * z) / (p_i * phi_p);
84
85 *f0 = (a0_0 + a0_1 * z + a0_2 * z * z + a0_3 * z * z * z) / (p_i * phi_0);
86
87 return;
88}
89
90// Use z expansion parametrization from
91// C.G.Boyd, B.Grinstein and R.F.Lebed, Phys. Rev. D 56,6895(1997)
92// and
93// B.Grinstein, A.Kobach, Phys. Lett. B 771(2017)359-364
94
95void EvtBGLFF::getvectorff(EvtId parent, EvtId, double t, double mass, double* a1f,
96 double* a2f, double* vf, double* a0f)
97
98{
99
100 double mb = EvtPDL::getMeanMass(parent);
101 double w = ((mb * mb) + (mass * mass) - t) / (2. * mb * mass);
102
103 // Form factors have a general form, with parameters passed in
104 // from the arguements.
105
106 const double r = mass / mb;
107 double z = (sqrt(w + 1.) - sqrt(2.)) / (sqrt(w + 1) + sqrt(2.));
108 const double rstar = (2. * sqrt(mb * mass)) / (mb + mass);
109 const double chiT_plus33 = 5.28e-4;
110 const double chiT_minus33 = 3.07e-4;
111 const double n_i = 2.6;
112 const double axialvector_poles[4] = {6.730, 6.736, 7.135, 7.142};
113 const double vector_poles[4] = {6.337, 6.899, 7.012, 7.280};
114
115 const double c_0 = (mb - mass) / mb * sqrt(0.5) / (1 + r + 2. * sqrt(r)) * b_0;
116
117 double phi_g = sqrt(256. * n_i / (3. * M_PI * chiT_plus33)) * r * r * (1. + z) * (1. + z) / sqrt(1. - z) / pow((1. + r) *
118 (1. - z) + 2. * sqrt(r) * (1. + z), 4.);
119 double phi_f = 1. / (mb * mb) * sqrt(16. * n_i / (3. * M_PI * chiT_minus33)) * r * (1. + z) * pow(1. - z,
120 1.5) / pow((1. + r) * (1. - z) + 2. * sqrt(r) * (1. + z), 4.);
121 double phi_F1 = 1. / (mb * mb * mb) * sqrt(8. * n_i / (3. * M_PI * chiT_minus33)) * r * (1. + z) * pow(1. - z,
122 2.5) / pow((1. + r) * (1. - z) + 2 * sqrt(r) * (1. + z), 5.);
123
124 double p_g = 1.;
125 double p_f = 1.;
126 const double term3 = sqrt((mb + mass) * (mb + mass) - (mb - mass) * (mb - mass));
127 for (int i = 0; i < 4; i++) {
128 double term1 = sqrt((mb + mass) * (mb + mass) - vector_poles[i] * vector_poles[i]);
129 double term2 = sqrt((mb + mass) * (mb + mass) - axialvector_poles[i] * axialvector_poles[i]);
130 double z_p1 = (term1 - term3) / (term1 + term3);
131 p_g = p_g * (z - z_p1) / (1 - z * z_p1);
132 double z_p2 = (term2 - term3) / (term2 + term3);
133 p_f = p_f * (z - z_p2) / (1 - z * z_p2);
134 }
135
136 double g = 1. / p_g / phi_g * (a_0 + a_1 * z);
137 double f = 1. / p_f / phi_f * (b_0 + b_1 * z);
138 double F1 = 1. / p_f / phi_F1 * (c_0 + c_1 * z + c_2 * z * z);
139
140 double ha1 = f / sqrt(mb * mass) / (1. + w);
141 double r1 = (w + 1.) * mb * mass * g / f;
142 double r2 = (w - r) / (w - 1) - F1 / mb / (w - 1) / f;
143
144 *a1f = (w + 1.) / 2. * rstar * ha1;
145 *a2f = (r2 / rstar) * ha1;
146 *vf = (r1 / rstar) * ha1;
147 *a0f = 0; // a0f is related to B->D* tau nu decay.
148 // The class should not be used for taus, due to the lack of fitted parameters in a0f amplitude.
149
150 return;
151}
152
153void EvtBGLFF::gettensorff(EvtId, EvtId, double, double, double*,
154 double*, double*, double*)
155{
156
157 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :gettensorff in EvtBGLFF.\n";
158 ::abort();
159
160}
161
162
163
164void EvtBGLFF::getbaryonff(EvtId, EvtId, double, double, double*,
165 double*, double*, double*)
166{
167
168 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getbaryonff in EvtBGLFF.\n";
169 ::abort();
170
171}
172
173void EvtBGLFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
174 double*, double*, double*, double*)
175{
176
177 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getdiracff in EvtBGLFF.\n";
178 ::abort();
179
180}
181
182void EvtBGLFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
183 double*, double*, double*, double*, double*, double*)
184{
185
186 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getraritaff in EvtBGLFF.\n";
187 ::abort();
188
189}
double a0_2
2nd-order z expansion coeffieient for scalar form factor f_0
Definition: EvtBGLFF.h:109
double ap_0
B -> Dlnu: ai_n (i = p —vector, 0 —scalar; n = 0,1,2,3) are free coefficients of z expansion in dispe...
Definition: EvtBGLFF.h:89
double a0_3
3rd-order z expansion coeffieient for scalar form factor f_0
Definition: EvtBGLFF.h:112
double ap_2
2nd-order z expansion coeffieient for vector form factor: f_+
Definition: EvtBGLFF.h:95
double c_1
1st-order z expansion coeffieient for form factor F1
Definition: EvtBGLFF.h:130
double ap_1
1st-order z expansion coeffieient for vector form factor: f_+
Definition: EvtBGLFF.h:92
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
Returns dirac ffs.
Definition: EvtBGLFF.cc:173
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns tensor ffs.
Definition: EvtBGLFF.cc:153
double b_0
0th-order z expansion coeffieient for form factor f
Definition: EvtBGLFF.h:124
double a0_1
1st-order z expansion coeffieient for scalar form factor f_0
Definition: EvtBGLFF.h:106
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
Returns tarita ffs.
Definition: EvtBGLFF.cc:182
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
Returns vector ffs.
Definition: EvtBGLFF.cc:95
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fp, double *f0)
Returns scalar ffs.
Definition: EvtBGLFF.cc:66
double b_1
1st-order z expansion coeffieient for form factor f
Definition: EvtBGLFF.h:127
double c_2
2nd-order z expansion coeffieient for form factor F1
Definition: EvtBGLFF.h:133
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns baryon ffs.
Definition: EvtBGLFF.cc:164
double a0_0
0th-order z expansion coeffieient for scalar form factor f_0
Definition: EvtBGLFF.h:103
double a_1
1st-order z expansion coeffieient for form factor g
Definition: EvtBGLFF.h:121
double a_0
B->D*lnu z expansion coeffieients
Definition: EvtBGLFF.h:118
EvtBGLFF(double bglap_0, double bglap_1, double bglap_2, double bglap_3, double bgla0_0, double bgla0_1, double bgla0_2, double bgla0_3)
Default constructor.
Definition: EvtBGLFF.cc:18
double ap_3
3rd-order z expansion coeffieient for vector form factor: f_+
Definition: EvtBGLFF.h:98