Belle II Software development
EvtHNLBCL.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/EvtPDL.hh"
11#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
12#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
13#include <string>
14
15#include "generators/evtgen/EvtGenModelRegister.h"
16#include "generators/evtgen/models/EvtHNLBCL.h"
17#include "generators/evtgen/models/EvtBCLFF.h"
18#include "generators/evtgen/models/EvtHNLSemiLeptonicScalarAmp.h"
19#include "generators/evtgen/models/EvtHNLSemiLeptonicVectorAmp.h"
20
21
22namespace Belle2 {
27
30
31 EvtHNLBCL::EvtHNLBCL() : bclmodel(nullptr), calcamp(nullptr) {}
32
34 {
35 delete bclmodel;
36 bclmodel = nullptr;
37 delete calcamp;
38 calcamp = nullptr;
39 }
40
41 std::string EvtHNLBCL::getName()
42 {
43 return "HNLBCL";
44 }
45
46 EvtDecayBase* EvtHNLBCL::clone()
47 {
48 return new EvtHNLBCL;
49 }
50
51 void EvtHNLBCL::decay(EvtParticle* p)
52 {
53 p->initializePhaseSpace(getNDaug(), getDaugs());
54 calcamp->CalcAmp(p, _amp2, bclmodel);
55 }
56
57
59 {
60
61 EvtId parnum, mesnum, lnum, nunum;
62
63 parnum = getParentId();
64 mesnum = getDaug(0);
65 lnum = getDaug(1);
66 nunum = getDaug(2);
67
68 double mymaxprob = calcamp->CalcMaxProb(parnum, mesnum, lnum, nunum, bclmodel);
69
70 setProbMax(mymaxprob);
71 }
72
73
75 {
76
77 checkNDaug(3);
78
79 //We expect the parent to be a scalar
80 //and the daughters to be X lepton neutrino
81
82 checkSpinParent(EvtSpinType::SCALAR);
83 checkSpinDaughter(1, EvtSpinType::DIRAC);
84 checkSpinDaughter(2, EvtSpinType::DIRAC);
85
86 EvtSpinType::spintype mesontype = EvtPDL::getSpinType(getDaug(0));
87
88 bclmodel = new EvtBCLFF(getNArg(), getArgs());
89
90 if (mesontype == EvtSpinType::SCALAR) {
92 }
93 if (mesontype == EvtSpinType::VECTOR) {
95 }
96 // Tensor Meson implementation is possible here.
97
98 }
99
101}
102
BCL Form Factors.
Definition EvtBCLFF.h:21
The class provides the form factors for orbitally excited semileptonic decays.
Definition EvtHNLBCL.h:24
EvtSemiLeptonicAmp * calcamp
Pointers needed to calculate amplitude.
Definition EvtHNLBCL.h:55
EvtSemiLeptonicFF * bclmodel
Pointers needed for FFs.
Definition EvtHNLBCL.h:52
Amplitude calculator for semileptonic HNL scalar decays.
Amplitude calculator for semileptonic HNL Vector decays.
void init()
Initializes module.
Definition EvtHNLBCL.cc:74
virtual ~EvtHNLBCL()
virtual destructor
Definition EvtHNLBCL.cc:33
EvtDecayBase * clone()
Clones module.
Definition EvtHNLBCL.cc:46
void initProbMax()
Sets maximal probab.
Definition EvtHNLBCL.cc:58
std::string getName()
Returns name of module.
Definition EvtHNLBCL.cc:41
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
EvtHNLBCL()
Default constructor.
Definition EvtHNLBCL.cc:31
void decay(EvtParticle *p)
Creates a decay.
Definition EvtHNLBCL.cc:51
Abstract base class for different kinds of events.