21 using namespace complex_literals;
25 namespace MD = MultiDimensional;
27 AmplBDLepNu::AmplBDLepNu() {
30 vector<IndexType> dims{{11, 4, 2, 2, 2}};
31 string name{
"AmplBDLepNu"};
32 addProcessSignature(PID::BPLUS, {-PID::D0, PID::NU_TAU, PID::ANTITAU});
35 addProcessSignature(PID::BZERO, {PID::DMINUS, PID::NU_TAU, PID::ANTITAU});
38 addProcessSignature(PID::BPLUS, {-PID::D0, PID::NU_MU, PID::ANTIMUON});
41 addProcessSignature(PID::BZERO, {PID::DMINUS, PID::NU_MU, PID::ANTIMUON});
44 addProcessSignature(PID::BPLUS, {-PID::D0, PID::NU_E, PID::POSITRON});
47 addProcessSignature(PID::BZERO, {PID::DMINUS, PID::NU_E, PID::POSITRON});
51 addProcessSignature(PID::BS, {PID::DSMINUS, PID::NU_TAU, PID::ANTITAU});
54 addProcessSignature(PID::BS, {PID::DSMINUS, PID::NU_MU, PID::ANTIMUON});
57 addProcessSignature(PID::BS, {PID::DSMINUS, PID::NU_E, PID::POSITRON});
72 const double Mb = pBmes.
mass();
73 const double Mb2 = Mb*Mb;
74 const double Md = pDmes.
mass();
75 const double Md2 = Md*Md;
76 const double Mt = pTau.
mass();
77 const double Sqq = Mb2 + Md2 - 2. * (pBmes * pDmes);
78 const double sqSqq = sqrt(Sqq);
79 const double Ew = (Mb2 - Md2 + Sqq) / (2 * Mb);
80 const double Pw = sqrt(Ew*Ew - Sqq);
81 const double BNuTau = (pBmes * kNuTau);
82 const double NuTauQ = (pBmes * kNuTau) - (pDmes * kNuTau);
83 const double BQ = Mb2 - (pBmes * pDmes);
86 const double CosTt = -((Ew * (Sqq * BNuTau - NuTauQ * BQ)) / (sqrt(Ew*Ew - Sqq) * NuTauQ * BQ));
87 const double SinTt = sqrt(1. - CosTt*CosTt);
97 t.
element({0, 1, 0, 0, 0}) = ((-Mb2 + Md2)*Mt)/(2.*Sqq);
98 t.
element({0, 2, 0, 0, 0}) = (Mb*Mt*Pw*CosTt)/Sqq;
99 t.
element({1, 0, 0, 0, 0}) = 0.5;
100 t.
element({3, 0, 0, 0, 0}) = 0.5;
101 t.
element({5, 1, 0, 0, 0}) = ((-Mb2 + Md2)*Mt)/(2.*Sqq);
102 t.
element({5, 2, 0, 0, 0}) = (Mb*Mt*Pw*CosTt)/Sqq;
103 t.
element({7, 1, 0, 0, 0}) = ((-Mb2 + Md2)*Mt)/(2.*Sqq);
104 t.
element({7, 2, 0, 0, 0}) = (Mb*Mt*Pw*CosTt)/Sqq;
105 t.
element({9, 3, 0, 0, 0}) = -4.*Mb*Pw*CosTt;
106 t.
element({0, 2, 0, 0, 1}) = -((Mb*Pw*SinTt)/sqSqq);
107 t.
element({5, 2, 0, 0, 1}) = -((Mb*Pw*SinTt)/sqSqq);
108 t.
element({7, 2, 0, 0, 1}) = -((Mb*Pw*SinTt)/sqSqq);
109 t.
element({9, 3, 0, 0, 1}) = (4.*Mb*Mt*Pw*SinTt)/sqSqq;
110 t.
element({6, 2, 1, 1, 0}) = -((Mb*Pw*SinTt)/sqSqq);
111 t.
element({8, 2, 1, 1, 0}) = -((Mb*Pw*SinTt)/sqSqq);
112 t.
element({10, 3, 1, 1, 0}) = (4.*Mb*Mt*Pw*SinTt)/sqSqq;
113 t.
element({2, 0, 1, 1, 1}) = -0.5;
114 t.
element({4, 0, 1, 1, 1}) = -0.5;
115 t.
element({6, 1, 1, 1, 1}) = ((Mb2 - Md2)*Mt)/(2.*Sqq);
116 t.
element({6, 2, 1, 1, 1}) = -((Mb*Mt*Pw*CosTt)/Sqq);
117 t.
element({8, 1, 1, 1, 1}) = ((Mb2 - Md2)*Mt)/(2.*Sqq);
118 t.
element({8, 2, 1, 1, 1}) = -((Mb*Mt*Pw*CosTt)/Sqq);
119 t.
element({10, 3, 1, 1, 1}) = 4.*Mb*Pw*CosTt;
124 void AmplBDLepNu::addRefs()
const {
125 if(!getSettingsHandler()->checkReference(
"Ligeti:2016npd")){
127 "@article{Ligeti:2016npd,\n"
128 " author = \"Ligeti, Zoltan and Papucci, Michele and Robinson, Dean J.\",\n"
129 " title = \"{New Physics in the Visible Final States of $B\\to D^{(*)}\\tau\\nu$}\",\n"
130 " journal = \"JHEP\",\n"
131 " volume = \"01\",\n"
132 " year = \"2017\",\n"
133 " pages = \"083\",\n"
134 " doi = \"10.1007/JHEP01(2017)083\",\n"
135 " eprint = \"1610.02045\",\n"
136 " archivePrefix = \"arXiv\",\n"
137 " primaryClass = \"hep-ph\",\n"
138 " SLACcitation = \"%%CITATION = ARXIV:1610.02045;%%\"\n"
140 getSettingsHandler()->addReference(
"Ligeti:2016npd", ref);
TensorData makeEmptySparse(const IndexList &dimensions, const LabelsList &labels)
std::complex< double > & element(const IndexList &indices={})
access an element given its indices
Tensor indices label definitions.
double mass() const
returns the invariant mass if the invariant mass squared is negative returns
std::vector< Particle > ParticleList
Sparse tensor data container.
Multidimensional tensor class with complex numbers as elements.
void clearData()
sets all the elements to 0
const FourMomentum & momentum() const
Various numerical constants.
Hammer particle data class.
static constexpr double TwoSqTwoGFermi