9#include <generators/evtgen/EvtGenModelRegister.h>
11#include "EvtGenBase/EvtPatches.hh"
16#include "EvtGenBase/EvtParticle.hh"
17#include "EvtGenBase/EvtPDL.hh"
18#include "EvtGenBase/EvtGenKine.hh"
19#include "EvtGenBase/EvtDiracSpinor.hh"
20#include "EvtGenBase/EvtTensor4C.hh"
21#include "EvtGenBase/EvtReport.hh"
22#include "EvtGenBase/EvtVector4C.hh"
24#include "generators/evtgen/models/EvtKstarnunu_REV.h"
41 return "KSTARNUNU_REV";
52 static EvtId NUE = EvtPDL::getId(
"nu_e");
53 static EvtId NUM = EvtPDL::getId(
"nu_mu");
54 static EvtId NUT = EvtPDL::getId(
"nu_tau");
55 static EvtId NUEB = EvtPDL::getId(
"anti-nu_e");
56 static EvtId NUMB = EvtPDL::getId(
"anti-nu_mu");
57 static EvtId NUTB = EvtPDL::getId(
"anti-nu_tau");
59 p->initializePhaseSpace(getNDaug(), getDaugs());
61 double m_b = p->mass();
63 EvtParticle* meson, * neutrino1, * neutrino2;
64 meson = p->getDaug(0);
65 neutrino1 = p->getDaug(1);
66 neutrino2 = p->getDaug(2);
67 EvtVector4R momnu1 = neutrino1->getP4();
68 EvtVector4R momnu2 = neutrino2->getP4();
69 EvtVector4R momkstar = meson->getP4();
71 EvtVector4R q = momnu1 + momnu2;
72 double q2 = q.mass2();
74 double m_k = meson->mass();
76 EvtVector4R p4b; p4b.set(m_b, 0., 0., 0.);
82 double tp = (m_b + m_k) * (m_b + m_k);
83 double tm = (m_b - m_k) * (m_b - m_k);
84 double t0 = tp * (1 -
sqrt(1 - tm / tp));
85 double z = (
sqrt(tp - q2) -
sqrt(tp - t0)) / (
sqrt(tp - q2) +
sqrt(tp - t0));
89 double alpha0_v0 = 0.38;
90 double alpha1_v0 = -1.17;
91 double alpha2_v0 = 2.42;
93 double v0 = (1 / (1 - q2 / (mR_v0 * mR_v0))) * (alpha0_v0 + alpha1_v0 * (z - z0) + alpha2_v0 * (z - z0) * (z - z0));
96 double alpha0_A1 = 0.3;
97 double alpha1_A1 = 0.39;
98 double alpha2_A1 = 1.19;
100 double A1 = (1 / (1 - q2 / (mR_A1 * mR_A1))) * (alpha0_A1 + alpha1_A1 * (z - z0) + alpha2_A1 * (z - z0) * (z - z0));
103 double alpha0_A12 = 0.27;
104 double alpha1_A12 = 0.53;
105 double alpha2_A12 = 0.48;
106 double mR_A12 = 5.829;
107 double A12 = (1 / (1 - q2 / (mR_A12 * mR_A12))) * (alpha0_A12 + alpha1_A12 * (z - z0) + alpha2_A12 * (z - z0) * (z - z0));
110 double lambda = (tp - q2) * (tm - q2);
113 double A2 = ((m_b + m_k) * (m_b + m_k) * (m_b * m_b - m_k * m_k - q2) * A1 - A12 * 16 * m_b * m_k * m_k * (m_b + m_k)) / lambda;
123 EvtTensor4C tds = (-2 * v0 / (m_b + m_k)) * dual(EvtGenFunctions::directProd(p4b, momkstar))
124 - EvtComplex(0.0, 1.0) *
125 ((m_b + m_k) * A1 * EvtTensor4C::g()
126 - (A2 / (m_b + m_k)) * EvtGenFunctions::directProd(p4b - momkstar, p4b + momkstar));
130 if (getDaug(1) == NUE || getDaug(1) == NUM || getDaug(1) == NUT) {
131 l = EvtLeptonVACurrent(neutrino1->spParentNeutrino(),
132 neutrino2->spParentNeutrino());
134 if (getDaug(1) == NUEB || getDaug(1) == NUMB || getDaug(1) == NUTB) {
135 l = EvtLeptonVACurrent(neutrino2->spParentNeutrino(),
136 neutrino1->spParentNeutrino());
139 EvtVector4C et0, et1, et2;
140 et0 = tds.cont1(meson->epsParent(0).conj());
141 et1 = tds.cont1(meson->epsParent(1).conj());
142 et2 = tds.cont1(meson->epsParent(2).conj());
162 checkSpinParent(EvtSpinType::SCALAR);
164 checkSpinDaughter(0, EvtSpinType::VECTOR);
165 checkSpinDaughter(1, EvtSpinType::NEUTRINO);
166 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
The evtgen model to produce B-> Kstar nu nubar decay sample.
EvtKstarnunu_REV()
Constructor.
void init()
The function for an initialization.
virtual ~EvtKstarnunu_REV()
Destructor.
EvtDecayBase * clone()
The function which makes a copy of the model.
void initProbMax()
The function to sets a maximum probability.
std::string getName()
The function which returns the name of the model.
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
double sqrt(double a)
sqrt for double
void decay(EvtParticle *p)
The function to calculate a quark decay amplitude.
Abstract base class for different kinds of events.