21 EvtSemiLeptonicFF* FormFactors)
23 static EvtId EM = EvtPDL::getId(
"e-");
24 static EvtId MUM = EvtPDL::getId(
"mu-");
25 static EvtId TAUM = EvtPDL::getId(
"tau-");
26 static EvtId EP = EvtPDL::getId(
"e+");
27 static EvtId MUP = EvtPDL::getId(
"mu+");
28 static EvtId TAUP = EvtPDL::getId(
"tau+");
32 EvtVector4R q = parent->getDaug(1)->getP4() + parent->getDaug(2)->getP4();
33 double q2 = (q.mass2());
36 double mesonmass = parent->getDaug(0)->mass();
37 double parentmass = parent->mass();
39 FormFactors->getscalarff(parent->getId(), parent->getDaug(0)->getId(),
40 q2, mesonmass, &fpf, &f0f);
43 p4b.set(parent->mass(), 0.0, 0.0, 0.0);
44 EvtVector4R p4meson = parent->getDaug(0)->getP4();
46 mdiffoverq2 = parentmass * parentmass - mesonmass * mesonmass;
47 mdiffoverq2 = mdiffoverq2 / q2;
49 EvtId l_num = parent->getDaug(1)->getId();
52 fpf * (p4b + p4meson - (mdiffoverq2 * (p4b - p4meson))) +
53 +f0f * mdiffoverq2 * (p4b - p4meson));
55 for (
int i{0}; i < 2; ++i) {
56 for (
int j{0}; j < 2; ++j) {
57 const EvtVector4C current{
58 EvtLeptonVACurrent(parent->getDaug(2)->spParent(j),
59 parent->getDaug(1)->spParent(i))};
61 if (l_num == EM || l_num == MUM || l_num == TAUM) {
63 amp.vertex(i, j, current.conj() * tds);
65 }
else if (l_num == EP || l_num == MUP || l_num == TAUP) {
67 amp.vertex(i, j, current * tds);
70 B2ERROR(
"HNLSemileptonicScalarAmp: Wrong lepton number");