Hammer  1.0.0
Helicity Amplitude Module for Matrix Element Reweighting
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AmplLbLcLepNu.cc
Go to the documentation of this file.
1 ///
2 /// @file AmplLbLcLepNu.cc
3 /// @brief \f$ \Lambda_b \rightarrow \Lambda_c \tau\nu \f$ amplitude
4 ///
5 
6 //**** This file is a part of the HAMMER library
7 //**** Copyright (C) 2016 - 2020 The HAMMER Collaboration
8 //**** HAMMER is licensed under version 3 of the GPL; see COPYING for details
9 //**** Please note the MCnet academic guidelines; see GUIDELINES for details
10 
11 // -*- C++ -*-
13 #include "Hammer/IndexLabels.hh"
14 #include "Hammer/Math/Constants.hh"
15 #include "Hammer/Particle.hh"
16 #include "Hammer/Tools/Pdg.hh"
18 #include <cmath>
19 
20 using namespace std;
21 using namespace complex_literals;
22 
23 namespace Hammer {
24 
25  namespace MD = MultiDimensional;
26 
27  AmplLbLcLepNu::AmplLbLcLepNu() {
28  // Create tensor rank and dimensions
29  vector<IndexType> dims{{11, 12, 2, 2, 2, 2, 2}};
30  string name{"AmplLbLcLepNu"};
31  addProcessSignature(-PID::LAMBDAB, {PID::LAMBDACMINUS, PID::NU_TAU, PID::ANTITAU});
33 
34  addProcessSignature(-PID::LAMBDAB, {PID::LAMBDACMINUS, PID::NU_MU, PID::ANTIMUON});
36 
37  addProcessSignature(-PID::LAMBDAB, {PID::LAMBDACMINUS, PID::NU_E, PID::POSITRON});
39 
40  setSignatureIndex();
41  _multiplicity = 2ul;
42  }
43 
44  void AmplLbLcLepNu::eval(const Particle& parent, const ParticleList& daughters,
45  const ParticleList&) {
46  // Momenta
47  const FourMomentum& pLbmes = parent.momentum();
48  const FourMomentum& pLcmes = daughters[0].momentum();
49  const FourMomentum& kNuTau = daughters[1].momentum();
50  const FourMomentum& pTau = daughters[2].momentum();
51 
52  // kinematic objects
53  const double Mb = pLbmes.mass();
54  const double Mb2 = Mb*Mb;
55  const double Mc = pLcmes.mass();
56  const double Mc2 = Mc*Mc;
57  const double Mt = pTau.mass();
58  const double Sqq = Mb2 + Mc2 - 2. * (pLbmes * pLcmes);
59  const double Ew = (Mb2 - Mc2 + Sqq) / (2 * Mb);
60  const double BNuTau = (pLbmes * kNuTau);
61  const double NuTauQ = (pLbmes * kNuTau) - (pLcmes * kNuTau);
62  const double BQ = Mb2 - (pLbmes * pLcmes);
63 
64  const double mSqq = Sqq/Mb2;
65  const double sqmSqq = sqrt(mSqq);
66  const double w = (Mb2 + Mc2 - Sqq)/(2.*Mb*Mc);
67  const double rC = Mc/Mb;
68  const double rt = Mt/Mb;
69 
70  // Helicity Angles
71  const double CosTt = -((Ew * (Sqq * BNuTau - NuTauQ * BQ)) / (sqrt(Ew*Ew - Sqq) * NuTauQ * BQ));
72  const double SinTt = sqrt(1. - CosTt*CosTt);
73  const double CosTtHalfSq = (1. + CosTt) / 2.;
74  const double SinTtHalfSq = (1. - CosTt) / 2.;
75  // double CscTt = 1. / SinTt;
76 
77  // Collective Functions
78  const double wp = w + sqrt(w*w-1);
79  const double wm = w - sqrt(w*w-1);
80  const double sqwp = sqrt(wp);
81  const double sqwm = sqrt(wm);
82  const double WpmP = sqwp + sqwm;
83  const double WpmM = sqwp - sqwm;
84  const double RCmp = 1 - rC + (1 + rC)*CosTt;
85  const double RCmm = 1 - rC - (1 + rC)*CosTt;
86  const double RCpm = 1 + rC - (1 - rC)*CosTt;
87  const double RCpp = 1 + rC + (1 - rC)*CosTt;
88  const double Op = rC - w + sqrt(w*w-1)*CosTt;
89  const double Ot = rC*w -1 + rC*sqrt(w*w-1)*CosTt;
90 
91  const double TwoSqTwoGfSq = TwoSqTwoGFermi * Mb2 * sqrt(mSqq - pow(rt,2.)) * sqrt(rC);
92 
93  // initialize tensor elements to zero
94  Tensor& t = getTensor();
95  t.clearData();
96 
97  // set non-zero tensor elements
98  t.element({0,2,0,0,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
99  t.element({0,3,0,0,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
100  t.element({0,4,0,0,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
101  t.element({0,5,0,0,0,0,0}) = (rt*(RCpp*sqwm - RCpm*sqwp))/(2.*mSqq) ;
102  t.element({0,6,0,0,0,0,0}) = -(Ot*rt*WpmM)/(2.*mSqq) ;
103  t.element({0,7,0,0,0,0,0}) = -(Op*rt*WpmM)/(2.*mSqq) ;
104  t.element({1,0,0,0,0,0,0}) = -WpmP/2. ;
105  t.element({1,1,0,0,0,0,0}) = -WpmM/2. ;
106  t.element({3,0,0,0,0,0,0}) = -WpmP/2. ;
107  t.element({3,1,0,0,0,0,0}) = WpmM/2. ;
108  t.element({5,2,0,0,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
109  t.element({5,3,0,0,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
110  t.element({5,4,0,0,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
111  t.element({5,5,0,0,0,0,0}) = (-(RCpp*rt*sqwm) + RCpm*rt*sqwp)/(2.*mSqq) ;
112  t.element({5,6,0,0,0,0,0}) = (Ot*rt*WpmM)/(2.*mSqq) ;
113  t.element({5,7,0,0,0,0,0}) = (Op*rt*WpmM)/(2.*mSqq) ;
114  t.element({7,2,0,0,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
115  t.element({7,3,0,0,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
116  t.element({7,4,0,0,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
117  t.element({7,5,0,0,0,0,0}) = (rt*(RCpp*sqwm - RCpm*sqwp))/(2.*mSqq) ;
118  t.element({7,6,0,0,0,0,0}) = -(Ot*rt*WpmM)/(2.*mSqq) ;
119  t.element({7,7,0,0,0,0,0}) = -(Op*rt*WpmM)/(2.*mSqq) ;
120  t.element({9,8,0,0,0,0,0}) = 4.*sqwp*CosTt ;
121  t.element({9,9,0,0,0,0,0}) = -2.*WpmM*CosTt ;
122  t.element({9,10,0,0,0,0,0}) = 2.*WpmM*CosTt ;
123  t.element({9,11,0,0,0,0,0}) = -2.*(1 + w)*WpmM*CosTt ;
124  t.element({0,2,0,0,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
125  t.element({0,3,0,0,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
126  t.element({0,4,0,0,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
127  t.element({0,5,0,0,0,0,1}) = ((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
128  t.element({0,6,0,0,0,0,1}) = (rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
129  t.element({0,7,0,0,0,0,1}) = ((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
130  t.element({5,2,0,0,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
131  t.element({5,3,0,0,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
132  t.element({5,4,0,0,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
133  t.element({5,5,0,0,0,0,1}) = -((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
134  t.element({5,6,0,0,0,0,1}) = -(rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
135  t.element({5,7,0,0,0,0,1}) = -((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
136  t.element({7,2,0,0,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
137  t.element({7,3,0,0,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
138  t.element({7,4,0,0,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
139  t.element({7,5,0,0,0,0,1}) = ((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
140  t.element({7,6,0,0,0,0,1}) = (rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
141  t.element({7,7,0,0,0,0,1}) = ((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
142  t.element({9,8,0,0,0,0,1}) = -4.*rt*sqrt(wp/mSqq)*SinTt ;
143  t.element({9,9,0,0,0,0,1}) = (2.*rt*WpmM*SinTt)/sqmSqq ;
144  t.element({9,10,0,0,0,0,1}) = (-2.*rt*WpmM*SinTt)/sqmSqq ;
145  t.element({9,11,0,0,0,0,1}) = (2.*rt*(1 + w)*WpmM*SinTt)/sqmSqq ;
146  t.element({6,2,0,0,1,1,0}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
147  t.element({6,3,0,0,1,1,0}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
148  t.element({6,4,0,0,1,1,0}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
149  t.element({6,5,0,0,1,1,0}) = -((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
150  t.element({6,6,0,0,1,1,0}) = -(rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
151  t.element({6,7,0,0,1,1,0}) = -((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
152  t.element({8,2,0,0,1,1,0}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
153  t.element({8,3,0,0,1,1,0}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
154  t.element({8,4,0,0,1,1,0}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
155  t.element({8,5,0,0,1,1,0}) = ((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
156  t.element({8,6,0,0,1,1,0}) = (rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
157  t.element({8,7,0,0,1,1,0}) = ((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
158  t.element({10,8,0,0,1,1,0}) = 4.*rt*sqrt(wm/mSqq)*SinTt ;
159  t.element({10,9,0,0,1,1,0}) = (2.*rt*WpmM*SinTt)/sqmSqq ;
160  t.element({10,10,0,0,1,1,0}) = (-2.*rt*WpmM*SinTt)/sqmSqq ;
161  t.element({10,11,0,0,1,1,0}) = (2.*rt*(1 + w)*WpmM*SinTt)/sqmSqq ;
162  t.element({2,0,0,0,1,1,1}) = WpmP/2. ;
163  t.element({2,1,0,0,1,1,1}) = WpmM/2. ;
164  t.element({4,0,0,0,1,1,1}) = WpmP/2. ;
165  t.element({4,1,0,0,1,1,1}) = -WpmM/2. ;
166  t.element({6,2,0,0,1,1,1}) = -(rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
167  t.element({6,3,0,0,1,1,1}) = (Ot*rt*WpmP)/(2.*mSqq) ;
168  t.element({6,4,0,0,1,1,1}) = (Op*rt*WpmP)/(2.*mSqq) ;
169  t.element({6,5,0,0,1,1,1}) = (rt*(RCpp*sqwm - RCpm*sqwp))/(2.*mSqq) ;
170  t.element({6,6,0,0,1,1,1}) = -(Ot*rt*WpmM)/(2.*mSqq) ;
171  t.element({6,7,0,0,1,1,1}) = -(Op*rt*WpmM)/(2.*mSqq) ;
172  t.element({8,2,0,0,1,1,1}) = -(rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
173  t.element({8,3,0,0,1,1,1}) = (Ot*rt*WpmP)/(2.*mSqq) ;
174  t.element({8,4,0,0,1,1,1}) = (Op*rt*WpmP)/(2.*mSqq) ;
175  t.element({8,5,0,0,1,1,1}) = (-(RCpp*rt*sqwm) + RCpm*rt*sqwp)/(2.*mSqq) ;
176  t.element({8,6,0,0,1,1,1}) = (Ot*rt*WpmM)/(2.*mSqq) ;
177  t.element({8,7,0,0,1,1,1}) = (Op*rt*WpmM)/(2.*mSqq) ;
178  t.element({10,8,0,0,1,1,1}) = 4.*sqwm*CosTt ;
179  t.element({10,9,0,0,1,1,1}) = 2.*WpmM*CosTt ;
180  t.element({10,10,0,0,1,1,1}) = -2.*WpmM*CosTt ;
181  t.element({10,11,0,0,1,1,1}) = 2.*(1 + w)*WpmM*CosTt ;
182  t.element({0,2,0,1,0,0,0}) = (rt*WpmM*SinTt)/(2.*sqmSqq) ;
183  t.element({0,5,0,1,0,0,0}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
184  t.element({5,2,0,1,0,0,0}) = (rt*WpmM*SinTt)/(2.*sqmSqq) ;
185  t.element({5,5,0,1,0,0,0}) = -(rt*WpmP*SinTt)/(2.*sqmSqq) ;
186  t.element({7,2,0,1,0,0,0}) = (rt*WpmM*SinTt)/(2.*sqmSqq) ;
187  t.element({7,5,0,1,0,0,0}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
188  t.element({9,8,0,1,0,0,0}) = (4.*(-rC + wm)*SinTt)/sqrt(mSqq*wm) ;
189  t.element({9,9,0,1,0,0,0}) = (-2.*(-1 + rC*wp)*WpmM*SinTt)/sqmSqq ;
190  t.element({9,10,0,1,0,0,0}) = (-2.*(rC - wm)*WpmM*SinTt)/sqmSqq ;
191  t.element({0,2,0,1,0,0,1}) = WpmM*CosTtHalfSq ;
192  t.element({0,5,0,1,0,0,1}) = WpmP*CosTtHalfSq ;
193  t.element({5,2,0,1,0,0,1}) = WpmM*CosTtHalfSq ;
194  t.element({5,5,0,1,0,0,1}) = -(WpmP*CosTtHalfSq) ;
195  t.element({7,2,0,1,0,0,1}) = WpmM*CosTtHalfSq ;
196  t.element({7,5,0,1,0,0,1}) = WpmP*CosTtHalfSq ;
197  t.element({9,8,0,1,0,0,1}) = (-8.*rt*sqwm*(-1 + rC*wp)*CosTtHalfSq)/mSqq ;
198  t.element({9,9,0,1,0,0,1}) = (-4.*rt*(-1 + rC*wp)*WpmM*CosTtHalfSq)/mSqq ;
199  t.element({9,10,0,1,0,0,1}) = (-4.*rt*(rC - wm)*WpmM*CosTtHalfSq)/mSqq ;
200  t.element({6,2,0,1,1,1,0}) = -(WpmM*SinTtHalfSq) ;
201  t.element({6,5,0,1,1,1,0}) = WpmP*SinTtHalfSq ;
202  t.element({8,2,0,1,1,1,0}) = -(WpmM*SinTtHalfSq) ;
203  t.element({8,5,0,1,1,1,0}) = -(WpmP*SinTtHalfSq) ;
204  t.element({10,8,0,1,1,1,0}) = (-8.*rt*(-1 + rC*wm)*sqwp*SinTtHalfSq)/mSqq ;
205  t.element({10,9,0,1,1,1,0}) = (4.*rt*(-1 + rC*wm)*WpmM*SinTtHalfSq)/mSqq ;
206  t.element({10,10,0,1,1,1,0}) = (-4.*rt*(-rC + wp)*WpmM*SinTtHalfSq)/mSqq ;
207  t.element({6,2,0,1,1,1,1}) = -(rt*WpmM*SinTt)/(2.*sqmSqq) ;
208  t.element({6,5,0,1,1,1,1}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
209  t.element({8,2,0,1,1,1,1}) = -(rt*WpmM*SinTt)/(2.*sqmSqq) ;
210  t.element({8,5,0,1,1,1,1}) = -(rt*WpmP*SinTt)/(2.*sqmSqq) ;
211  t.element({10,8,0,1,1,1,1}) = (4.*(-rC + wp)*SinTt)/sqrt(mSqq*wp) ;
212  t.element({10,9,0,1,1,1,1}) = (2.*(-1 + rC*wm)*WpmM*SinTt)/sqmSqq ;
213  t.element({10,10,0,1,1,1,1}) = (-2.*(-rC + wp)*WpmM*SinTt)/sqmSqq ;
214  t.element({0,2,1,0,0,0,0}) = -(rt*WpmM*SinTt)/(2.*sqmSqq) ;
215  t.element({0,5,1,0,0,0,0}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
216  t.element({5,2,1,0,0,0,0}) = -(rt*WpmM*SinTt)/(2.*sqmSqq) ;
217  t.element({5,5,1,0,0,0,0}) = -(rt*WpmP*SinTt)/(2.*sqmSqq) ;
218  t.element({7,2,1,0,0,0,0}) = -(rt*WpmM*SinTt)/(2.*sqmSqq) ;
219  t.element({7,5,1,0,0,0,0}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
220  t.element({9,8,1,0,0,0,0}) = (4.*(-rC + wp)*SinTt)/sqrt(mSqq*wp) ;
221  t.element({9,9,1,0,0,0,0}) = (2.*(-1 + rC*wm)*WpmM*SinTt)/sqmSqq ;
222  t.element({9,10,1,0,0,0,0}) = (-2.*(-rC + wp)*WpmM*SinTt)/sqmSqq ;
223  t.element({0,2,1,0,0,0,1}) = WpmM*SinTtHalfSq ;
224  t.element({0,5,1,0,0,0,1}) = -(WpmP*SinTtHalfSq) ;
225  t.element({5,2,1,0,0,0,1}) = WpmM*SinTtHalfSq ;
226  t.element({5,5,1,0,0,0,1}) = WpmP*SinTtHalfSq ;
227  t.element({7,2,1,0,0,0,1}) = WpmM*SinTtHalfSq ;
228  t.element({7,5,1,0,0,0,1}) = -(WpmP*SinTtHalfSq) ;
229  t.element({9,8,1,0,0,0,1}) = (8.*rt*(-1 + rC*wm)*sqwp*SinTtHalfSq)/mSqq ;
230  t.element({9,9,1,0,0,0,1}) = (-4.*rt*(-1 + rC*wm)*WpmM*SinTtHalfSq)/mSqq ;
231  t.element({9,10,1,0,0,0,1}) = (-4.*rt*(rC - wp)*WpmM*SinTtHalfSq)/mSqq ;
232  t.element({6,2,1,0,1,1,0}) = -(WpmM*CosTtHalfSq) ;
233  t.element({6,5,1,0,1,1,0}) = -(WpmP*CosTtHalfSq) ;
234  t.element({8,2,1,0,1,1,0}) = -(WpmM*CosTtHalfSq) ;
235  t.element({8,5,1,0,1,1,0}) = WpmP*CosTtHalfSq ;
236  t.element({10,8,1,0,1,1,0}) = (8.*rt*sqwm*(-1 + rC*wp)*CosTtHalfSq)/mSqq ;
237  t.element({10,9,1,0,1,1,0}) = (4.*rt*(-1 + rC*wp)*WpmM*CosTtHalfSq)/mSqq ;
238  t.element({10,10,1,0,1,1,0}) = (4.*rt*(rC - wm)*WpmM*CosTtHalfSq)/mSqq ;
239  t.element({6,2,1,0,1,1,1}) = (rt*WpmM*SinTt)/(2.*sqmSqq) ;
240  t.element({6,5,1,0,1,1,1}) = (rt*WpmP*SinTt)/(2.*sqmSqq) ;
241  t.element({8,2,1,0,1,1,1}) = (rt*WpmM*SinTt)/(2.*sqmSqq) ;
242  t.element({8,5,1,0,1,1,1}) = -(rt*WpmP*SinTt)/(2.*sqmSqq) ;
243  t.element({10,8,1,0,1,1,1}) = (4.*(-rC + wm)*SinTt)/sqrt(mSqq*wm) ;
244  t.element({10,9,1,0,1,1,1}) = (-2.*(-1 + rC*wp)*WpmM*SinTt)/sqmSqq ;
245  t.element({10,10,1,0,1,1,1}) = (-2.*(rC - wm)*WpmM*SinTt)/sqmSqq ;
246  t.element({0,2,1,1,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
247  t.element({0,3,1,1,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
248  t.element({0,4,1,1,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
249  t.element({0,5,1,1,0,0,0}) = (-(RCpp*rt*sqwm) + RCpm*rt*sqwp)/(2.*mSqq) ;
250  t.element({0,6,1,1,0,0,0}) = (Ot*rt*WpmM)/(2.*mSqq) ;
251  t.element({0,7,1,1,0,0,0}) = (Op*rt*WpmM)/(2.*mSqq) ;
252  t.element({1,0,1,1,0,0,0}) = -WpmP/2. ;
253  t.element({1,1,1,1,0,0,0}) = WpmM/2. ;
254  t.element({3,0,1,1,0,0,0}) = -WpmP/2. ;
255  t.element({3,1,1,1,0,0,0}) = -WpmM/2. ;
256  t.element({5,2,1,1,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
257  t.element({5,3,1,1,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
258  t.element({5,4,1,1,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
259  t.element({5,5,1,1,0,0,0}) = (rt*(RCpp*sqwm - RCpm*sqwp))/(2.*mSqq) ;
260  t.element({5,6,1,1,0,0,0}) = -(Ot*rt*WpmM)/(2.*mSqq) ;
261  t.element({5,7,1,1,0,0,0}) = -(Op*rt*WpmM)/(2.*mSqq) ;
262  t.element({7,2,1,1,0,0,0}) = (rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
263  t.element({7,3,1,1,0,0,0}) = -(Ot*rt*WpmP)/(2.*mSqq) ;
264  t.element({7,4,1,1,0,0,0}) = -(Op*rt*WpmP)/(2.*mSqq) ;
265  t.element({7,5,1,1,0,0,0}) = (-(RCpp*rt*sqwm) + RCpm*rt*sqwp)/(2.*mSqq) ;
266  t.element({7,6,1,1,0,0,0}) = (Ot*rt*WpmM)/(2.*mSqq) ;
267  t.element({7,7,1,1,0,0,0}) = (Op*rt*WpmM)/(2.*mSqq) ;
268  t.element({9,8,1,1,0,0,0}) = -4.*sqwm*CosTt ;
269  t.element({9,9,1,1,0,0,0}) = -2.*WpmM*CosTt ;
270  t.element({9,10,1,1,0,0,0}) = 2.*WpmM*CosTt ;
271  t.element({9,11,1,1,0,0,0}) = -2.*(1 + w)*WpmM*CosTt ;
272  t.element({0,2,1,1,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
273  t.element({0,3,1,1,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
274  t.element({0,4,1,1,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
275  t.element({0,5,1,1,0,0,1}) = -((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
276  t.element({0,6,1,1,0,0,1}) = -(rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
277  t.element({0,7,1,1,0,0,1}) = -((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
278  t.element({5,2,1,1,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
279  t.element({5,3,1,1,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
280  t.element({5,4,1,1,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
281  t.element({5,5,1,1,0,0,1}) = ((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
282  t.element({5,6,1,1,0,0,1}) = (rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
283  t.element({5,7,1,1,0,0,1}) = ((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
284  t.element({7,2,1,1,0,0,1}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
285  t.element({7,3,1,1,0,0,1}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
286  t.element({7,4,1,1,0,0,1}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
287  t.element({7,5,1,1,0,0,1}) = -((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
288  t.element({7,6,1,1,0,0,1}) = -(rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
289  t.element({7,7,1,1,0,0,1}) = -((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
290  t.element({9,8,1,1,0,0,1}) = 4.*rt*sqrt(wm/mSqq)*SinTt ;
291  t.element({9,9,1,1,0,0,1}) = (2.*rt*WpmM*SinTt)/sqmSqq ;
292  t.element({9,10,1,1,0,0,1}) = (-2.*rt*WpmM*SinTt)/sqmSqq ;
293  t.element({9,11,1,1,0,0,1}) = (2.*rt*(1 + w)*WpmM*SinTt)/sqmSqq ;
294  t.element({6,2,1,1,1,1,0}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
295  t.element({6,3,1,1,1,1,0}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
296  t.element({6,4,1,1,1,1,0}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
297  t.element({6,5,1,1,1,1,0}) = ((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
298  t.element({6,6,1,1,1,1,0}) = (rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
299  t.element({6,7,1,1,1,1,0}) = ((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
300  t.element({8,2,1,1,1,1,0}) = ((1 + rC)*WpmM*SinTt)/(2.*sqmSqq) ;
301  t.element({8,3,1,1,1,1,0}) = (rC*(1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
302  t.element({8,4,1,1,1,1,0}) = ((1 + w)*WpmM*SinTt)/(2.*sqmSqq) ;
303  t.element({8,5,1,1,1,1,0}) = -((-1 + rC)*WpmP*SinTt)/(2.*sqmSqq) ;
304  t.element({8,6,1,1,1,1,0}) = -(rC*(-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
305  t.element({8,7,1,1,1,1,0}) = -((-1 + w)*WpmP*SinTt)/(2.*sqmSqq) ;
306  t.element({10,8,1,1,1,1,0}) = -4.*rt*sqrt(wp/mSqq)*SinTt ;
307  t.element({10,9,1,1,1,1,0}) = (2.*rt*WpmM*SinTt)/sqmSqq ;
308  t.element({10,10,1,1,1,1,0}) = (-2.*rt*WpmM*SinTt)/sqmSqq ;
309  t.element({10,11,1,1,1,1,0}) = (2.*rt*(1 + w)*WpmM*SinTt)/sqmSqq ;
310  t.element({2,0,1,1,1,1,1}) = WpmP/2. ;
311  t.element({2,1,1,1,1,1,1}) = -WpmM/2. ;
312  t.element({4,0,1,1,1,1,1}) = WpmP/2. ;
313  t.element({4,1,1,1,1,1,1}) = WpmM/2. ;
314  t.element({6,2,1,1,1,1,1}) = -(rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
315  t.element({6,3,1,1,1,1,1}) = (Ot*rt*WpmP)/(2.*mSqq) ;
316  t.element({6,4,1,1,1,1,1}) = (Op*rt*WpmP)/(2.*mSqq) ;
317  t.element({6,5,1,1,1,1,1}) = (-(RCpp*rt*sqwm) + RCpm*rt*sqwp)/(2.*mSqq) ;
318  t.element({6,6,1,1,1,1,1}) = (Ot*rt*WpmM)/(2.*mSqq) ;
319  t.element({6,7,1,1,1,1,1}) = (Op*rt*WpmM)/(2.*mSqq) ;
320  t.element({8,2,1,1,1,1,1}) = -(rt*(RCmp*sqwm + RCmm*sqwp))/(2.*mSqq) ;
321  t.element({8,3,1,1,1,1,1}) = (Ot*rt*WpmP)/(2.*mSqq) ;
322  t.element({8,4,1,1,1,1,1}) = (Op*rt*WpmP)/(2.*mSqq) ;
323  t.element({8,5,1,1,1,1,1}) = (rt*(RCpp*sqwm - RCpm*sqwp))/(2.*mSqq) ;
324  t.element({8,6,1,1,1,1,1}) = -(Ot*rt*WpmM)/(2.*mSqq) ;
325  t.element({8,7,1,1,1,1,1}) = -(Op*rt*WpmM)/(2.*mSqq) ;
326  t.element({10,8,1,1,1,1,1}) = -4.*sqwp*CosTt ;
327  t.element({10,9,1,1,1,1,1}) = 2.*WpmM*CosTt ;
328  t.element({10,10,1,1,1,1,1}) = -2.*WpmM*CosTt ;
329  t.element({10,11,1,1,1,1,1}) = 2.*(1 + w)*WpmM*CosTt ;
330 
331  t *= TwoSqTwoGfSq;
332  }
333 
334  void AmplLbLcLepNu::addRefs() const {
335  if(!getSettingsHandler()->checkReference("Bernlochner:2018bfn")){
336  string ref =
337  "@article{Bernlochner:2018bfn,\n"
338  " author = \"Bernlochner, Florian U. and Ligeti, Zoltan and Robinson, Dean J. and Sutcliffe, William L.\",\n"
339  " title = \"{Precise predictions for $\\Lambda_b \\to \\Lambda_c$ semileptonic decays}\",\n"
340  " journal = \"Phys. Rev.\",\n"
341  " volume = \"D99\",\n"
342  " year = \"2019\",\n"
343  " number = \"5\",\n"
344  " pages = \"055008\",\n"
345  " doi = \"10.1103/PhysRevD.99.055008\",\n"
346  " eprint = \"1812.07593\",\n"
347  " archivePrefix = \"arXiv\",\n"
348  " primaryClass = \"hep-ph\",\n"
349  " SLACcitation = \"%%CITATION = ARXIV:1812.07593;%%\"\n"
350  "}\n";
351  getSettingsHandler()->addReference("Bernlochner:2018bfn", ref);
352  }
353  }
354 
355 } // namespace Hammer
TensorData makeEmptySparse(const IndexList &dimensions, const LabelsList &labels)
std::complex< double > & element(const IndexList &indices={})
access an element given its indices
Definition: Tensor.cc:67
Tensor indices label definitions.
double mass() const
returns the invariant mass if the invariant mass squared is negative returns
std::vector< Particle > ParticleList
Definition: Particle.fhh:20
Sparse tensor data container.
Particle class.
Definition: Particle.hh:30
Multidimensional tensor class with complex numbers as elements.
Definition: Tensor.hh:33
void clearData()
sets all the elements to 0
Definition: Tensor.cc:229
const FourMomentum & momentum() const
Definition: Particle.cc:56
Various numerical constants.
Hammer particle data class.
static constexpr double TwoSqTwoGFermi
Definition: Constants.hh:30
Hammer particle class.
4-momentum class
Definition: FourMomentum.hh:30
amplitude