12 #include "EvtGenBase/EvtParticle.hh"
13 #include "EvtGenBase/EvtPDL.hh"
18 #include "framework/logging/Logger.h"
19 #include <generators/evtgen/EvtGenModelRegister.h>
20 #include "generators/evtgen/models/EvtBSemiTauonic.h"
21 #include "generators/evtgen/models/EvtBSemiTauonicHelicityAmplitudeCalculator.h"
22 #include "generators/evtgen/models/EvtBSemiTauonicVectorMesonAmplitude.h"
23 #include "generators/evtgen/models/EvtBSemiTauonicScalarMesonAmplitude.h"
36 EvtBSemiTauonic::~EvtBSemiTauonic()
38 if (m_CalcHelAmp)
delete m_CalcHelAmp;
39 if (m_CalcAmp)
delete m_CalcAmp;
42 std::string EvtBSemiTauonic::getName()
49 EvtDecayBase* EvtBSemiTauonic::clone()
55 void EvtBSemiTauonic::decay(EvtParticle* p)
57 p->initializePhaseSpace(getNDaug(), getDaugs());
58 m_CalcAmp->CalcAmp(p, _amp2, m_CalcHelAmp);
61 void EvtBSemiTauonic::initProbMax()
63 EvtId parnum, mesnum, lnum, nunum;
65 parnum = getParentId();
70 double maxprob = m_CalcAmp->CalcMaxProb(parnum, mesnum,
74 B2INFO(
"EvtBSemiTauonic::initProbMax()>> maxprob: " << maxprob);
80 void EvtBSemiTauonic::init()
86 checkSpinParent(EvtSpinType::SCALAR);
88 checkSpinDaughter(1, EvtSpinType::DIRAC);
89 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
91 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
93 if (d1type == EvtSpinType::VECTOR) {
94 B2INFO(
"EvtBSemiTauonic::init()>> Initializing for decays to a vector type meson ");
96 const double rhoa12 = getArg(0);
97 const double R11 = getArg(1);
98 const double R21 = getArg(2);
99 const double aR3 = getArg(3);
101 const double rho12 = 0;
102 const double aS1 = 0;
104 const double m_b = getArg(4);
105 const double m_c = getArg(5);
107 EvtComplex Coeffs[5];
108 Coeffs[0] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
109 Coeffs[1] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
110 Coeffs[2] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
111 Coeffs[3] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
112 Coeffs[4] = EvtComplex(getArg(14) * cos(getArg(15)), getArg(14) * sin(getArg(15)));
115 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
116 EvtPDL::getMeanMass(getParentId()),
118 EvtPDL::getMeanMass(getDaug(0)));
120 }
else if (d1type == EvtSpinType::SCALAR) {
121 B2INFO(
"EvtBSemiTauonic::init()>> Initializing for decays to a scalar type meson ");
123 const double rho12 = getArg(0);
124 const double aS1 = getArg(1);
126 const double rhoa12 = 0;
127 const double R11 = 0;
128 const double R21 = 0;
129 const double aR3 = 0;
131 const double m_b = getArg(2);
132 const double m_c = getArg(3);
134 EvtComplex Coeffs[5];
135 Coeffs[0] = EvtComplex(getArg(4) * cos(getArg(5)), getArg(4) * sin(getArg(5)));
136 Coeffs[1] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
137 Coeffs[2] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
138 Coeffs[3] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
139 Coeffs[4] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
142 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
143 EvtPDL::getMeanMass(getParentId()),
144 EvtPDL::getMeanMass(getDaug(0)),
148 B2ERROR(
"BSemiTauonic model handles only scalar and vector meson daughters.");