Belle II Software  release-08-01-10
EvtLLSWFF.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 <string>
12 #include "EvtGenBase/EvtPDL.hh"
13 #include <math.h>
14 #include <stdlib.h>
15 
16 #include "generators/evtgen/models/EvtLLSWFF.h"
17 
18 
19 EvtLLSWFF::EvtLLSWFF(double _tau_w1, double _tau_wp, double _zeta_1)
20 {
21 
22  tau_w1 = _tau_w1;
23  tau_wp = _tau_wp;
24 
25  zeta_1 = _zeta_1;
26 
27  mb = 4.2; mc = 1.4; L = 0.40; Lp = 0.80; Ls = 0.76;
28 
29  eta_1 = eta_2 = eta_3 = eta_b = 0.;
30  chi_1 = chi_2 = chi_b = 0.;
31 
32  return;
33 }
34 
35 EvtLLSWFF::EvtLLSWFF(double _tau_w1, double _tau_wp, double _tau_1, double _tau_2)
36 {
37 
38  tau_w1 = _tau_w1;
39  tau_wp = _tau_wp;
40 
41  tau_1 = _tau_1;
42  tau_2 = _tau_2;
43 
44  mb = 4.2; mc = 1.4; L = 0.40; Lp = 0.80; Ls = 0.76;
45 
46  eta_1 = eta_2 = eta_3 = eta_b = 0.;
47  chi_1 = chi_2 = chi_b = 0.;
48 
49  return;
50 }
51 
52 
53 void EvtLLSWFF::getscalarff(EvtId parent, EvtId,
54  double t, double mass, double* fp, double* f0)
55 {
56 
57  // std::cerr << "Called EvtLLSWFF::getscalarff" << std::endl;
58 
59 
60  double m = EvtPDL::getMeanMass(parent);
61  double w = ((m * m) + (mass * mass) - t) / (2.0 * m * mass);
62 
63  *fp = ((m + mass) * gpD0(w) - (m - mass) * gmD0(w)) / (2 * sqrt(mass * m));
64  *f0 = ((m - mass) * (pow(m + mass, 2.) - t) * gpD0(w) - (mass + m) * (pow(m - mass,
65  2.) - t) * gmD0(w)) / (2 * (m - mass) * sqrt(m * mass) * (mass + m));
66 
67  return;
68 }
69 
70 void EvtLLSWFF::getvectorff(EvtId parent, EvtId daughter,
71  double t, double mass, double* a1f,
72  double* a2f, double* vf, double* a0f)
73 {
74 
75  double m = EvtPDL::getMeanMass(parent);
76  double w = ((m * m) + (mass * mass) - t) / (2.0 * m * mass);
77 
78  static EvtId D3P1P = EvtPDL::getId("D'_1+");
79  static EvtId D3P1N = EvtPDL::getId("D'_1-");
80  static EvtId D3P10 = EvtPDL::getId("D'_10");
81  static EvtId D3P1B = EvtPDL::getId("anti-D'_10");
82  static EvtId D3P1SP = EvtPDL::getId("D'_s1+");
83  static EvtId D3P1SN = EvtPDL::getId("D'_s1-");
84 
85  // Form factors have a general form, with parameters passed in
86  // from the arguements.
87 
88  if (daughter == D3P1P || daughter == D3P1N || daughter == D3P10 || daughter == D3P1B || daughter == D3P1SP || daughter == D3P1SN) {
89 
90  *a1f = sqrt(mass * m) / (mass + m) * gV1D1p(w);
91  *a2f = -(mass + m) * (gV3D1p(w) + mass / m * gV2D1p(w)) / (2 * sqrt(mass * m));
92  *vf = 0.5 * (mass + m) * 1. / sqrt(mass * m) * gAD1p(w);
93 
94  double a3f = (m + mass) / (2 * mass) * (*a1f) - (m - mass) / (2 * mass) * (*a2f);
95  *a0f = -t * (gV3D1p(w) - mass / m * gV2D1p(w)) / (4.*mass * sqrt(m * mass)) + a3f;
96 
97 
98  } else {
99 
100  *a1f = sqrt(mass * m) / (mass + m) * fV1D1(w);
101  *a2f = -(mass + m) * (fV3D1(w) + mass / m * fV2D1(w)) / (2 * sqrt(mass * m));
102  *vf = 0.5 * (mass + m) * 1. / sqrt(mass * m) * fAD1(w);
103 
104  double a3f = (m + mass) / (2 * mass) * (*a1f) - (m - mass) / (2 * mass) * (*a2f);
105  *a0f = -t * (fV3D1(w) - mass / m * fV2D1(w)) / (4.*mass * sqrt(m * mass)) + a3f;
106 
107  }
108 
109 
110  return;
111 }
112 
113 void EvtLLSWFF::gettensorff(EvtId parent, EvtId,
114  double t, double mass, double* hf,
115  double* kf, double* bpf, double* bmf)
116 {
117 
118  double m = EvtPDL::getMeanMass(parent);
119  double w = ((m * m) + (mass * mass) - t) / (2.0 * m * mass);
120 
121  *hf = -sqrt(mass * m) / (mass * m * m) / 2.*kVD2(w);
122  *kf = sqrt(mass * m) / m * kA1D2(w);
123 
124  *bpf = sqrt(mass * m) * (kA3D2(w) * m + kA2D2(w) * mass) / (2 * pow(m, 3.) * mass);
125  *bmf = kA2D2(w) * sqrt(mass * m) / (2 * pow(m, 3.)) - kA3D2(w) * sqrt(mass * m) / (2 * pow(m, 2.) * mass);
126 
127  return;
128 
129 }
130 
131 
132 void EvtLLSWFF::getbaryonff(EvtId, EvtId, double, double, double*,
133  double*, double*, double*)
134 {
135 
136  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getbaryonff in EvtLLSWFF.\n";
137  ::abort();
138 
139 }
140 
141 void EvtLLSWFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
142  double*, double*, double*, double*)
143 {
144 
145  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getdiracff in EvtLLSWFF.\n";
146  ::abort();
147 
148 }
149 
150 void EvtLLSWFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
151  double*, double*, double*, double*, double*, double*)
152 {
153 
154  EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Not implemented :getraritaff in EvtLLSWFF.\n";
155  ::abort();
156 
157 }
158 
159 // Isgur-Wise Function
160 //-------------------------------------------------------------------------------------------
161 
163 {
164 
165  double value = 0;
166 
167  value += tau_w1;
168  value += tau_w1 * (w - 1.) * tau_wp;
169 
170  return value;
171 
172 }
173 
174 // Form Factors for D0
175 //-------------------------------------------------------------------------------------------
176 
177 double EvtLLSWFF::gpD0(double w)
178 {
179 
180  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
181 
182  // Leading IW function values
183  double z12 = IsgurWiseFunction(w);
184 
185  double gp = 0;
186 
187  gp += ec * (2.*(w - 1.) * zeta_1 * z12 - 3.*z12 * (w * Ls - L) / (w + 1.));
188  gp += -eb * ((Ls * (2.*w + 1.) - L * (w + 2.)) / (w + 1.) * z12 - 2.*(w - 1.) * zeta_1 * z12);
189 
190  return gp;
191 
192 }
193 
194 double EvtLLSWFF::gmD0(double w)
195 {
196 
197  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
198 
199  // Leading IW function values
200  double z12 = IsgurWiseFunction(w);
201 
202  double gm = 0;
203 
204  gm += z12;
205  gm += ec * (6 * chi_1 - 2 * (w + 1) * chi_2);
206  gm += eb * chi_b;
207 
208  return gm;
209 }
210 
211 // Form Factors for D1*
212 //-------------------------------------------------------------------------------------------
213 
214 
215 double EvtLLSWFF::gV1D1p(double w)
216 {
217 
218  double ec = 1 / (2 * mc), eb = 1 / (2 * mb);
219 
220  // Leading IW function values
221  double z12 = IsgurWiseFunction(w);
222 
223  double gv1 = 0;
224 
225  gv1 += (w - 1.) * z12;
226  gv1 += ec * ((w * Ls - L) * z12 + (w - 1.) * (-2 * chi_1));
227  gv1 -= eb * ((Ls * (2.*w + 1) - L * (w + 2.)) * z12 - 2 * (pow(w, 2.) - 1.) * zeta_1 * z12 - (w - 1.) * chi_b);
228 
229  return gv1;
230 
231 };
232 
233 double EvtLLSWFF::gV2D1p(double w)
234 {
235 
236  double ec = 1 / (2 * mc);
237 
238  // Leading IW function values
239  double z12 = IsgurWiseFunction(w);
240 
241  double gv2 = 0;
242 
243  gv2 += 2 * ec * (zeta_1 * z12 - chi_2);
244 
245  return gv2;
246 
247 };
248 
249 double EvtLLSWFF::gV3D1p(double w)
250 {
251 
252  double ec = 1 / (2 * mc), eb = 1 / (2 * mb);
253 
254  // Leading IW function values
255  double z12 = IsgurWiseFunction(w);
256 
257  double gv3 = 0;
258 
259  gv3 += eb * ((Ls * (2.*w + 1) - L * (w + 2.)) / (w + 1.) * z12 - 2 * (w - 1.) * zeta_1 * z12 - chi_b);
260  gv3 -= z12;
261  gv3 -= ec * ((w * Ls - L) / (w + 1) * z12 + 2.*zeta_1 * z12 - 2 * chi_1 + 2 * chi_2);
262 
263  return gv3;
264 
265 
266 };
267 
268 double EvtLLSWFF::gAD1p(double w)
269 {
270 
271  double ec = 1 / (2 * mc), eb = 1 / (2 * mb);
272 
273  // Leading IW function values
274  double z12 = IsgurWiseFunction(w);
275 
276  double ga = 0;
277 
278  ga += eb * (2.*(w - 1.) * zeta_1 * z12 - (Ls * (2.*w + 1.) - L * (w + 2.)) / (w + 1.) * z12 + chi_b);
279  ga += z12;
280  ga += ec * ((w * Ls - L) / (w + 1.) * z12 - 2 * chi_1);
281 
282  return ga;
283 
284 };
285 
286 // Form Factors for D1
287 //-------------------------------------------------------------------------------------------
288 
289 double EvtLLSWFF::fV1D1(double w)
290 {
291 
292  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
293 
294  // Leading IW function values
295  double t32 = IsgurWiseFunction(w);
296 
297  double fv1 = 0;
298 
299  fv1 += (1. - pow(w, 2.)) * t32;
300  fv1 -= eb * (pow(w, 2.) - 1.) * ((Lp + L) * t32 - (2.*w + 1) * tau_1 * t32 - tau_2 * t32 + eta_b);
301  fv1 -= ec * (4.*(w + 1.) * (w * Lp - L) * t32 - (pow(w, 2.) - 1) * (3.*tau_1 * t32 - 3.*tau_2 * t32 + 2 * eta_1 + 3 * eta_3));
302 
303  fv1 /= sqrt(6);
304 
305  return fv1;
306 
307 };
308 
309 double EvtLLSWFF::fV2D1(double w)
310 {
311 
312  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
313 
314  // Leading IW function values
315  double t32 = IsgurWiseFunction(w);
316 
317  double fv2 = 0;
318 
319  fv2 -= 3.*t32;
320  fv2 -= 3 * eb * ((Lp + L) * t32 - (2 * w + 1) * tau_1 * t32 - tau_2 * t32 + eta_b);
321  fv2 -= ec * ((4.*w - 1) * tau_1 * t32 + 5 * tau_2 * t32 + 10 * eta_1 + 4 * (w - 1.) * eta_2 - 5 * eta_3);
322 
323  fv2 /= sqrt(6);
324 
325  return fv2;
326 
327 };
328 
329 double EvtLLSWFF::fV3D1(double w)
330 {
331 
332  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
333 
334  // Leading IW function values
335  double t32 = IsgurWiseFunction(w);
336 
337  double fv3 = 0;
338 
339  fv3 += (w - 2.) * t32;
340  fv3 += eb * ((2. + w) * ((Lp + L) * t32 - (2.*w + 1.) * tau_1 * t32 - tau_2 * t32) - (2. - w) * eta_b);
341  fv3 += ec * (4.*(w * Lp - L) * t32 + (2. + w) * tau_1 * t32 + (2. + 3.*w) * tau_2 * t32 - 2.*(6. + w) * eta_1 - 4.*
342  (w - 1) * eta_2 - (3.*w - 2.) * eta_3);
343 
344  fv3 /= sqrt(6);
345 
346  return fv3;
347 
348 
349 };
350 
351 double EvtLLSWFF::fAD1(double w)
352 {
353 
354  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
355 
356  // Leading IW function values
357  double t32 = IsgurWiseFunction(w);
358 
359  double fa = 0;
360 
361  fa += -(w + 1.) * t32;
362  fa -= eb * ((w - 1.) * ((Lp + L) * t32 - (2.*w + 1.) * tau_1 * t32 - tau_2 * t32) + (w + 1.) * eta_b);
363  fa -= ec * (4.*(w * Lp - L) * t32 - 3.*(w - 1.) * (tau_1 * t32 - tau_2 * t32) + (w + 1.) * (-2 * eta_1 - 3 * eta_3));
364 
365  fa /= sqrt(6);
366 
367  return fa;
368 
369 };
370 
371 // Form Factors for D2
372 //-------------------------------------------------------------------------------------------
373 
374 double EvtLLSWFF::kA1D2(double w)
375 {
376 
377  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
378 
379  // Leading IW function values
380  double t32 = IsgurWiseFunction(w);
381 
382  double ka1 = 0;
383 
384  ka1 -= (1. + w) * t32;
385  ka1 -= eb * ((w - 1.) * ((Lp + L) * t32 - (2.*w + 1.) * tau_1 * t32 - tau_2 * t32) + (1. + w) * eta_b);
386  ka1 -= ec * ((w - 1.) * (tau_1 * t32 - tau_2 * t32) + (w + 1.) * (-2 * eta_1 + eta_3));
387 
388  return ka1;
389 
390 };
391 
392 double EvtLLSWFF::kA2D2(double w)
393 {
394 
395  double ec = 1. / (2.*mc);
396 
397  // Leading IW function values
398  double t32 = IsgurWiseFunction(w);
399 
400  double ka2 = 0;
401 
402  ka2 -= 2.*ec * (tau_1 * t32 + eta_2);
403 
404  return ka2;
405 
406 };
407 
408 double EvtLLSWFF::kA3D2(double w)
409 {
410 
411  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
412 
413  // Leading IW function values
414  double t32 = IsgurWiseFunction(w);
415 
416  double ka3 = 0;
417 
418  ka3 += t32;
419  ka3 += eb * ((Lp + L) * t32 - (2.*w + 1.) * tau_1 * t32 - tau_2 * t32 + eta_b);
420  ka3 -= ec * (tau_1 * t32 + tau_2 * t32 + 2 * eta_1 - 2 * eta_2 - eta_3);
421 
422  return ka3;
423 
424 };
425 
426 double EvtLLSWFF::kVD2(double w)
427 {
428 
429  double ec = 1. / (2.*mc), eb = 1. / (2.*mb);
430 
431  // Leading IW function values
432  double t32 = IsgurWiseFunction(w);
433 
434  double kv = 0;
435 
436  kv -= t32;
437  kv -= eb * ((Lp + L) * t32 - (2.*w + 1) * tau_1 * t32 - tau_2 * t32 + eta_b);
438  kv -= ec * (tau_1 * t32 - tau_2 * t32 - 2 * eta_1 + eta_3);
439 
440  return kv;
441 
442 };
double chi_1
doubles to store chromomagnetic terms for broad states
Definition: EvtLLSWFF.h:136
void getvectorff(EvtId, EvtId, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
Returns vector ffs.
Definition: EvtLLSWFF.cc:70
double zeta_1
doubles to store normalizations of sub-leading IW functions
Definition: EvtLLSWFF.h:115
double L
doubles to store mass differences
Definition: EvtLLSWFF.h:106
double tau_wp
doubles to slope of IW function
Definition: EvtLLSWFF.h:97
void gettensorff(EvtId, EvtId, double t, double mass, double *hf, double *kf, double *bpf, double *bmf)
Returns tensor ffs.
Definition: EvtLLSWFF.cc:113
double tau_w1
doubles to store normalization of IW function
Definition: EvtLLSWFF.h:94
double IsgurWiseFunction(double w)
Isgur-Wise function.
Definition: EvtLLSWFF.cc:162
double fV1D1(double w)
D1 form factor fV1.
Definition: EvtLLSWFF.cc:289
double kA3D2(double w)
D2 form factor kA3.
Definition: EvtLLSWFF.cc:408
double Lp
doubles to store mass differences
Definition: EvtLLSWFF.h:112
double gV1D1p(double w)
D1* form factor gV1.
Definition: EvtLLSWFF.cc:215
double mb
doubles to store b quark mass
Definition: EvtLLSWFF.h:100
void getscalarff(EvtId, EvtId, double t, double mass, double *fp, double *f0)
Returns scalar ffs.
Definition: EvtLLSWFF.cc:53
double eta_3
doubles to store chromomagnetic terms for narrow states
Definition: EvtLLSWFF.h:130
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
Returns dirac ffs.
Definition: EvtLLSWFF.cc:141
double fV2D1(double w)
D1 form factor fV2.
Definition: EvtLLSWFF.cc:309
double gpD0(double w)
D0 form factor g+.
Definition: EvtLLSWFF.cc:177
double kVD2(double w)
D2 form factor kV.
Definition: EvtLLSWFF.cc:426
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
Returns rarita ffs.
Definition: EvtLLSWFF.cc:150
double Ls
doubles to store mass differences
Definition: EvtLLSWFF.h:109
double mc
doubles to store b quark mass
Definition: EvtLLSWFF.h:103
double tau_2
doubles to store normalizations of sub-leading IW functions
Definition: EvtLLSWFF.h:121
EvtLLSWFF(double _tau_w1, double _tau_wp, double zeta_1)
Default constructor.
Definition: EvtLLSWFF.cc:19
double eta_2
doubles to store chromomagnetic terms for narrow states
Definition: EvtLLSWFF.h:127
double gmD0(double w)
D0 form factor g-.
Definition: EvtLLSWFF.cc:194
double chi_2
doubles to store chromomagnetic terms for broad states
Definition: EvtLLSWFF.h:139
double kA2D2(double w)
D2 form factor kA2.
Definition: EvtLLSWFF.cc:392
double fV3D1(double w)
D1 form factor fV3.
Definition: EvtLLSWFF.cc:329
double eta_b
doubles to store chromomagnetic terms for narrow states
Definition: EvtLLSWFF.h:133
double chi_b
doubles to store chromomagnetic terms for broad states
Definition: EvtLLSWFF.h:142
double eta_1
doubles to store chromomagnetic terms for narrow states
Definition: EvtLLSWFF.h:124
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
Returns baryon ffs.
Definition: EvtLLSWFF.cc:132
double gAD1p(double w)
D1* form factor gA.
Definition: EvtLLSWFF.cc:268
double tau_1
doubles to store normalizations of sub-leading IW functions
Definition: EvtLLSWFF.h:118
double fAD1(double w)
D1 form factor fA.
Definition: EvtLLSWFF.cc:351
double gV3D1p(double w)
D1* form factor gV3.
Definition: EvtLLSWFF.cc:249
double kA1D2(double w)
D2 form factor kA1.
Definition: EvtLLSWFF.cc:374
double gV2D1p(double w)
D1* form factor gV2.
Definition: EvtLLSWFF.cc:233
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28