9#include "EvtGenBase/EvtReport.hh"
10#include "EvtGenBase/EvtId.hh"
11#include "EvtGenBase/EvtPDL.hh"
14#include <boost/math/constants/constants.hpp>
19#include "generators/evtgen/models/EvtBGL2FF.h"
22EvtBGL2FF::EvtBGL2FF(
double bglap_0,
double bglap_1,
double bglap_2,
double bglap_3,
double bgla0_0,
double bgla0_1,
double bgla0_2,
50 double t,
double mass,
double* fp,
double* f0)
53 static constexpr double pi = boost::math::constants::pi<double>();
54 double mb = EvtPDL::getMeanMass(parent);
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);
63 std::vector<double> BcStatesp = {6.329, 6.920, 7.020};
64 std::vector<double> BcStates0 = {6.716, 7.121};
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);
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);
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));
84 double phi_sub = (1 + r) * (1 - z) + 2.0 * sqrt(r) * (1 + z);
86 double phi_p = kp * pow(1 + z, 2.) * sqrt(1 - z) * pow(phi_sub, -5);
88 double phi_0 = k0 * (1 - z * z) * sqrt(1 - z) * pow(phi_sub, -4);
104 EvtGenReport(EVTGEN_ERROR,
"EvtGen") <<
"Not implemented :getvectorff in EvtBGL2FF. Use EvtBGLFF instead.\n";
110 double*,
double*,
double*)
113 EvtGenReport(EVTGEN_ERROR,
"EvtGen") <<
"Not implemented :gettensorff in EvtBGL2FF.\n";
121 double*,
double*,
double*)
124 EvtGenReport(EVTGEN_ERROR,
"EvtGen") <<
"Not implemented :getbaryonff in EvtBGL2FF.\n";
130 double*,
double*,
double*,
double*)
133 EvtGenReport(EVTGEN_ERROR,
"EvtGen") <<
"Not implemented :getdiracff in EvtBGL2FF.\n";
139 double*,
double*,
double*,
double*,
double*,
double*)
142 EvtGenReport(EVTGEN_ERROR,
"EvtGen") <<
"Not implemented :getraritaff in EvtBGL2FF.\n";
double a0_2
2nd-order z expansion coefficient for scalar form factor f_0
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...
double a0_3
3rd-order z expansion coefficient for scalar form factor f_0
double ap_2
2nd-order z expansion coefficient for vector form factor: f_+
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.
double ap_1
1st-order z expansion coefficient for vector form factor: f_+
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
Returns dirac form factors.
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns tensor form factors.
double a0_1
1st-order z expansion coefficient for scalar form factor f_0
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
Returns tarita form factors.
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fp, double *f0)
Returns scalar form factors.
void getvectorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns vector form factors.
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns baryon form factors.
double a0_0
0th-order z expansion coefficient for scalar form factor f_0
double ap_3
3rd-order z expansion coefficient for vector form factor: f_+