Belle II Software prerelease-11-00-00a
EvtHNLHQET3.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 <string>
12
13#include <generators/evtgen/EvtGenModelRegister.h>
14#include <generators/evtgen/models/EvtHNLHQET3.h>
15#include <generators/evtgen/models/EvtHQET3FF.h>
16#include <generators/evtgen/models/EvtHNLSemiLeptonicScalarAmp.h>
17#include <generators/evtgen/models/EvtHNLSemiLeptonicVectorAmp.h>
18
20
21using std::endl;
22
27
29{
30 delete hqetffmodel;
31 hqetffmodel = 0;
32 delete calcamp;
33 calcamp = 0;
34}
35
37{
38
39 return "HNLHQET3";
40
41}
42
43
44
45EvtDecayBase* EvtHNLHQET3::clone()
46{
47
48 return new EvtHNLHQET3;
49
50}
51
52
53void EvtHNLHQET3::decay(EvtParticle* p)
54{
55
56 p->initializePhaseSpace(getNDaug(), getDaugs());
57 calcamp->CalcAmp(p, _amp2, hqetffmodel);
58
59}
60
62{
63
64 EvtId parnum, mesnum, lnum, nunum;
65
66 parnum = getParentId();
67 mesnum = getDaug(0);
68 lnum = getDaug(1);
69 nunum = getDaug(2);
70
71 double mymaxprob = calcamp->CalcMaxProb(parnum, mesnum,
72 lnum, nunum, hqetffmodel);
73
74 // Leptons
75 static EvtId EM = EvtPDL::getId("e-");
76 static EvtId EP = EvtPDL::getId("e+");
77 static EvtId MUM = EvtPDL::getId("mu-");
78 static EvtId MUP = EvtPDL::getId("mu+");
79 static EvtId TAUM = EvtPDL::getId("tau-");
80 static EvtId TAUP = EvtPDL::getId("tau+");
81
82 if (lnum == EP || lnum == EM || lnum == MUP || lnum == MUM) {
83 setProbMax(mymaxprob);
84 return;
85 }
86 if (lnum == TAUP || lnum == TAUM) {
87 setProbMax(6500);
88 return;
89 }
90
91
92
93}
94
95
97{
98
99 checkNDaug(3);
100
101 //We expect the parent to be a scalar
102 //and the daughters to be X lepton neutrino
103 checkSpinParent(EvtSpinType::SCALAR);
104
105 checkSpinDaughter(1, EvtSpinType::DIRAC);
106 checkSpinDaughter(2, EvtSpinType::DIRAC);
107
108 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
109 if (d1type == EvtSpinType::SCALAR) {
110 if (getNArg() == 3) {
111 hqetffmodel = new EvtHQET3FF(getArg(0), getArg(1), getArg(2));
113 } else {
114 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "HNLHQET3 model for scalar meson daughters needs 2 arguments. Sorry." << endl;
115 ::abort();
116 }
117 } else if (d1type == EvtSpinType::VECTOR) {
118 if (getNArg() == 5) {
119 hqetffmodel = new EvtHQET3FF(getArg(0), getArg(1), getArg(2), getArg(3), getArg(4));
121 } else {
122 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "HNLHQET3 model for vector meson daughtersneeds 4 arguments. Sorry." << endl;
123 ::abort();
124 }
125 } else {
126 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "HNLHQET3 model handles only scalar and vector meson daughters. Sorry." << endl;
127 ::abort();
128 }
129
130
131}
132
The class provides the form factors for orbitally excited semileptonic decays.
Definition EvtHNLHQET3.h:19
EvtSemiLeptonicAmp * calcamp
Pointers needed to calculate amplitude.
Definition EvtHNLHQET3.h:50
void init()
Initializes module.
virtual ~EvtHNLHQET3()
virtual destructor
EvtHNLHQET3()
Default constructor.
EvtSemiLeptonicFF * hqetffmodel
Pointers needed for FFs.
Definition EvtHNLHQET3.h:47
EvtDecayBase * clone()
Clones module.
void initProbMax()
Sets maximal probab.
std::string getName()
Returns name of module.
void decay(EvtParticle *p)
Creates a decay.
Amplitude calculator for semileptonic HNL scalar decays.
Amplitude calculator for semileptonic HNL Vector decays.
The class provides the form factors for semileptonic D & D* decays with full mass dependence.
Definition EvtHQET3FF.h:17
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.