Belle II Software development
EvtBGL2FF.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#include <boost/math/constants/constants.hpp>
15#include <cmath>
16#include <iostream>
17#include <vector>
18
19#include "generators/evtgen/models/EvtBGL2FF.h"
20
21// BGL (N=3) for scalar meson i.e. B->Dlv (l=e,mu,tau)
22EvtBGL2FF::EvtBGL2FF(double bglap_0, double bglap_1, double bglap_2, double bglap_3, double bgla0_0, double bgla0_1, double bgla0_2,
23 double bgla0_3)
24{
25
26 ap_0 = bglap_0;
27 ap_1 = bglap_1;
28 ap_2 = bglap_2;
29 ap_3 = bglap_3; // set to 0 for N = 2 expansion
30
31 a0_0 = bgla0_0;
32 a0_1 = bgla0_1;
33 a0_2 = bgla0_2;
34 a0_3 = bgla0_3; // set to 0 for N = 2 expansion
35
36 return;
37}
38
39// Use dispersion relation parametrization from
40// C.G.Boyd, B.Grinstein, R.F.Lebed, Phys. Rev. Lett. 74,4603 (1995)
41// and
42// Bigi, Dante and Gambino, Paolo, Phys. Rev. D. 94.094008 (2016)
43// a+0, a+1, a+2, a+3 : 0.01565, -0.0353, -0.043, 0.194
44// a00, a01, a02, a03 : 0.07932, -0.214, 0.17, -0.958
45
46// NOTE : This is an alternative BGL model. Use it if you understand the difference with the
47// default one called 'EvtBGLFF' in basf2.
48
49void EvtBGL2FF::getscalarff(EvtId parent, EvtId,
50 double t, double mass, double* fp, double* f0)
51{
52
53 static constexpr double pi = boost::math::constants::pi<double>();
54 double mb = EvtPDL::getMeanMass(parent);
55 double r = mass / mb; // mass = mass of the D meson
56 double w = ((mb * mb) + (mass * mass) - t) / (2.0 * mb * mass);
57 const double z = (sqrt(w + 1) - sqrt(2.)) / (sqrt(w + 1) + sqrt(2.));
58 const double chiT = 5.131e-4;
59 const double chiL = 6.332e-3;
60 const double tp = (mass + mb) * (mass + mb);
61 const double tm = (mass - mb) * (mass - mb);
62 const double sqrttpt0 = sqrt(tp - tm); // t0 = tm (see Bigi, Gambino paper)
63 std::vector<double> BcStatesp = {6.329, 6.920, 7.020}; //GeV
64 std::vector<double> BcStates0 = {6.716, 7.121}; //GeV
65
66 double Pp = 1.;
67 for (size_t n = 0; n < BcStatesp.size(); ++n) {
68 double sqrttpmp = sqrt(tp - pow(BcStatesp[n], 2));
69 double zPp = (sqrttpmp - sqrttpt0) / (sqrttpmp + sqrttpt0);
70 Pp *= (z - zPp) / (1 - z * zPp);
71 }
72
73 double P0 = 1.;
74 for (size_t n = 0; n < BcStates0.size(); ++n) {
75 double sqrttpmp = sqrt(tp - pow(BcStates0[n], 2));
76 double zP0 = (sqrttpmp - sqrttpt0) / (sqrttpmp + sqrttpt0);
77 P0 *= (z - zP0) / (1 - z * zP0);
78 }
79
80 double ni = 2.6;
81 double kp = (8 * pow(r, 2) / mb) * sqrt(8 * ni / (3 * pi * chiT));
82 double k0 = r * (1 - pow(r, 2)) * sqrt(8 * ni / (pi * chiL));
83
84 double phi_sub = (1 + r) * (1 - z) + 2.0 * sqrt(r) * (1 + z);
85
86 double phi_p = kp * pow(1 + z, 2.) * sqrt(1 - z) * pow(phi_sub, -5);
87
88 double phi_0 = k0 * (1 - z * z) * sqrt(1 - z) * pow(phi_sub, -4);
89
90
91 *fp = (ap_0 + ap_1 * z + ap_2 * z * z + ap_3 * z * z * z) / (Pp * phi_p);
92
93 *f0 = (a0_0 + a0_1 * z + a0_2 * z * z + a0_3 * z * z * z) / (P0 * phi_0);
94
95 return;
96}
97
98// NOTE : This class should not be used for vector mesons (D*). Use the EvtBGL class instead.
99
100void EvtBGL2FF::getvectorff(EvtId, EvtId, double, double, double*, double*, double*, double*)
101
102{
103
104 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getvectorff in EvtBGL2FF. Use EvtBGLFF instead.\n";
105 ::abort();
106
107}
108
109void EvtBGL2FF::gettensorff(EvtId, EvtId, double, double, double*,
110 double*, double*, double*)
111{
112
113 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :gettensorff in EvtBGL2FF.\n";
114 ::abort();
115
116}
117
118
119
120void EvtBGL2FF::getbaryonff(EvtId, EvtId, double, double, double*,
121 double*, double*, double*)
122{
123
124 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getbaryonff in EvtBGL2FF.\n";
125 ::abort();
126
127}
128
129void EvtBGL2FF::getdiracff(EvtId, EvtId, double, double, double*, double*,
130 double*, double*, double*, double*)
131{
132
133 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getdiracff in EvtBGL2FF.\n";
134 ::abort();
135
136}
137
138void EvtBGL2FF::getraritaff(EvtId, EvtId, double, double, double*, double*,
139 double*, double*, double*, double*, double*, double*)
140{
141
142 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getraritaff in EvtBGL2FF.\n";
143 ::abort();
144
145}
double a0_2
2nd-order z expansion coefficient for scalar form factor f_0
Definition: EvtBGL2FF.h:100
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: EvtBGL2FF.h:80
double a0_3
3rd-order z expansion coefficient for scalar form factor f_0
Definition: EvtBGL2FF.h:103
double ap_2
2nd-order z expansion coefficient for vector form factor: f_+
Definition: EvtBGL2FF.h:86
EvtBGL2FF(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: EvtBGL2FF.cc:22
double ap_1
1st-order z expansion coefficient for vector form factor: f_+
Definition: EvtBGL2FF.h:83
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
Returns dirac form factors.
Definition: EvtBGL2FF.cc:129
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns tensor form factors.
Definition: EvtBGL2FF.cc:109
double a0_1
1st-order z expansion coefficient for scalar form factor f_0
Definition: EvtBGL2FF.h:97
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
Returns tarita form factors.
Definition: EvtBGL2FF.cc:138
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fp, double *f0)
Returns scalar form factors.
Definition: EvtBGL2FF.cc:49
void getvectorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns vector form factors.
Definition: EvtBGL2FF.cc:100
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns baryon form factors.
Definition: EvtBGL2FF.cc:120
double a0_0
0th-order z expansion coefficient for scalar form factor f_0
Definition: EvtBGL2FF.h:94
double ap_3
3rd-order z expansion coefficient for vector form factor: f_+
Definition: EvtBGL2FF.h:89