13 #include "framework/logging/Logger.h"
14 #include "generators/evtgen/models/EvtBSemiTauonicHelicityAmplitudeCalculator.h"
24 m_CV1(0), m_CV2(0), m_CS1(0), m_CS2(0), m_CT(0)
42 B2INFO(
"EvtBSemiTauonicHelicityAmplitudeCalculator initialized with the default values.");
43 B2INFO(
"rho_1^2 : " << m_rho12);
44 B2INFO(
"rho_A1^22 : " << m_rhoA12);
45 B2INFO(
"R_1(1) : " << m_ffR11);
46 B2INFO(
"R_2(1) : " << m_ffR21);
47 B2INFO(
"a_S1: " << m_aS1);
48 B2INFO(
"a_R3: " << m_aR3);
49 B2INFO(
"bottom quark mass: " << m_mBottom);
50 B2INFO(
"charm quark mass: " << m_mCharm);
51 B2INFO(
"CV1 : " << m_CV1);
52 B2INFO(
"CV2 : " << m_CV2);
53 B2INFO(
"CS1 : " << m_CS1);
54 B2INFO(
"CS2 : " << m_CS2);
55 B2INFO(
"CT : " << m_CT);
56 B2INFO(
"B meson mass: " << m_mB);
57 B2INFO(
"D meson mass: " << m_mD);
58 B2INFO(
"D* meson mass: " << m_mDst);
62 const double ffR11,
const double ffR21,
const double aS1,
const double aR3,
63 const double bottomMass,
const double charmMass,
64 const EvtComplex& CV1,
const EvtComplex& CV2,
const EvtComplex& CS1,
const EvtComplex& CS2,
const EvtComplex& CT,
65 const double parentMass,
const double DMass,
const double DstarMass):
66 m_CV1(CV1), m_CV2(CV2), m_CS1(CS1), m_CS2(CS2), m_CT(CT)
83 B2INFO(
"EvtBSemiTauonicHelicityAmplitudeCalculator initialized.");
84 B2INFO(
"rho_1^2 : " << rho12);
85 B2INFO(
"rho_A1^2 : " << rhoA12);
86 B2INFO(
"R_1(1) : " << ffR11);
87 B2INFO(
"R_2(1) : " << ffR21);
88 B2INFO(
"a_S1: " <<
m_aS1);
89 B2INFO(
"a_R3: " <<
m_aR3);
90 B2INFO(
"bottom quark mass: " <<
m_mBottom);
91 B2INFO(
"charm quark mass: " <<
m_mCharm);
92 B2INFO(
"CV1 : " <<
m_CV1);
93 B2INFO(
"CV2 : " <<
m_CV2);
94 B2INFO(
"CS1 : " <<
m_CS1);
95 B2INFO(
"CS2 : " <<
m_CS2);
96 B2INFO(
"CT : " <<
m_CT);
97 B2INFO(
"Parent meson mass: " <<
m_mB);
98 B2INFO(
"D meson mass: " <<
m_mD);
99 B2INFO(
"D* meson mass: " <<
m_mDst);
106 mtau, tauhel, Dhel, w, costau);
111 const EvtComplex& CS2,
const EvtComplex& CT,
112 double mtau,
int tauhel,
int Dhel,
double w,
double costau)
const
119 + CV1 *
helampV1(mtau, tauhel, Dhel, w, costau)
120 + CV2 *
helampV2(mtau, tauhel, Dhel, w, costau)
121 + CS1 *
helampS1(mtau, tauhel, Dhel, w, costau)
122 + CS2 *
helampS2(mtau, tauhel, Dhel, w, costau)
123 + CT *
helampT(mtau, tauhel, Dhel, w, costau));
131 double q2,
double costau)
const
136 if (tauhel == -1 && whel == -1)
return sqrt(2.*
q2) *
v(mtau,
q2) * (1. - costau);
137 if (tauhel == -1 && whel == 0)
return -2.*sqrt(
q2) *
v(mtau,
q2) * sqrt(1 - costau * costau);
138 if (tauhel == -1 && whel == +1)
return sqrt(2.*
q2) *
v(mtau,
q2) * (1. + costau);
139 if (tauhel == -1 && whel == 2)
return 0.;
141 if (tauhel == +1 && whel == -1)
return -sqrt(2.) * mtau *
v(mtau,
q2) * sqrt(1. - costau * costau);
142 if (tauhel == +1 && whel == 0)
return 2.*mtau *
v(mtau,
q2) * costau;
143 if (tauhel == +1 && whel == +1)
return sqrt(2.) * mtau *
v(mtau,
q2) * sqrt(1 - costau * costau);
144 if (tauhel == +1 && whel == 2)
return -2.*mtau *
v(mtau,
q2);
153 double q2,
double )
const
158 if (tauhel == -1)
return 0.;
159 if (tauhel == +1)
return -2.*sqrt(
q2) *
v(mtau,
q2);
168 int whel1,
int whel2,
169 double q2,
double costau)
const
174 if (whel1 == whel2)
return 0;
175 if (whel1 > whel2)
return -
Lep(mtau, tauhel, whel2, whel1,
q2, costau);
177 if (tauhel == -1 && whel1 == -1 && whel2 == 0)
return -sqrt(2.) * mtau *
v(mtau,
q2) * (1. - costau);
178 if (tauhel == -1 && whel1 == -1 && whel2 == +1)
return 2 * mtau *
v(mtau,
q2) * sqrt(1. - costau * costau);
179 if (tauhel == -1 && whel1 == -1 && whel2 == 2)
return Lep(mtau, -1, -1, 0,
q2, costau);
180 if (tauhel == -1 && whel1 == 0 && whel2 == +1)
return -sqrt(2.) * mtau *
v(mtau,
q2) * (1. + costau);
181 if (tauhel == -1 && whel1 == 0 && whel2 == 2)
return Lep(mtau, -1, -1, +1,
q2, costau);
182 if (tauhel == -1 && whel1 == +1 && whel2 == 2)
return Lep(mtau, -1, 0, +1,
q2, costau);
184 if (tauhel == +1 && whel1 == -1 && whel2 == 0)
return sqrt(2.*
q2) *
v(mtau,
q2) * sqrt(1. - costau * costau);
185 if (tauhel == +1 && whel1 == -1 && whel2 == +1)
return -2.*sqrt(
q2) *
v(mtau,
q2) * costau;
186 if (tauhel == +1 && whel1 == -1 && whel2 == 2)
return Lep(mtau, +1, -1, 0,
q2, costau);
187 if (tauhel == +1 && whel1 == 0 && whel2 == +1)
return -
Lep(mtau, +1, -1, 0,
q2, costau);
188 if (tauhel == +1 && whel1 == 0 && whel2 == 2)
return Lep(mtau, +1, -1, +1,
q2, costau);
189 if (tauhel == +1 && whel1 == +1 && whel2 == 2)
return -
Lep(mtau, +1, -1, 0,
q2, costau);
204 const double r0 =
r(Dhel);
205 if (Dhel == 2 && whel == 0) {
206 return m_mB * sqrt(r0 * (w * w - 1.) /
qh2(2, w)) * ((1 + r0) *
hp(w) - (1 - r0) *
hm(w));
208 if (Dhel == 2 && whel == 2) {
209 return m_mB * sqrt(r0 /
qh2(2, w)) * ((1 - r0) * (w + 1) *
hp(w) - (1 + r0) * (w - 1) *
hm(w));
211 if (Dhel == +1 && whel == +1) {
212 return m_mB * sqrt(r0) * ((w + 1) *
hA1(w) - sqrt(w * w - 1) *
hV(w));
214 if (Dhel == -1 && whel == -1) {
215 return m_mB * sqrt(r0) * ((w + 1) *
hA1(w) + sqrt(w * w - 1) *
hV(w));
217 if (Dhel == 0 && whel == 0) {
218 return m_mB * sqrt(r0 /
qh2(0, w)) * (w + 1) *
219 (-(w - r0) *
hA1(w) + (w - 1) * (r0 *
hA2(w) +
hA3(w)));
221 if (Dhel == 0 && whel == 2) {
222 return m_mB * sqrt(r0 * (w * w - 1) /
qh2(0, w)) * (-(w + 1) *
hA1(w) + (1 - r0 * w) *
hA2(w) + (w - r0) *
hA3(w));
236 if (Dhel == 2)
return HadV1(2, whel, w);
237 if (Dhel == +1 && whel == +1)
return -
HadV1(-1, -1, w);
238 if (Dhel == -1 && whel == -1)
return -
HadV1(+1, +1, w);
239 if (Dhel == 0)
return -
HadV1(0, whel, w);
249 if (Dhel == 2)
return m_mB * sqrt(
r(2)) * (w + 1) *
hS(w);
250 if (Dhel == 0)
return -
m_mB * sqrt(
r(0)) * sqrt(w * w - 1) *
hP(w);
261 if (Dhel == 2)
return HadS1(2, w);
262 else return -
HadS1(Dhel, w);
271 if (whel1 == whel2)
return 0.;
272 if (whel1 > whel2)
return -
HadT(Dhel, whel2, whel1, w);
274 const double r0 =
r(Dhel);
275 if (Dhel == 2 && whel1 == -1 && whel2 == +1)
return m_mB * sqrt(
r(2)) * sqrt(w * w - 1) *
hT(w);
276 if (Dhel == 2 && whel1 == 0 && whel2 == 2)
return -
HadT(2, -1, +1, w);
277 if (Dhel == -1 && whel1 == -1 && whel2 == 0)
278 return -
m_mB * sqrt(r0 /
qh2(-1, w)) * (1 - r0 * (w + sqrt(w * w - 1))) *
279 (
hT1(w) +
hT2(w) + (w - sqrt(w * w - 1)) * (
hT1(w) -
hT2(w)));
280 if (Dhel == -1 && whel1 == -1 && whel2 == 2)
return -
HadT(-1, -1, 0, w);
281 if (Dhel == 0 && whel1 == -1 && whel2 == +1)
282 return m_mB * sqrt(r0) * ((w + 1) *
hT1(w) + (w - 1) *
hT2(w) + 2 * (w * w - 1) *
hT3(w));
283 if (Dhel == 0 && whel1 == 0 && whel2 == 2)
return -
HadT(0, -1, +1, w);
284 if (Dhel == +1 && whel1 == 0 && whel2 == +1)
285 return -
m_mB * sqrt(r0 /
qh2(+1, w)) * (1 - r0 * (w - sqrt(w * w - 1))) *
286 (
hT1(w) +
hT2(w) + (w + sqrt(w * w - 1)) * (
hT1(w) -
hT2(w)));
288 if (Dhel == +1 && whel1 == +1 && whel2 == 2)
return -
HadT(+1, 0, +1, w);
302 for (
int whel = -1; whel <= 2; whel++) {
303 amp +=
eta(whel) *
Lep(mtau, tauhel, whel,
q2(Dhel, w), costau)
304 *
HadV1(Dhel, whel, w);
312 return helampSM(mtau, tauhel, Dhel, w, costau);
319 for (
int whel = -1; whel <= 2; whel++) {
320 amp +=
eta(whel) *
Lep(mtau, tauhel, whel,
q2(Dhel, w), costau)
321 *
HadV2(Dhel, whel, w);
329 return -
Lep(mtau, tauhel,
q2(Dhel, w), costau) *
HadS1(Dhel, w);
335 return -
Lep(mtau, tauhel,
q2(Dhel, w), costau) *
HadS2(Dhel, w);
342 for (
int whel1 = -1; whel1 <= 2; whel1++) {
343 for (
int whel2 = -1; whel2 <= 2; whel2++) {
344 amp += -1 *
eta(whel1) *
eta(whel2) *
Lep(mtau, tauhel, whel1, whel2,
q2(Dhel, w), costau)
345 *
HadT(Dhel, whel1, whel2, w);
358 const double r0 =
r(2);
359 return -((1 + r0) * (1 + r0) * (w - 1) *
ffV1(w)
360 - (1 - r0) * (1 - r0) * (w + 1) *
ffS1(w)) / (2 *
qh2(2, w));
365 return - (1 -
r(2) *
r(2)) * (w + 1) * (
ffV1(w) -
ffS1(w)) / (2 *
qh2(2, w));
397 const double r0 =
r(2);
399 - (1 + r0) / (1 -
rq()) * (w - 1) / (w + 1) *
hm(w));
409 const double r0 =
r(1);
420 const double r0 =
r(2);
421 return hp(w) - (1 + r0) *
hm(w) / (1 - r0);
427 const double r0 =
r(1);
428 return -((1 + r0) * (1 + r0) * (w - 1) *
hV(w)
429 - (1 - r0) * (1 - r0) * (w + 1) *
hA1(w))
436 const double r0 =
r(1);
437 return -(1 - r0 * r0) * (w + 1) * (
hV(w) -
hA1(w))
444 const double r0 =
r(1);
445 return ((1 + r0) * (1 + r0) *
hV(w) - 2 * r0 * (w + 1) *
hA1(w)
447 / (2 *
qh2(1, w) * (1 + r0));
453 return (sqrt(w + 1) - sqrt(2)) / (sqrt(w + 1) + sqrt(2));
477 return m_ffR11 - 0.12 * (w - 1) + 0.05 * (w - 1) * (w - 1);
482 return m_ffR21 + 0.11 * (w - 1) - 0.06 * (w - 1) * (w - 1);
487 return 1 +
aR3() *
dR3(w);
492 return -0.019 + 0.041 * (w - 1.) - 0.015 * (w - 1.) * (w - 1.);
497 return 0.22 - 0.052 * (w - 1.) + 0.026 * (w - 1.) * (w - 1.);
504 double mesonMass(-1.);
505 if (Dhel == 2)mesonMass =
m_mD;
507 assert(mesonMass >= 0.);
514 return sqrt(1 - mtau * mtau /
q2);
520 return 1 - 2 *
r(Dhel) * w +
r(Dhel) *
r(Dhel);
532 if (Dhel == -1 || Dhel == 0 || Dhel == 1 || Dhel == 2)
return true;
538 if (whel == -1 || whel == 0 || whel == 1 || whel == 2)
return true;
544 if (tauhel == -1 || tauhel == 1)
return true;