12 #include "EvtGenBase/EvtParticle.hh"
13 #include "EvtGenBase/EvtPDL.hh"
17 #include "framework/logging/Logger.h"
19 #include "generators/evtgen/EvtGenModelRegister.h"
20 #include "generators/evtgen/models/EvtBSemiTauonic2HDMType2.h"
21 #include "generators/evtgen/models/EvtBSemiTauonicHelicityAmplitudeCalculator.h"
22 #include "generators/evtgen/models/EvtBSemiTauonicVectorMesonAmplitude.h"
23 #include "generators/evtgen/models/EvtBSemiTauonicScalarMesonAmplitude.h"
44 return "BSTD_2HDMTYPE2";
57 p->initializePhaseSpace(getNDaug(), getDaugs());
63 EvtId parnum, mesnum, lnum, nunum;
65 parnum = getParentId();
74 B2INFO(
"EvtBSemiTauonic2HDMType2::initProbMax()>> maxprob: " << maxprob);
86 checkSpinParent(EvtSpinType::SCALAR);
88 checkSpinDaughter(1, EvtSpinType::DIRAC);
89 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
91 const double m_tau = EvtPDL::getMeanMass(getDaug(1));
93 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
95 if (d1type == EvtSpinType::VECTOR) {
96 B2INFO(
"EvtBSemiTauonic2HDMType2::init()>> Initializing for decays to a vector type meson ");
99 const double rhoa12 = getArg(0);
100 const double R11 = getArg(1);
101 const double R21 = getArg(2);
102 const double aR3 = getArg(3);
104 const double rho12 = 0;
105 const double aS1 = 0;
107 EvtComplex Coeffs[5];
109 const double m_b = getArg(4);
110 const double m_c = getArg(5);
111 const double tanBetaOverMH = getArg(6);
112 B2INFO(
"tan(beta)/m_H+ = " << tanBetaOverMH);
116 Coeffs[2] = -m_b * m_tau * tanBetaOverMH * tanBetaOverMH;
120 if (getNArg() == 8) {
122 const double m_H = getArg(7);
123 Coeffs[3] = -m_c * m_tau / m_H / m_H;
127 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
128 EvtPDL::getMeanMass(getParentId()),
130 EvtPDL::getMeanMass(getDaug(0)));
132 }
else if (d1type == EvtSpinType::SCALAR) {
133 B2INFO(
"EvtBSemiTauonic2HDMType2::init()>> Initializing for decays to a scalar type meson ");
136 const double rho12 = getArg(0);
137 const double aS1 = getArg(1);
139 const double rhoa12 = 0;
140 const double R11 = 0;
141 const double R21 = 0;
142 const double aR3 = 0;
144 EvtComplex Coeffs[5];
146 const double m_b = getArg(2);
147 const double m_c = getArg(3);
148 const double tanBetaOverMH = getArg(4);
149 B2INFO(
"tan(beta)/m_H+ = " << tanBetaOverMH);
153 Coeffs[2] = -m_b * m_tau * tanBetaOverMH * tanBetaOverMH;
157 if (getNArg() == 6) {
159 const double m_H = getArg(5);
160 Coeffs[3] = -m_c * m_tau / m_H / m_H;
163 m_CalcHelAmp =
new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
164 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
165 EvtPDL::getMeanMass(getParentId()),
166 EvtPDL::getMeanMass(getDaug(0)),
168 m_CalcAmp =
new EvtBSemiTauonicScalarMesonAmplitude();
170 B2ERROR(
"BSemiTauonic2HDMType2 model handles only scalar and vector meson daughters.");