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