9#include "EvtGenBase/EvtComplex.hh"
10#include "generators/evtgen/EvtBSemiTauonicDecayRateCalculator.h"
11#include "generators/evtgen/models/EvtBSemiTauonicHelicityAmplitudeCalculator.h"
17#include "Math/WrappedTF1.h"
18#include "Math/WrappedMultiTF1.h"
20#include "Math/GaussIntegrator.h"
21#include "Math/AdaptiveIntegratorMultiDim.h"
32 double mtau,
int tauhel,
int Dhel,
double w,
double costau)
34 EvtComplex temp = BSTD.
helAmp(mtau, tauhel, Dhel, w, costau);
35 std::complex<double> amp(real(temp), imag(temp));
37 return std::norm(amp) *
pf(BSTD, mtau, Dhel, w);
42 double mtau,
int tauhel,
int Dhel,
double w)
46 "EvtBSemiTauonicDecayRateCalculator",
"EvaluateByCostau");
47 f1.SetParameter(0, mtau);
48 f1.SetParameter(1, tauhel);
49 f1.SetParameter(2, Dhel);
50 f1.SetParameter(3, w);
51 ROOT::Math::WrappedTF1 wf1(f1);
53 ROOT::Math::GaussIntegrator ig;
55 return ig.Integral(-1, 1);
60 int tauhel,
int Dhel,
double costau)
64 "EvtBSemiTauonicDecayRateCalculator",
"EvaluateByW");
65 f1.SetParameter(0, mtau);
66 f1.SetParameter(1, tauhel);
67 f1.SetParameter(2, Dhel);
68 f1.SetParameter(3, costau);
69 ROOT::Math::WrappedTF1 wf1(f1);
71 ROOT::Math::GaussIntegrator ig;
73 return ig.Integral(BSTD.
wmin(), BSTD.
wmax(mtau, Dhel));
78 double mtau,
int tauhel,
int Dhel)
82 BSTD.
wmin(), BSTD.
wmax(mtau, Dhel), -1, 1, 3,
83 "EvtBSemiTauonicDecayRateCalculator",
"EvaluateBy2D");
84 f1.SetParameter(0, mtau);
85 f1.SetParameter(1, tauhel);
86 f1.SetParameter(2, Dhel);
87 ROOT::Math::WrappedMultiTF1 wf1(f1);
90 ROOT::Math::AdaptiveIntegratorMultiDim ig;
92 double xmin[] = {BSTD.
wmin(), -1};
93 double xmax[] = {BSTD.
wmax(mtau, Dhel), 1};
94 return ig.Integral(xmin, xmax);
101 sum +=
Gamma(BSTD, mtau, -1, 2);
102 sum +=
Gamma(BSTD, mtau, +1, 2);
109 for (
int Dhel = -1; Dhel <= 1; Dhel++) {
110 sum +=
Gamma(BSTD, mtau, -1, Dhel);
111 sum +=
Gamma(BSTD, mtau, +1, Dhel);
127 sum +=
Gamma(SM, mlep, -1, 2);
128 sum +=
Gamma(SM, mlep, +1, 2);
141 for (
int Dhel = -1; Dhel <= 1; Dhel++) {
142 sum +=
Gamma(SM, mlep, -1, Dhel);
143 sum +=
Gamma(SM, mlep, +1, Dhel);
153 sum +=
Gamma(BSTD, mtau, -1, 2);
154 sum +=
Gamma(BSTD, mtau, +1, 2);
162 for (
int Dhel = -1; Dhel <= 1; Dhel++) {
163 sum +=
Gamma(BSTD, mtau, -1, Dhel);
164 sum +=
Gamma(BSTD, mtau, +1, Dhel);
172 double left(0), right(0);
173 left +=
Gamma(BSTD, mtau, -1, 2);
174 right +=
Gamma(BSTD, mtau, +1, 2);
175 return (right - left) / (right + left);
179 double left(0), right(0);
180 for (
int Dhel = -1; Dhel <= 1; Dhel++) {
181 left +=
Gamma(BSTD, mtau, -1, Dhel);
182 right +=
Gamma(BSTD, mtau, +1, Dhel);
184 return (right - left) / (right + left);
189 double transverse(0), longitudinal(0);
190 transverse +=
Gamma(BSTD, mtau, -1, -1);
191 transverse +=
Gamma(BSTD, mtau, +1, -1);
192 transverse +=
Gamma(BSTD, mtau, -1, +1);
193 transverse +=
Gamma(BSTD, mtau, +1, +1);
194 longitudinal +=
Gamma(BSTD, mtau, -1, 0);
195 longitudinal +=
Gamma(BSTD, mtau, +1, 0);
196 return longitudinal / (longitudinal + transverse);
202 return 1. / (2 * BSTD.
getMB()) * BSTD.
getMB() * BSTD.
getMB() * BSTD.
r(Dhel) * BSTD.
r(Dhel)
203 * BSTD.
v(mtau, BSTD.
q2(Dhel, w)) * BSTD.
v(mtau, BSTD.
q2(Dhel, w))
204 *
sqrt(w * w - 1) / (64 * M_PI * M_PI * M_PI);
const EvtBSemiTauonicHelicityAmplitudeCalculator * m_BSTD
temporal pointer to the helicity amplitude calculator for EvaluateBy* functions
The class calculates the helicity amplitude of semi-tauonic B decays including new physics effects ba...
void setCV1(const EvtComplex &v)
Sets the Wilson coeffcient CV1.
double getMB() const
Returns the parent (B) meson mass.
void setCT(const EvtComplex &v)
Sets the Wilson coeffcient CT.
double wmin() const
Minimum value of the velocity transfer variable w.
void setCV2(const EvtComplex &v)
Sets the Wilson coeffcient CV2.
void setCS2(const EvtComplex &v)
Sets the Wilson coeffcient CS2.
double wmax(double mtau, int Dhel) const
Maximum value of the velocity transfer variable w.
void setCS1(const EvtComplex &v)
Sets the Wilson coeffcient CS1.
double r(int Dhel) const
Ratio of the daughter meson mass to the parent meson.
double EvaluateByCostau(double *x, double *param)
Function used internally for numerical integration.
EvtComplex helAmp(double mtau, int tauhel, int Dhel, double w, double costau) const
The function calculates the helicity amplitude.
double EvaluateByW(double *x, double *param)
Function used internally for numerical integration.
double v(double mtau, double q2) const
Function to calculate the tau velocity.
double dGammadwdcostau(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double w, double costau)
Function calculates the differential decay rate dGamma/dw/dcostau.
double RGammaD(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau, const double mlep=0.0005110)
Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D).
double PDstar(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
Function calculates the polarization of D*, longitudinal/(longitudinal + transverse),...
double GammaDstar(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau)
Function calculates the differential decay rate Gamma for D*taunu decay, integrated for w and costau ...
double dGammadw(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double w)
Function calculates the differential decay rate dGamma/dw, integrated for costau.
double GammaSMD(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mlep=0.0005110)
Function calculates the SM decay rate Gamma for Dlnu decay, integrated for w and costau and summed fo...
double RGammaDstar(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau, const double mlep=0.0005110)
Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D*).
double Gamma(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel)
Function calculates the helicity dependent decay rate Gamma, integrated for w and costau.
double PtauDstar(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->D*taunu decay.
double PtauD(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->Dtaunu decay.
double GammaSMDstar(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mlep=0.0005110)
Function calculates the SM decay rate Gamma for D*lnu decay, integrated for w and costau and summed f...
double sqrt(double a)
sqrt for double
double dGammadcostau(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double costau)
Function calculates the differential decay rate dGamma/dcostau, integrated for w.
double pf(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int Dhel, double w)
Phase space factor, which is multiplied to the helicity amplitude to calculate the decay rate.
double EvaluateBy2D(double *x, double *param)
Function used internally for numerical integration.
double GammaD(const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau)
Function calculates the decay rate Gamma for Dtaunu decay, integrated for w and costau and summed for...
double q2(int Dhel, double w) const
Function to calculate the q^2 of the decay (square of l+nu invariant mass).
Abstract base class for different kinds of events.