21 using namespace complex_literals;
25 namespace MD = MultiDimensional;
27 AmplBDstarDPiLepNu::AmplBDstarDPiLepNu() {
29 vector<IndexType> dims{{11, 8, 2, 2, 2}};
30 string name{
"AmplBDstarDPiLepNu"};
31 addProcessSignature(PID::BPLUS, {-PID::DSTAR, PID::NU_TAU, PID::ANTITAU}, {-PID::D0, PID::PI0});
34 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_TAU, PID::ANTITAU}, {PID::DMINUS, PID::PI0});
37 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_TAU, PID::ANTITAU}, {-PID::D0, PID::PIMINUS});
40 addProcessSignature(PID::BPLUS, {-PID::DSTAR, PID::NU_MU, PID::ANTIMUON}, {-PID::D0, PID::PI0});
43 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_MU, PID::ANTIMUON}, {PID::DMINUS, PID::PI0});
46 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_MU, PID::ANTIMUON}, {-PID::D0, PID::PIMINUS});
49 addProcessSignature(PID::BPLUS, {-PID::DSTAR, PID::NU_E, PID::POSITRON}, {-PID::D0, PID::PI0});
52 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_E, PID::POSITRON}, {PID::DMINUS, PID::PI0});
55 addProcessSignature(PID::BZERO, {PID::DSTARMINUS, PID::NU_E, PID::POSITRON}, {-PID::D0, PID::PIMINUS});
59 addProcessSignature(PID::BS, {PID::DSSTARMINUS, PID::NU_TAU, PID::ANTITAU}, {PID::DSMINUS, PID::PI0});
62 addProcessSignature(PID::BS, {PID::DSSTARMINUS, PID::NU_MU, PID::ANTIMUON}, {PID::DSMINUS, PID::PI0});
65 addProcessSignature(PID::BS, {PID::DSSTARMINUS, PID::NU_E, PID::POSITRON}, {PID::DSMINUS, PID::PI0});
82 const double Mb = pBmes.
mass();
83 const double Mb2 = Mb*Mb;
84 const double Mds = pDstarmes.
mass();
85 const double Mds2 = Mds*Mds;
86 const double Mt = pTau.
mass();
87 const double Md = pDmes.
mass();
88 const double Md2 = Md*Md;
89 const double Mp = pPion.
mass();
90 const double Mp2 = Mp*Mp;
91 const double Sqq = Mb2 + Mds2 - 2. * (pBmes * pDstarmes);
92 const double sqSqq = sqrt(Sqq);
93 const double Ew = (Mb2 - Mds2 + Sqq) / (2 * Mb);
94 const double Eds = (Mb2 + Mds2 - Sqq) / (2 * Mb);
95 const double Pw = sqrt(Ew*Ew - Sqq);
96 const double Pw2 = Pw*Pw;
97 const double BNuTau = (pBmes * kNuTau);
98 const double NuTauQ = (pBmes * kNuTau) - (pDstarmes * kNuTau);
99 const double BQ = Mb2 - (pBmes * pDstarmes);
100 const double Ed = (Mds2 + Md2 - Mp2) / (2. * Mds);
101 const double Ep = (Mds2 - Md2 + Mp2) / (2. * Mds);
102 const double Pp = sqrt(Ed*Ed - Md2);
103 const double DstarQ = pDstarmes * pBmes - Mds2;
104 const double PionQ = (pPion * pBmes) - (pPion * pDstarmes);
106 const double PionNuTau = (pPion * kNuTau);
107 const double TauNuTau = (pTau * kNuTau);
108 const double epsBDPiNuTau =
epsilon(pBmes, pDmes, pPion, kNuTau);
111 const double CosTe = (Eds * Ep * Ew + Ep * Pw*Pw - Mds * PionQ) / (Mb * Pp * Pw);
112 const double SinTe = sqrt(1. - CosTe*CosTe);
115 const double CscTe = 1. / SinTe;
117 const double CosTt = -((Ew * (Sqq * BNuTau - NuTauQ * BQ)) / (sqrt(Ew*Ew - Sqq) * NuTauQ * BQ));
118 const double SinTt = sqrt(1. - CosTt*CosTt);
119 const double CscTt = 1. / SinTt;
122 const double CosTtHalfSq = (1. + CosTt) / 2.;
123 const double SinTtHalfSq = (1. - CosTt) / 2.;
125 const double CosPePt = -(CscTe * CscTt) / (Mds * Pp * sqSqq * NuTauQ) *
126 (Ep * (Sqq * BNuTau - NuTauQ * BQ) - Mds * (Sqq * PionNuTau - NuTauQ * PionQ) +
127 Pp * CosTe * CosTt * DstarQ * NuTauQ);
128 const double SinPePt = (sqSqq * CscTe * CscTt * epsBDPiNuTau) / (Mb * Pp * Pw * TauNuTau);
129 const complex<double> ExpIPePt = CosPePt + 1i * SinPePt;
132 const complex<double> Dpl = SinTe * (CosTtHalfSq / ExpIPePt + ExpIPePt * SinTtHalfSq);
133 const complex<double> Dplc = SinTe * (CosTtHalfSq * ExpIPePt + SinTtHalfSq / ExpIPePt);
134 const complex<double> Dmi = SinTe * (CosTtHalfSq / ExpIPePt - ExpIPePt * SinTtHalfSq);
135 const complex<double> Dmic = SinTe * (CosTtHalfSq * ExpIPePt - SinTtHalfSq / ExpIPePt);
136 const complex<double> Dze = CosTe * SinTt;
138 const double Epl = CosTe * CosTt;
139 const double EmiR = SinTe * SinTt * CosPePt;
140 const double EmiI = SinTe * SinTt * SinPePt;
141 const double Eze = CosTe;
143 const double TwoSqTwoGfSqPp =
TwoSqTwoGFermi * sqrt(Sqq - Mt*Mt) * Pp;
145 const double gPiOnSqrt2MGam = sqrt(3.*
pi*Mds/pow(Pp,3.));
152 t.
element({0, 1, 0, 0, 0}) = Mt * ((Eze * Mb * Pw)/(Mds * Sqq) - EmiR/sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/(2. * Mds * Sqq));
153 t.
element({0, 2, 0, 0, 0}) = (2i * EmiI * Mb * Mt * Pw)/sqSqq;
154 t.
element({0, 3, 0, 0, 0}) = (Eze * Mb * Mt * Pw)/Mds;
155 t.
element({0, 4, 0, 0, 0}) = -(Mb * Mt * Pw * ((Eze * (-Mb2 + Mds2))/(Mds * Sqq) + (2. * Epl * Mb * Pw)/(Mds * Sqq)));
156 t.
element({1, 0, 0, 0, 0}) = -((Eze * Mb * Pw)/Mds);
157 t.
element({3, 0, 0, 0, 0}) = (Eze * Mb * Pw)/Mds;
158 t.
element({5, 1, 0, 0, 0}) = -(Mt * ((Eze * Mb * Pw)/(Mds * Sqq) - EmiR/sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/(2. * Mds * Sqq)));
159 t.
element({5, 2, 0, 0, 0}) = (2i * EmiI * Mb * Mt * Pw)/sqSqq;
160 t.
element({5, 3, 0, 0, 0}) = -((Eze * Mb * Mt * Pw)/Mds);
161 t.
element({5, 4, 0, 0, 0}) = Mb * Mt * Pw * ((Eze * (-Mb2 + Mds2))/(Mds * Sqq) + (2. * Epl * Mb * Pw)/(Mds * Sqq));
162 t.
element({7, 1, 0, 0, 0}) = Mt * ((Eze * Mb * Pw)/(Mds * Sqq) - EmiR/sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/(2. * Mds * Sqq));
163 t.
element({7, 2, 0, 0, 0}) = (2i * EmiI * Mb * Mt * Pw)/sqSqq;
164 t.
element({7, 3, 0, 0, 0}) = (Eze * Mb * Mt * Pw)/Mds;
165 t.
element({7, 4, 0, 0, 0}) = -(Mb * Mt * Pw * ((Eze * (-Mb2 + Mds2))/(Mds * Sqq) + (2. * Epl * Mb * Pw)/(Mds * Sqq)));
166 t.
element({9, 5, 0, 0, 0}) = (8. * Epl * Mb2 * Pw2)/Mds;
167 t.
element({9, 6, 0, 0, 0}) = -2. * (-2. * EmiR * sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/Mds);
168 t.
element({9, 7, 0, 0, 0}) = 2. * ((Epl * (Mb2 + 3. * Mds2 - Sqq))/Mds + (2. * EmiR * (Mb2 - Mds2))/sqSqq + (4i * EmiI * Mb * Pw)/sqSqq);
169 t.
element({0, 1, 0, 0, 1}) = -Dmi - (Dze * (-Mb2 + Mds2 + Sqq))/(2. * Mds * sqSqq);
170 t.
element({0, 2, 0, 0, 1}) = -2. * Dpl * Mb * Pw;
171 t.
element({0, 4, 0, 0, 1}) = (2. * Dze * Mb2 * Pw2)/(Mds * sqSqq);
172 t.
element({5, 1, 0, 0, 1}) = Dmi + (Dze * (-Mb2 + Mds2 + Sqq))/(2. * Mds * sqSqq);
173 t.
element({5, 2, 0, 0, 1}) = -2. * Dpl * Mb * Pw;
174 t.
element({5, 4, 0, 0, 1}) = (-2. * Dze * Mb2 * Pw2)/(Mds * sqSqq);
175 t.
element({7, 1, 0, 0, 1}) = -Dmi - (Dze * (-Mb2 + Mds2 + Sqq))/(2. * Mds * sqSqq);
176 t.
element({7, 2, 0, 0, 1}) = -2. * Dpl * Mb * Pw;
177 t.
element({7, 4, 0, 0, 1}) = (2. * Dze * Mb2 * Pw2)/(Mds * sqSqq);
178 t.
element({9, 5, 0, 0, 1}) = (-8. * Dze * Mb2 * Mt * Pw2)/(Mds * sqSqq);
179 t.
element({9, 6, 0, 0, 1}) = 2. * Mt * (2. * Dmi + (Dze * (-Mb2 + Mds2 + Sqq))/(Mds * sqSqq));
180 t.
element({9, 7, 0, 0, 1}) = -2. * Mt * ((-2. * Dmi * (Mb2 - Mds2))/Sqq + (4. * Dpl * Mb * Pw)/Sqq + (Dze * (Mb2 + 3. * Mds2 - Sqq))/(Mds * sqSqq));
181 t.
element({6, 1, 1, 1, 0}) = Dmic + (Dze * (-Mb2 + Mds2 + Sqq))/(2. * Mds * sqSqq);
182 t.
element({6, 2, 1, 1, 0}) = 2. * Dplc * Mb * Pw;
183 t.
element({6, 4, 1, 1, 0}) = (-2. * Dze * Mb2 * Pw2)/(Mds * sqSqq);
184 t.
element({8, 1, 1, 1, 0}) = -Dmic - (Dze * (-Mb2 + Mds2 + Sqq))/(2. * Mds * sqSqq);
185 t.
element({8, 2, 1, 1, 0}) = 2. * Dplc * Mb * Pw;
186 t.
element({8, 4, 1, 1, 0}) = (2. * Dze * Mb2 * Pw2)/(Mds * sqSqq);
187 t.
element({10, 5, 1, 1, 0}) = (8. * Dze * Mb2 * Mt * Pw2)/(Mds * sqSqq);
188 t.
element({10, 6, 1, 1, 0}) = 2. * Mt * (-2. * Dmic - (Dze * (-Mb2 + Mds2 + Sqq))/(Mds * sqSqq));
189 t.
element({10, 7, 1, 1, 0}) = 2. * Mt * ((-2. * Dmic * (Mb2 - Mds2))/Sqq + (4. * Dplc * Mb * Pw)/Sqq + (Dze * (Mb2 + 3. * Mds2 - Sqq))/(Mds * sqSqq));
190 t.
element({2, 0, 1, 1, 1}) = (Eze * Mb * Pw)/Mds;
191 t.
element({4, 0, 1, 1, 1}) = -((Eze * Mb * Pw)/Mds);
192 t.
element({6, 1, 1, 1, 1}) = Mt * ((Eze * Mb * Pw)/(Mds * Sqq) - EmiR/sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/(2. * Mds * Sqq));
193 t.
element({6, 2, 1, 1, 1}) = (-2i * EmiI * Mb * Mt * Pw)/sqSqq;
194 t.
element({6, 3, 1, 1, 1}) = (Eze * Mb * Mt * Pw)/Mds;
195 t.
element({6, 4, 1, 1, 1}) = -(Mb * Mt * Pw * ((Eze * (-Mb2 + Mds2))/(Mds * Sqq) + (2. * Epl * Mb * Pw)/(Mds * Sqq)));
196 t.
element({8, 1, 1, 1, 1}) = -(Mt * ((Eze * Mb * Pw)/(Mds * Sqq) - EmiR/sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/(2. * Mds * Sqq)));
197 t.
element({8, 2, 1, 1, 1}) = (-2i * EmiI * Mb * Mt * Pw)/sqSqq;
198 t.
element({8, 3, 1, 1, 1}) = -((Eze * Mb * Mt * Pw)/Mds);
199 t.
element({8, 4, 1, 1, 1}) = Mb * Mt * Pw * ((Eze * (-Mb2 + Mds2))/(Mds * Sqq) + (2. * Epl * Mb * Pw)/(Mds * Sqq));
200 t.
element({10, 5, 1, 1, 1}) = (8. * Epl * Mb2 * Pw2)/Mds;
201 t.
element({10, 6, 1, 1, 1}) = -2. * (-2. * EmiR * sqSqq + (Epl * (-Mb2 + Mds2 + Sqq))/Mds);
202 t.
element({10, 7, 1, 1, 1}) = 2. * ((Epl * (Mb2 + 3. * Mds2 - Sqq))/Mds + (2. * EmiR * (Mb2 - Mds2))/sqSqq - (4i * EmiI * Mb * Pw)/sqSqq);
204 t *= TwoSqTwoGfSqPp*gPiOnSqrt2MGam;
207 void AmplBDstarDPiLepNu::addRefs()
const {
208 if(!getSettingsHandler()->checkReference(
"Ligeti:2016npd")){
210 "@article{Ligeti:2016npd,\n"
211 " author = \"Ligeti, Zoltan and Papucci, Michele and Robinson, Dean J.\",\n"
212 " title = \"{New Physics in the Visible Final States of $B\\to D^{(*)}\\tau\\nu$}\",\n"
213 " journal = \"JHEP\",\n"
214 " volume = \"01\",\n"
215 " year = \"2017\",\n"
216 " pages = \"083\",\n"
217 " doi = \"10.1007/JHEP01(2017)083\",\n"
218 " eprint = \"1610.02045\",\n"
219 " archivePrefix = \"arXiv\",\n"
220 " primaryClass = \"hep-ph\",\n"
221 " SLACcitation = \"%%CITATION = ARXIV:1610.02045;%%\"\n"
223 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.
double epsilon(const FourMomentum &a, const FourMomentum &b, const FourMomentum &c, const FourMomentum &d)
contracts four 4-momenta with an 4D epsilon tensor.
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
static constexpr double pi