Belle II Software prerelease-11-00-00a
EvtHNLSemiLeptonicScalarAmp.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <generators/evtgen/models/EvtHNLSemiLeptonicScalarAmp.h>
10
11#include <EvtGenBase/EvtAmp.hh>
12#include <EvtGenBase/EvtDiracSpinor.hh>
13#include <EvtGenBase/EvtId.hh>
14#include <EvtGenBase/EvtPDL.hh>
15#include <EvtGenBase/EvtParticle.hh>
16#include <EvtGenBase/EvtSemiLeptonicFF.hh>
17#include <EvtGenBase/EvtVector4C.hh>
18
19void EvtHNLSemiLeptonicScalarAmp::CalcAmp(EvtParticle* parent, EvtAmp& amp,
20 EvtSemiLeptonicFF* FormFactors)
21{
22 static EvtId EM = EvtPDL::getId("e-");
23 static EvtId MUM = EvtPDL::getId("mu-");
24 static EvtId TAUM = EvtPDL::getId("tau-");
25 static EvtId EP = EvtPDL::getId("e+");
26 static EvtId MUP = EvtPDL::getId("mu+");
27 static EvtId TAUP = EvtPDL::getId("tau+");
28
29 //Add the lepton and neutrino 4 momenta to find q2
30
31 EvtVector4R q = parent->getDaug(1)->getP4() + parent->getDaug(2)->getP4();
32 double q2 = (q.mass2());
33
34 double fpf, f0f;
35 double mesonmass = parent->getDaug(0)->mass();
36 double parentmass = parent->mass();
37
38 FormFactors->getscalarff(parent->getId(), parent->getDaug(0)->getId(),
39 q2, mesonmass, &fpf, &f0f);
40
41 EvtVector4R p4b;
42 p4b.set(parent->mass(), 0.0, 0.0, 0.0);
43 EvtVector4R p4meson = parent->getDaug(0)->getP4();
44 double mdiffoverq2;
45 mdiffoverq2 = parentmass * parentmass - mesonmass * mesonmass;
46 mdiffoverq2 = mdiffoverq2 / q2;
47
48 EvtVector4C l11, l12, l21, l22;
49
50 EvtId l_num = parent->getDaug(1)->getId();
51 EvtVector4C tds;
52
53 if (l_num == EM || l_num == MUM || l_num == TAUM) {
54 tds = EvtVector4C(
55 fpf * (p4b + p4meson - (mdiffoverq2 * (p4b - p4meson))) +
56 +f0f * mdiffoverq2 * (p4b - p4meson));
57
58 l11 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
59 parent->getDaug(2)->spParent(0));
60 l12 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
61 parent->getDaug(2)->spParent(1));
62 l21 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
63 parent->getDaug(2)->spParent(0));
64 l22 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
65 parent->getDaug(2)->spParent(1));
66 } else {
67 if (l_num == EP || l_num == MUP || l_num == TAUP) {
68 tds = EvtVector4C(
69 fpf * (p4b + p4meson - (mdiffoverq2 * (p4b - p4meson))) +
70 +f0f * mdiffoverq2 * (p4b - p4meson));
71
72 l11 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(0),
73 parent->getDaug(1)->spParent(0));
74 l12 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(0),
75 parent->getDaug(1)->spParent(1));
76 l21 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(1),
77 parent->getDaug(1)->spParent(0));
78 l22 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(1),
79 parent->getDaug(1)->spParent(1));
80 } else {
81 EvtGenReport(EVTGEN_ERROR, "EvtGen")
82 << "Wrong lepton number\n";
83 }
84 }
85
86 amp.vertex(0, 0, l11 * tds);
87 amp.vertex(0, 1, l12 * tds);
88 amp.vertex(1, 0, l21 * tds);
89 amp.vertex(1, 1, l22 * tds);
90
91}
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtSemiLeptonicFF *FormFactors) override
Daughters are initialized and have been added to the parent.