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