Belle II Software development
EvtHNLScalarL.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 <EvtGenBase/EvtParticle.hh>
10#include <EvtGenBase/EvtDiracSpinor.hh>
11#include <EvtGenBase/EvtVector4C.hh>
12#include <EvtGenBase/EvtVector4R.hh>
13#include <string>
14
15#include <generators/evtgen/EvtGenModelRegister.h>
16#include <generators/evtgen/models/EvtHNLScalarL.h>
17
18
20
21
23
25
27{
28 return "HNLSCALARL";
29}
30
31
32
33EvtDecayBase* EvtHNLScalarL::clone()
34{
35 return new EvtHNLScalarL;
36}
37
38
40{
41 checkNArg(0);
42 checkNDaug(2);
43
44 checkSpinParent(EvtSpinType::DIRAC);
45
46 checkSpinDaughter(0, EvtSpinType::SCALAR);
47 checkSpinDaughter(1, EvtSpinType::DIRAC);
48}
49
50
52{
53 setProbMax(m_ProbMax);
54}
55
56
57void EvtHNLScalarL::decay(EvtParticle* p)
58{
59 p->initializePhaseSpace(getNDaug(), getDaugs());
60
61 const EvtParticle* s = p->getDaug(0);
62 const EvtParticle* l = p->getDaug(1);
63
64 const EvtVector4R p4_s{ s->getP4() };
65
66 const int parId{ p->getPDGId() };
67
68 for (int i{ 0 }; i < 2; ++i) {
69 for (int j{ 0 }; j < 2; ++j) {
70 const EvtVector4C current{
71 EvtLeptonVACurrent(l->spParent(j), p->sp(i)) };
72
73 // Apply CP conjugation for anti-particles
74 if (parId < 0) {
75 vertex(i, j, ::conj(p4_s * current));
76 } else {
77 vertex(i, j, p4_s * current);
78 }
79 }
80 }
81}
82
The class provides the form factors for orbitally excited semileptonic decays.
void init()
Initializes module.
EvtHNLScalarL()
Default constructor.
virtual ~EvtHNLScalarL()
virtual destructor
EvtDecayBase * clone()
Clones module.
static constexpr double m_ProbMax
Maximum probability used for accept-reject generation.
void initProbMax()
Sets maximal probab.
std::string getName()
Returns name of module.
void decay(EvtParticle *p)
Creates a decay.
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.