Belle II Software  release-08-01-10
EvtHQET3FF.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/EvtHQET3FF.h"
16 
17 
18 EvtHQET3FF::EvtHQET3FF(double hqetha1_1, double hqetrho2, double hqetr0_1, double hqetr1_1, double hqetr2_1)
19 {
20 
21  rho2 = hqetrho2;
22  r0_1 = hqetr0_1;
23  r1_1 = hqetr1_1;
24  r2_1 = hqetr2_1;
25  ha1_1 = hqetha1_1;
26 
27  return;
28 }
29 
30 EvtHQET3FF::EvtHQET3FF(double hqetv1_1, double hqetrho2, double hqetdelta)
31 {
32 
33  v1_1 = hqetv1_1;
34  rho2 = hqetrho2;
35  d1_1 = hqetdelta;
36 
37  return;
38 }
39 
40 
41 void EvtHQET3FF::getscalarff(EvtId parent, EvtId,
42  double t, double mass, double* fp, double* f0)
43 {
44 
45 
46  double mb = EvtPDL::getMeanMass(parent);
47  double w = ((mb * mb) + (mass * mass) - t) / (2.0 * mb * mass);
48 
49  // Form factors have a general form, with parameters passed in
50  // from the arguements.
51 
52  // Use dispersion relation parametrization from
53  // I.Caprini, L.Lelluch, M.Neubert, Nucl. Phys. B 530,153(1998)
54  const double z = (sqrt(w + 1) - sqrt(2.)) / (sqrt(w + 1) + sqrt(2.));
55  double v1 = v1_1 * (1. - 8.*rho2 * z + (51.*rho2 - 10.) * z * z - (252.*rho2 - 84.) * z * z * z);
56 
57  *fp = 0.5 * (mass + mb) / sqrt(mass * mb) * v1;
58 
59  double s1 = (1 + d1_1 * (-0.019 + 0.041 * (w - 1) - 0.015 * pow(w - 1, 2.))) * v1;
60 
61  *f0 = sqrt(mass * mb) / (mass + mb) * (w + 1) * s1;
62 
63  return;
64 }
65 
66 void EvtHQET3FF::getvectorff(EvtId parent, EvtId,
67  double t, double mass, double* a1f,
68  double* a2f, double* vf, double* a0f)
69 {
70 
71 
72  double mb = EvtPDL::getMeanMass(parent);
73  double w = ((mb * mb) + (mass * mass) - t) / (2.0 * mb * mass);
74 
75  // Form factors have a general form, with parameters passed in
76  // from the arguements.
77 
78  double rstar = (2.0 * sqrt(mb * mass)) / (mb + mass);
79 
80  // Use disparsion relation parametrization from
81  // I.Caprini, L.Lelluch, M.Neubert, Nucl. Phys. B 530,153(1998)
82  const double z = (sqrt(w + 1) - sqrt(2.)) / (sqrt(w + 1) + sqrt(2.));
83  double ha1 = ha1_1 * (1. - 8.*rho2 * z + (53.*rho2 - 15.) * z * z - (231.*rho2 - 91.) * z * z * z);
84  double r0 = r0_1 - 0.11 * (w - 1) + 0.01 * (w - 1) * (w - 1);
85  double r1 = r1_1 - 0.12 * (w - 1) + 0.05 * (w - 1) * (w - 1);
86  double r2 = r2_1 + 0.11 * (w - 1) - 0.06 * (w - 1) * (w - 1);
87 
88  *a1f = (1.0 - (t / ((mb + mass) * (mb + mass)))) * ha1;
89  *a1f = (*a1f) / rstar;
90  *a2f = (r2 / rstar) * ha1;
91  *vf = (r1 / rstar) * ha1;
92  *a0f = (r0 / rstar) * ha1;
93 
94  return;
95 }
96 
97 void EvtHQET3FF::gettensorff(EvtId, EvtId, double, double, double*,
98  double*, double*, double*)
99 {
100 
101  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :gettensorff in EvtHQET3FF.\n";
102  ::abort();
103 
104 }
105 
106 
107 
108 void EvtHQET3FF::getbaryonff(EvtId, EvtId, double, double, double*,
109  double*, double*, double*)
110 {
111 
112  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getbaryonff in EvtHQET3FF.\n";
113  ::abort();
114 
115 }
116 
117 void EvtHQET3FF::getdiracff(EvtId, EvtId, double, double, double*, double*,
118  double*, double*, double*, double*)
119 {
120 
121  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getdiracff in EvtHQET3FF.\n";
122  ::abort();
123 
124 }
125 
126 void EvtHQET3FF::getraritaff(EvtId, EvtId, double, double, double*, double*,
127  double*, double*, double*, double*, double*, double*)
128 {
129 
130  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getraritaff in EvtHQET3FF.\n";
131  ::abort();
132 
133 }
double r1_1
Normalization of R1(w=1)
Definition: EvtHQET3FF.h:64
double rho2
CLN slope of leading FF.
Definition: EvtHQET3FF.h:58
EvtHQET3FF(double hqetha1_1, double hqetrho2, double hqetr0_1, double hqetr1_1, double hqetr2_1)
Default constructor.
Definition: EvtHQET3FF.cc:18
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
Returns dirac ffs.
Definition: EvtHQET3FF.cc:117
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns tensor ffs.
Definition: EvtHQET3FF.cc:97
double r0_1
Normalization of R0(w=1)
Definition: EvtHQET3FF.h:61
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
Returns tarita ffs.
Definition: EvtHQET3FF.cc:126
double d1_1
Normalization of scalar FF.
Definition: EvtHQET3FF.h:73
double r2_1
Normalization of R2(w=1)
Definition: EvtHQET3FF.h:67
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
Returns vector ffs.
Definition: EvtHQET3FF.cc:66
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fp, double *f0)
Returns scalar ffs.
Definition: EvtHQET3FF.cc:41
double ha1_1
Normalization of leading FF.
Definition: EvtHQET3FF.h:55
double v1_1
Normalization of leading scalar FF.
Definition: EvtHQET3FF.h:70
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns baryon ffs.
Definition: EvtHQET3FF.cc:108
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28