50 if ((getParentId() != EvtPDL::getId(
"B0") &&
51 getParentId() != EvtPDL::getId(
"anti-B0")) ||
52 (getDaug(0) != EvtPDL::getId(
"K_S0")) ||
53 (getDaug(1) != EvtPDL::getId(
"K+") &&
54 getDaug(1) != EvtPDL::getId(
"K-")) ||
55 (getDaug(2) != EvtPDL::getId(
"K+") &&
56 getDaug(2) != EvtPDL::getId(
"K-"))) {
57 std::cout <<
"ERROR: Invalid decay" << std::endl;
58 std::cout <<
"USAGE: K_S0 K+ K-" << std::endl;
63 (1.0 + getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
64 getArg(1) * sin(getArg(2) * M_PI / 180.0));
66 (1.0 + getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
67 getArg(5) * sin(getArg(6) * M_PI / 180.0));
69 (1.0 + getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
70 getArg(9) * sin(getArg(10) * M_PI / 180.0));
72 (1.0 + getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
73 getArg(13) * sin(getArg(14) * M_PI / 180.0));
75 (1.0 + getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
76 getArg(17) * sin(getArg(18) * M_PI / 180.0));
78 (1.0 + getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
79 getArg(22) * sin(getArg(23) * M_PI / 180.0));
81 (1.0 + getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
82 getArg(27) * sin(getArg(28) * M_PI / 180.0));
85 (1.0 - getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
86 getArg(1) * sin(getArg(2) * M_PI / 180.0));
88 (1.0 - getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
89 getArg(5) * sin(getArg(6) * M_PI / 180.0));
91 (1.0 - getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
92 getArg(9) * sin(getArg(10) * M_PI / 180.0));
94 (1.0 - getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
95 getArg(13) * sin(getArg(14) * M_PI / 180.0));
97 (1.0 - getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
98 getArg(17) * sin(getArg(18) * M_PI / 180.0));
100 (1.0 - getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
101 getArg(22) * sin(getArg(23) * M_PI / 180.0));
103 (1.0 - getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
104 getArg(27) * sin(getArg(28) * M_PI / 180.0));
110 std::cout << setiosflags(std::ios::left) << std::endl
111 <<
"B0 Channel " << std::setw(20) <<
"Relative amplitude" << std::setw(20) <<
"Relative phase" << std::endl
112 <<
"f0ks " << std::setw(20) << real(
a_f0ks_) << std::setw(20) << imag(
a_f0ks_) << std::endl
113 <<
"phiks " << std::setw(20) << real(
a_phiks_) << std::setw(20) << imag(
a_phiks_) << std::endl
114 <<
"fxks " << std::setw(20) << real(
a_fxks_) << std::setw(20) << imag(
a_fxks_) << std::endl
115 <<
"chic0ks " << std::setw(20) << real(
a_chic0ks_) << std::setw(20) << imag(
a_chic0ks_) << std::endl
116 <<
"kpkmnr " << std::setw(20) << real(
a_kpkmnr_) << std::setw(20) << imag(
a_kpkmnr_) << std::endl
117 <<
"kskpnr " << std::setw(20) << real(
a_kskpnr_) << std::setw(20) << imag(
a_kskpnr_) << std::endl
118 <<
"kskmnr " << std::setw(20) << real(
a_kskmnr_) << std::setw(20) << imag(
a_kskmnr_) << std::endl
121 std::cout << setiosflags(std::ios::left) << std::endl
122 <<
"B0B Channel " << std::setw(20) <<
"Relative amplitude" << std::setw(20) <<
"Relative phase" << std::endl
123 <<
"f0ks " << std::setw(20) << real(
abar_f0ks_) << std::setw(20) << imag(
abar_f0ks_) << std::endl
125 <<
"fxks " << std::setw(20) << real(
abar_fxks_) << std::setw(20) << imag(
abar_fxks_) << std::endl
149 static EvtId B0 = EvtPDL::getId(
"B0");
150 static EvtId B0B = EvtPDL::getId(
"anti-B0");
157 EvtCPUtil::getInstance()->OtherB(
p, t, other_b, 0.5);
162 p->initializePhaseSpace(getNDaug(), getDaugs());
163 EvtVector4R p4ks, p4kp, p4km;
164 if (
p->getId() == B0) {
165 p4ks =
p->getDaug(0)->getP4();
166 p4kp =
p->getDaug(1)->getP4();
167 p4km =
p->getDaug(2)->getP4();
174 p4ks =
p->getDaug(0)->getP4();
175 p4kp =
p->getDaug(2)->getP4();
176 p4km =
p->getDaug(1)->getP4();
217 (1.0 + getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
218 getArg(1) * sin(getArg(2) * M_PI / 180.0));
220 (1.0 + getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
221 getArg(5) * sin(getArg(6) * M_PI / 180.0));
223 (1.0 + getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
224 getArg(9) * sin(getArg(10) * M_PI / 180.0));
226 (1.0 + getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
227 getArg(13) * sin(getArg(14) * M_PI / 180.0));
229 (1.0 + getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
230 getArg(17) * sin(getArg(18) * M_PI / 180.0));
232 (1.0 + getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
233 getArg(22) * sin(getArg(23) * M_PI / 180.0));
235 (1.0 + getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
236 getArg(27) * sin(getArg(28) * M_PI / 180.0));
239 (1.0 - getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
240 getArg(1) * sin(getArg(2) * M_PI / 180.0));
242 (1.0 - getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
243 getArg(5) * sin(getArg(6) * M_PI / 180.0));
245 (1.0 - getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
246 getArg(9) * sin(getArg(10) * M_PI / 180.0));
248 (1.0 - getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
249 getArg(13) * sin(getArg(14) * M_PI / 180.0));
251 (1.0 - getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
252 getArg(17) * sin(getArg(18) * M_PI / 180.0));
254 (1.0 - getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
255 getArg(22) * sin(getArg(23) * M_PI / 180.0));
257 (1.0 - getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
258 getArg(27) * sin(getArg(28) * M_PI / 180.0));
261 const double pCP_f0ks = getArg(4) * M_PI / 180.0;
262 const double pCP_phiks = getArg(8) * M_PI / 180.0;
263 const double pCP_fxks = getArg(12) * M_PI / 180.0;
264 const double pCP_chic0ks = getArg(16) * M_PI / 180.0;
265 const double pCP_kpkmnr = getArg(20) * M_PI / 180.0;
266 const double pCP_kskpnr = getArg(25) * M_PI / 180.0;
267 const double pCP_kskmnr = getArg(30) * M_PI / 180.0;
271 EvtComplex(cos(+2.0 * pCP_f0ks), sin(+2.0 * pCP_f0ks));
273 EvtComplex(cos(+2.0 * pCP_phiks), sin(+2.0 * pCP_phiks));
275 EvtComplex(cos(+2.0 * pCP_fxks), sin(+2.0 * pCP_fxks));
277 EvtComplex(cos(+2.0 * pCP_chic0ks), sin(+2.0 * pCP_chic0ks));
279 EvtComplex(cos(+2.0 * pCP_kpkmnr), sin(+2.0 * pCP_kpkmnr));
281 EvtComplex(cos(+2.0 * pCP_kskpnr), sin(+2.0 * pCP_kskpnr));
283 EvtComplex(cos(+2.0 * pCP_kskmnr), sin(+2.0 * pCP_kskmnr));
285 if (other_b == B0B) {
287 EvtComplex(cos(-2.0 * pCP_f0ks), sin(-2.0 * pCP_f0ks));
289 EvtComplex(cos(-2.0 * pCP_phiks), sin(-2.0 * pCP_phiks));
291 EvtComplex(cos(-2.0 * pCP_fxks), sin(-2.0 * pCP_fxks));
293 EvtComplex(cos(-2.0 * pCP_chic0ks), sin(-2.0 * pCP_chic0ks));
295 EvtComplex(cos(-2.0 * pCP_kpkmnr), sin(-2.0 * pCP_kpkmnr));
297 EvtComplex(cos(-2.0 * pCP_kskpnr), sin(-2.0 * pCP_kskpnr));
299 EvtComplex(cos(-2.0 * pCP_kskmnr), sin(-2.0 * pCP_kskmnr));
303 EvtComplex Amp_f0ks =
A_f0ks(p4ks, p4kp, p4km);
304 EvtComplex Amp_phiks =
A_phiks(p4ks, p4kp, p4km);
305 EvtComplex Amp_fxks =
A_fxks(p4ks, p4kp, p4km);
306 EvtComplex Amp_chic0ks =
A_chic0ks(p4ks, p4kp, p4km);
311 EvtComplex Ampbar_f0ks =
A_f0ks(p4ks, p4km, p4kp);
312 EvtComplex Ampbar_phiks =
A_phiks(p4ks, p4km, p4kp);
313 EvtComplex Ampbar_fxks =
A_fxks(p4ks, p4km, p4kp);
314 EvtComplex Ampbar_chic0ks =
A_chic0ks(p4ks, p4km, p4kp);
319 const EvtComplex A_B0toKsKK =
328 const EvtComplex Abar_B0toKsKK =
338 const double dm = getArg(0);
341 if (other_b == B0B) {
343 A_B0toKsKK * cos(dm * t / (2.0 * EvtConst::c)) +
344 EvtComplex(0.0, 1.0) * Abar_B0toKsKK * sin(dm * t / (2.0 * EvtConst::c));
349 EvtComplex(0.0, 1.0) * sin(dm * t / (2.0 * EvtConst::c)) +
350 Abar_B0toKsKK * cos(dm * t / (2.0 * EvtConst::c));
353 if (abs2(amp) > 50000.0)
539 const EvtVector4R& boost)
541 const double bx = boost.get(1) / boost.get(0);
542 const double by = boost.get(2) / boost.get(0);
543 const double bz = boost.get(3) / boost.get(0);
545 const double bx2 = bx * bx;
546 const double by2 = by * by;
547 const double bz2 = bz * bz;
549 const double b2 = bx2 + by2 + bz2;
554 const double gamma = 1.0 /
sqrt(1 - b2);
556 const double gb2 = (gamma - 1.0) / b2;
558 const double gb2xy = gb2 * bx * by;
559 const double gb2xz = gb2 * bx * bz;
560 const double gb2yz = gb2 * by * bz;
562 const double gbx = gamma * bx;
563 const double gby = gamma * by;
564 const double gbz = gamma * bz;
567 (gamma * p4.get(0)) - (gbx * p4.get(1)) - (gby * p4.get(2)) - (gbz * p4.get(3));
569 (-gbx * p4.get(0)) + ((1.0 + (gb2 * bx2)) * p4.get(1)) +
570 (gb2xy * p4.get(2)) + (gb2xz * p4.get(3));
572 (-gby * p4.get(0)) + (gb2xy * p4.get(1)) +
573 ((1.0 + (gb2 * by2)) * p4.get(2)) + (gb2yz * p4.get(3));
575 (-gbz * p4.get(0)) + (gb2xz * p4.get(1)) +
576 (gb2yz * p4.get(2)) + ((1.0 + (gb2 * bz2)) * p4.get(3));
578 const EvtVector4R p4_b(e_b, x_b, y_b, z_b);
696 const EvtVector4R& p4kp,
697 const EvtVector4R& p4km)
699 static EvtId phi = EvtPDL::getId(
"phi");
701 const double phi_m = EvtPDL::getMeanMass(phi);
702 const double phi_w = EvtPDL::getWidth(phi);
704 const EvtVector4R p4kpkm = p4kp + p4km;
705 const double mkpkm = p4kpkm.mass();
708 const EvtVector4R S_mu =
Smu(p4kp, p4km, p4ks);
709 const EvtVector4R L_mu =
Lmu(p4kp, p4km, p4ks);
711 const EvtTensor4C g_munu_tilde =
gmunu_tilde(p4kp, p4km, p4ks);
712 const EvtTensor4C g__munu_tilde =
RaiseIndices(g_munu_tilde);
714 EvtComplex H_phiks = 0.0;
715 for (
unsigned int i = 0; i < 4; i++)
716 for (
unsigned int j = 0; j < 4; j++)
717 H_phiks += g__munu_tilde.get(i, j) * S_mu.get(i) * L_mu.get(j);
720 const EvtVector4R p4kp_kpkm =
Boost(p4kp, p4kpkm);
722 const EvtComplex D_phiks =
BWBF(p4kp_kpkm.d3mag(), 1);
725 const double q0_phi =
q(phi_m, p4kp.mass(), p4km.mass());
726 const EvtComplex L_phiks =
727 BreitWigner(mkpkm, phi_m, phi_w, p4kp_kpkm.d3mag(), q0_phi, 1);
730 const EvtComplex
A_phiks = D_phiks * H_phiks * L_phiks;