Belle II Software development
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
19EvtLLSWFF::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
35EvtLLSWFF::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
53void 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
70void 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
113void 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
132void 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
141void 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
150void 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
177double 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
194double 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
215double 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
233double 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
249double 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
268double 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
289double 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
309double 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
329double 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
351double 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
374double 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
392double 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
408double 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
426double 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