21 using namespace complex_literals;
25 namespace MD = MultiDimensional;
27 AmplBD1starLepNu::AmplBD1starLepNu() {
29 vector<IndexType> dims{{11, 8, 3, 2, 2, 2}};
30 string name{
"AmplBD1starLepNu"};
31 addProcessSignature(PID::BPLUS, {-PID::DSSD1STAR, PID::NU_TAU, PID::ANTITAU});
34 addProcessSignature(PID::BZERO, {PID::DSSD1STARMINUS, PID::NU_TAU, PID::ANTITAU});
37 addProcessSignature(PID::BPLUS, {-PID::DSSD1STAR, PID::NU_MU, PID::ANTIMUON});
40 addProcessSignature(PID::BZERO, {PID::DSSD1STARMINUS, PID::NU_MU, PID::ANTIMUON});
43 addProcessSignature(PID::BPLUS, {-PID::DSSD1STAR, PID::NU_E, PID::POSITRON});
46 addProcessSignature(PID::BZERO, {PID::DSSD1STARMINUS, PID::NU_E, PID::POSITRON});
50 addProcessSignature(PID::BS, {PID::DSSDS1STARMINUS, PID::NU_TAU, PID::ANTITAU});
53 addProcessSignature(PID::BS, {PID::DSSDS1STARMINUS, PID::NU_MU, PID::ANTIMUON});
56 addProcessSignature(PID::BS, {PID::DSSDS1STARMINUS, PID::NU_E, PID::POSITRON});
66 const FourMomentum& pD1starmes = daughters[0].momentum();
71 const double Mb = pBmes.
mass();
72 const double Mb2 = Mb*Mb;
73 const double Mc = pD1starmes.
mass();
74 const double Mc2 = Mc*Mc;
75 const double Mt = pTau.
mass();
76 const double Mt2 = Mt*Mt;
77 const double Sqq = Mb2 + Mc2 - 2. * (pBmes * pD1starmes);
79 const double Ew = (Mb2 - Mc2 + Sqq) / (2 * Mb);
80 const double BNuTau = (pBmes * kNuTau);
81 const double NuTauQ = (pBmes * kNuTau) - (pD1starmes * kNuTau);
82 const double BQ = Mb2 - (pBmes * pD1starmes);
84 const double w = (Mb2 + Mc2 - Sqq)/(2 * Mb * Mc);
85 const double rC = Mc/Mb;
86 const double rt = Mt/Mb;
88 const double mSqq = Sqq/Mb2;
89 const double w2m1 = w*w - 1;
90 const double Sqw2m1 = sqrt(w2m1);
91 const double SqmSqq = sqrt(mSqq);
92 const double Sqw2m1OnmSqq = sqrt(w2m1/mSqq);
97 const double CosTt = -((Ew * (Sqq * BNuTau - NuTauQ * BQ)) / (sqrt(Ew*Ew - Sqq) * NuTauQ * BQ));
98 const double SinTt = sqrt(1. - CosTt*CosTt);
99 const double CosTtHalfSq = (1. + CosTt) / 2.;
100 const double SinTtHalfSq = (1. - CosTt) / 2.;
102 const double prefactor = 2*
GFermi*sqrt(Mb*Mc)*sqrt(Sqq - Mt2);
110 t.
element({0,1,0,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
111 t.
element({0,4,0,0,0,0}) = (rt*SinTt*Sqw2m1OnmSqq)/2.;
112 t.
element({5,1,0,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
113 t.
element({5,4,0,0,0,0}) = -(rt*SinTt*Sqw2m1OnmSqq)/2.;
114 t.
element({7,1,0,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
115 t.
element({7,4,0,0,0,0}) = (rt*SinTt*Sqw2m1OnmSqq)/2.;
116 t.
element({9,5,0,0,0,0}) = (2.*SinTt*(-1 + rC*(w + Sqw2m1)))/SqmSqq;
117 t.
element({9,6,0,0,0,0}) = (2.*SinTt*(rC - w + Sqw2m1))/SqmSqq;
118 t.
element({0,1,0,0,0,1}) = CosTtHalfSq;
119 t.
element({0,4,0,0,0,1}) = CosTtHalfSq*Sqw2m1;
120 t.
element({5,1,0,0,0,1}) = CosTtHalfSq;
121 t.
element({5,4,0,0,0,1}) = -(CosTtHalfSq*Sqw2m1);
122 t.
element({7,1,0,0,0,1}) = CosTtHalfSq;
123 t.
element({7,4,0,0,0,1}) = CosTtHalfSq*Sqw2m1;
124 t.
element({9,5,0,0,0,1}) = (4.*CosTtHalfSq*rt*(-1 + rC*(w + Sqw2m1)))/mSqq;
125 t.
element({9,6,0,0,0,1}) = (4.*CosTtHalfSq*rt*(rC - w + Sqw2m1))/mSqq;
126 t.
element({6,1,0,1,1,0}) = -SinTtHalfSq;
127 t.
element({6,4,0,1,1,0}) = SinTtHalfSq*Sqw2m1;
128 t.
element({8,1,0,1,1,0}) = -SinTtHalfSq;
129 t.
element({8,4,0,1,1,0}) = -(SinTtHalfSq*Sqw2m1);
130 t.
element({10,5,0,1,1,0}) = (4.*rt*SinTtHalfSq*(1 + rC*(-w + Sqw2m1)))/mSqq;
131 t.
element({10,6,0,1,1,0}) = (4.*rt*SinTtHalfSq*(-rC + w + Sqw2m1))/mSqq;
132 t.
element({6,1,0,1,1,1}) = -(rt*SinTt)/(2.*SqmSqq);
133 t.
element({6,4,0,1,1,1}) = (rt*SinTt*Sqw2m1OnmSqq)/2.;
134 t.
element({8,1,0,1,1,1}) = -(rt*SinTt)/(2.*SqmSqq);
135 t.
element({8,4,0,1,1,1}) = -(rt*SinTt*Sqw2m1OnmSqq)/2.;
136 t.
element({10,5,0,1,1,1}) = (2.*SinTt*(1 + rC*(-w + Sqw2m1)))/SqmSqq;
137 t.
element({10,6,0,1,1,1}) = (2.*SinTt*(-rC + w + Sqw2m1))/SqmSqq;
138 t.
element({0,1,1,0,0,0}) = (rt*(CosTt*(rC - w) + Sqw2m1))/(
sqrt2*mSqq);
139 t.
element({0,2,1,0,0,0}) = -((rt*((-1 + rC*w)*Sqw2m1 + CosTt*rC*w2m1))/(
sqrt2*mSqq));
140 t.
element({0,3,1,0,0,0}) = (rt*((-rC + w)*Sqw2m1 - CosTt*w2m1))/(
sqrt2*mSqq);
143 t.
element({5,1,1,0,0,0}) = (rt*(CosTt*(rC - w) + Sqw2m1))/(
sqrt2*mSqq);
144 t.
element({5,2,1,0,0,0}) = -((rt*((-1 + rC*w)*Sqw2m1 + CosTt*rC*w2m1))/(
sqrt2*mSqq));
145 t.
element({5,3,1,0,0,0}) = (rt*((-rC + w)*Sqw2m1 - CosTt*w2m1))/(
sqrt2*mSqq);
146 t.
element({7,1,1,0,0,0}) = (rt*(CosTt*(rC - w) + Sqw2m1))/(
sqrt2*mSqq);
147 t.
element({7,2,1,0,0,0}) = -((rt*((-1 + rC*w)*Sqw2m1 + CosTt*rC*w2m1))/(
sqrt2*mSqq));
148 t.
element({7,3,1,0,0,0}) = (rt*((-rC + w)*Sqw2m1 - CosTt*w2m1))/(
sqrt2*mSqq);
152 t.
element({0,1,1,0,0,1}) = (SinTt*(-rC + w))/(
sqrt2*SqmSqq);
153 t.
element({0,2,1,0,0,1}) = (rC*SinTt*w2m1)/(
sqrt2*SqmSqq);
155 t.
element({5,1,1,0,0,1}) = (SinTt*(-rC + w))/(
sqrt2*SqmSqq);
156 t.
element({5,2,1,0,0,1}) = (rC*SinTt*w2m1)/(
sqrt2*SqmSqq);
158 t.
element({7,1,1,0,0,1}) = (SinTt*(-rC + w))/(
sqrt2*SqmSqq);
159 t.
element({7,2,1,0,0,1}) = (rC*SinTt*w2m1)/(
sqrt2*SqmSqq);
161 t.
element({9,5,1,0,0,1}) = (-2.*
sqrt2*rt*SinTt*w)/SqmSqq;
163 t.
element({9,7,1,0,0,1}) = (2.*
sqrt2*rt*SinTt*w2m1)/SqmSqq;
164 t.
element({6,1,1,1,1,0}) = (SinTt*(-rC + w))/(
sqrt2*SqmSqq);
165 t.
element({6,2,1,1,1,0}) = (rC*SinTt*w2m1)/(
sqrt2*SqmSqq);
167 t.
element({8,1,1,1,1,0}) = (SinTt*(-rC + w))/(
sqrt2*SqmSqq);
168 t.
element({8,2,1,1,1,0}) = (rC*SinTt*w2m1)/(
sqrt2*SqmSqq);
170 t.
element({10,5,1,1,1,0}) = (-2.*
sqrt2*rt*SinTt*w)/SqmSqq;
171 t.
element({10,6,1,1,1,0}) = (-2.*
sqrt2*rt*SinTt)/SqmSqq;
172 t.
element({10,7,1,1,1,0}) = (2.*
sqrt2*rt*SinTt*w2m1)/SqmSqq;
175 t.
element({6,1,1,1,1,1}) = -((rt*(CosTt*(rC - w) + Sqw2m1))/(
sqrt2*mSqq));
176 t.
element({6,2,1,1,1,1}) = (rt*((-1 + rC*w)*Sqw2m1 + CosTt*rC*w2m1))/(
sqrt2*mSqq);
177 t.
element({6,3,1,1,1,1}) = (rt*((rC - w)*Sqw2m1 + CosTt*w2m1))/(
sqrt2*mSqq);
178 t.
element({8,1,1,1,1,1}) = -((rt*(CosTt*(rC - w) + Sqw2m1))/(
sqrt2*mSqq));
179 t.
element({8,2,1,1,1,1}) = (rt*((-1 + rC*w)*Sqw2m1 + CosTt*rC*w2m1))/(
sqrt2*mSqq);
180 t.
element({8,3,1,1,1,1}) = (rt*((rC - w)*Sqw2m1 + CosTt*w2m1))/(
sqrt2*mSqq);
184 t.
element({0,1,2,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
185 t.
element({0,4,2,0,0,0}) = -(rt*SinTt*Sqw2m1OnmSqq)/2.;
186 t.
element({5,1,2,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
187 t.
element({5,4,2,0,0,0}) = (rt*SinTt*Sqw2m1OnmSqq)/2.;
188 t.
element({7,1,2,0,0,0}) = (rt*SinTt)/(2.*SqmSqq);
189 t.
element({7,4,2,0,0,0}) = -(rt*SinTt*Sqw2m1OnmSqq)/2.;
190 t.
element({9,5,2,0,0,0}) = (-2.*SinTt*(1 + rC*(-w + Sqw2m1)))/SqmSqq;
191 t.
element({9,6,2,0,0,0}) = (-2.*SinTt*(-rC + w + Sqw2m1))/SqmSqq;
192 t.
element({0,1,2,0,0,1}) = -SinTtHalfSq;
193 t.
element({0,4,2,0,0,1}) = SinTtHalfSq*Sqw2m1;
194 t.
element({5,1,2,0,0,1}) = -SinTtHalfSq;
195 t.
element({5,4,2,0,0,1}) = -(SinTtHalfSq*Sqw2m1);
196 t.
element({7,1,2,0,0,1}) = -SinTtHalfSq;
197 t.
element({7,4,2,0,0,1}) = SinTtHalfSq*Sqw2m1;
198 t.
element({9,5,2,0,0,1}) = (4.*rt*SinTtHalfSq*(1 + rC*(-w + Sqw2m1)))/mSqq;
199 t.
element({9,6,2,0,0,1}) = (4.*rt*SinTtHalfSq*(-rC + w + Sqw2m1))/mSqq;
200 t.
element({6,1,2,1,1,0}) = CosTtHalfSq;
201 t.
element({6,4,2,1,1,0}) = CosTtHalfSq*Sqw2m1;
202 t.
element({8,1,2,1,1,0}) = CosTtHalfSq;
203 t.
element({8,4,2,1,1,0}) = -(CosTtHalfSq*Sqw2m1);
204 t.
element({10,5,2,1,1,0}) = (4.*CosTtHalfSq*rt*(-1 + rC*(w + Sqw2m1)))/mSqq;
205 t.
element({10,6,2,1,1,0}) = (4.*CosTtHalfSq*rt*(rC - w + Sqw2m1))/mSqq;
206 t.
element({6,1,2,1,1,1}) = -(rt*SinTt)/(2.*SqmSqq);
207 t.
element({6,4,2,1,1,1}) = -(rt*SinTt*Sqw2m1OnmSqq)/2.;
208 t.
element({8,1,2,1,1,1}) = -(rt*SinTt)/(2.*SqmSqq);
209 t.
element({8,4,2,1,1,1}) = (rt*SinTt*Sqw2m1OnmSqq)/2.;
210 t.
element({10,5,2,1,1,1}) = (-2.*SinTt*(-1 + rC*(w + Sqw2m1)))/SqmSqq;
211 t.
element({10,6,2,1,1,1}) = (-2.*SinTt*(rC - w + Sqw2m1))/SqmSqq;
216 void AmplBD1starLepNu::addRefs()
const {
217 if(!getSettingsHandler()->checkReference(
"Bernlochner:2017jxt")){
219 "@article{Bernlochner:2017jxt,\n"
220 " author = \"Bernlochner, Florian U. and Ligeti, Zoltan and Robinson, Dean J.\",\n"
221 " title = \"{Model independent analysis of semileptonic $B$ decays to $D^{**}$ for arbitrary new physics}\",\n"
222 " journal = \"Phys. Rev.\",\n"
223 " volume = \"D97\",\n"
224 " year = \"2018\",\n"
226 " pages = \"075011\",\n"
227 " doi = \"10.1103/PhysRevD.97.075011\",\n"
228 " eprint = \"1711.03110\",\n"
229 " archivePrefix = \"arXiv\",\n"
230 " primaryClass = \"hep-ph\",\n"
231 " SLACcitation = \"%%CITATION = ARXIV:1711.03110;%%\"\n"
233 getSettingsHandler()->addReference(
"Bernlochner:2017jxt", ref);
TensorData makeEmptySparse(const IndexList &dimensions, const LabelsList &labels)
std::complex< double > & element(const IndexList &indices={})
access an element given its indices
static constexpr double GFermi
Tensor indices label definitions.
static constexpr double sqrt2
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.