The method to evaluate the vector kaon decay amplitude.
961{
962
963 EvtId pId = parent->getId();
964
965 EvtVector4R q = parent->getDaug(1)->getP4() + parent->getDaug(2)->getP4();
966 double q2 = q.mass2();
967 double mesonmass = parent->getDaug(0)->mass();
968 double parentmass = parent->mass();
969
970 double a1, a2, a0, v, t1, t2, t3;
971 getVectorFF(q2, parentmass, mesonmass, a1, a2, a0, v, t1, t2, t3);
972
973 const EvtVector4R& p4meson = parent->getDaug(0)->getP4();
974 double pmass = parent->mass(), ipmass = 1 / pmass;
975 const EvtVector4R p4b(pmass, 0.0, 0.0, 0.0);
976 EvtVector4R pbhat = p4b * ipmass;
977 EvtVector4R qhat = q * ipmass;
978 EvtVector4R pkstarhat = p4meson * ipmass;
979 EvtVector4R phat = pbhat + pkstarhat;
980
981 EvtComplex c7 = -0.304;
982 EvtComplex c9 = C9(q2, interpol(
m_reso, q2));
983 EvtComplex c10 = -4.103;
987
988 EvtComplex I(0.0, 1.0);
989
990 double mb = 4.8 * ipmass, ms = 0.093 * ipmass;
991 double mH = mesonmass * ipmass, oamH = 1 + mH, osmH = 1 - mH,
992 osmH2 = oamH * osmH, iosmH2 = 1 / osmH2;
993 double is = pmass * pmass / q2;
994 a1 *= oamH;
995 a2 *= osmH;
996 a0 *= 2 * mH;
997 double cs0 = (a1 - a2 - a0) * is;
998 a2 *= iosmH2;
999 v *= 2 / oamH;
1000
1001 EvtComplex a = (c9 +
m_c9p) * v + (c7 +
m_c7p) * (4 * mb * is * t1);
1002 EvtComplex b = (c9 -
m_c9p) * a1 +
1003 (c7 -
m_c7p) * (2 * mb * is * osmH2 * t2);
1004 EvtComplex c = (c9 -
m_c9p) * a2 +
1005 (c7 -
m_c7p) * (2 * mb * (t3 * iosmH2 + t2 * is));
1006 EvtComplex d = (c9 -
m_c9p) * cs0 - (c7 -
m_c7p) * (2 * mb * is * t3);
1007 EvtComplex e = (c10 +
m_c10p) * v;
1008 EvtComplex f = (c10 -
m_c10p) * a1;
1009 EvtComplex g = (c10 -
m_c10p) * a2;
1010 EvtComplex h = (c10 -
m_c10p) * cs0;
1011 double sscale = a0 / (mb + ms);
1012 EvtComplex hs =
m_cS * sscale, hp =
m_cP * sscale;
1013
1014 int charge1 = EvtPDL::chg3(parent->getDaug(1)->getId());
1015
1016 EvtParticle* lepPos = parent->getDaug(2 - (charge1 > 0));
1017 EvtParticle* lepNeg = parent->getDaug(1 + (charge1 > 0));
1018
1019 EvtDiracSpinor lp0(lepPos->spParent(0)), lp1(lepPos->spParent(1));
1020 EvtDiracSpinor lm0(lepNeg->spParent(0)), lm1(lepNeg->spParent(1));
1021
1022 EvtVector4C l11, l12, l21, l22, a11, a12, a21, a22;
1023 EvtComplex s11, s12, s21, s22, p11, p12, p21, p22;
1024 EvtTensor4C tt0 = asymProd(pbhat, pkstarhat);
1025
1026 EvtTensor4C T1(tt0), T2(tt0);
1027 const EvtTensor4C& gmn = EvtTensor4C::g();
1028 EvtTensor4C tt1(EvtGenFunctions::directProd(pbhat, phat));
1029 EvtTensor4C tt2(EvtGenFunctions::directProd(pbhat, qhat));
1030
1031 b *= I;
1032 c *= I;
1033 d *= I;
1034 f *= I;
1035 g *= I;
1036 h *= I;
1037 if (pId == IdBm || pId == IdaB0 || pId == IdaBs) {
1038 T1 *= a;
1039 addScaled(T1, -b, gmn);
1040 addScaled(T1, c, tt1);
1041 addScaled(T1, d, tt2);
1042 T2 *= e;
1043 addScaled(T2, -f, gmn);
1044 addScaled(T2, g, tt1);
1045 addScaled(T2, h, tt2);
1046
1047 EvtLeptonVandACurrents(l11, a11, lp0, lm0);
1048 EvtLeptonVandACurrents(l21, a21, lp1, lm0);
1049 EvtLeptonVandACurrents(l12, a12, lp0, lm1);
1050 EvtLeptonVandACurrents(l22, a22, lp1, lm1);
1051
1052 s11 = EvtLeptonSCurrent(lp0, lm0);
1053 p11 = EvtLeptonPCurrent(lp0, lm0);
1054 s21 = EvtLeptonSCurrent(lp1, lm0);
1055 p21 = EvtLeptonPCurrent(lp1, lm0);
1056 s12 = EvtLeptonSCurrent(lp0, lm1);
1057 p12 = EvtLeptonPCurrent(lp0, lm1);
1058 s22 = EvtLeptonSCurrent(lp1, lm1);
1059 p22 = EvtLeptonPCurrent(lp1, lm1);
1060 } else if (pId == IdBp || pId == IdB0 || pId == IdBs) {
1061 T1 *= -a;
1062 addScaled(T1, -b, gmn);
1063 addScaled(T1, c, tt1);
1064 addScaled(T1, d, tt2);
1065 T2 *= -e;
1066 addScaled(T2, -f, gmn);
1067 addScaled(T2, g, tt1);
1068 addScaled(T2, h, tt2);
1069
1070 EvtLeptonVandACurrents(l11, a11, lp1, lm1);
1071 EvtLeptonVandACurrents(l21, a21, lp0, lm1);
1072 EvtLeptonVandACurrents(l12, a12, lp1, lm0);
1073 EvtLeptonVandACurrents(l22, a22, lp0, lm0);
1074
1075 s11 = EvtLeptonSCurrent(lp1, lm1);
1076 p11 = EvtLeptonPCurrent(lp1, lm1);
1077 s21 = EvtLeptonSCurrent(lp0, lm1);
1078 p21 = EvtLeptonPCurrent(lp0, lm1);
1079 s12 = EvtLeptonSCurrent(lp1, lm0);
1080 p12 = EvtLeptonPCurrent(lp1, lm0);
1081 s22 = EvtLeptonSCurrent(lp0, lm0);
1082 p22 = EvtLeptonPCurrent(lp0, lm0);
1083 } else {
1084 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Wrong lepton number\n";
1085 T1.zero();
1086 T2.zero();
1087 }
1088 for (int i = 0; i < 3; i++) {
1089 EvtVector4C eps = parent->getDaug(0)->epsParent(i).conj();
1090
1091 EvtVector4C E1 = T1.cont1(eps);
1092 EvtVector4C E2 = T2.cont1(eps);
1093
1094 EvtComplex epsq = I * (eps * q), epsqs = epsq * hs, epsqp = epsq * hp;
1095
1096 amp.vertex(i, 0, 0, l11 * E1 + a11 * E2 - s11 * epsqs - p11 * epsqp);
1097 amp.vertex(i, 0, 1, l12 * E1 + a12 * E2 - s12 * epsqs - p12 * epsqp);
1098 amp.vertex(i, 1, 0, l21 * E1 + a21 * E2 - s21 * epsqs - p21 * epsqp);
1099 amp.vertex(i, 1, 1, l22 * E1 + a22 * E2 - s22 * epsqs - p22 * epsqp);
1100 }
1101}