Hammer  1.0.0
Helicity Amplitude Module for Matrix Element Reweighting
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RateBD2starLepNu.cc
Go to the documentation of this file.
1 ///
2 /// @file RateBD2starLepNu.cc
3 /// @brief \f$ B \rightarrow D_2^* \tau\nu \f$ total rate
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++ -*-
12 #include <cmath>
14 #include "Hammer/IndexLabels.hh"
15 #include "Hammer/Math/Constants.hh"
17 #include "Hammer/Particle.hh"
18 #include "Hammer/Tools/Pdg.hh"
19 
20 using namespace std;
21 
22 namespace Hammer {
23 
24  namespace MD = MultiDimensional;
25 
26  RateBD2starLepNu::RateBD2starLepNu() {
27  //Create tensor rank and dimensions
28  vector<IndexType> dims{{11, 8, 11, 8, _nPoints}};
29  string name {"RateBD2starLepNuQ2"};
30  auto& pdg = PID::instance();
31  addProcessSignature(PID::BPLUS,{-PID::DSSD2STAR,PID::NU_TAU,PID::ANTITAU});
32  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTITAU), pdg.getMass(PID::BPLUS)-pdg.getMass(PID::DSSD2STAR))});
34 
35  addProcessSignature(PID::BZERO,{PID::DSSD2STARMINUS,PID::NU_TAU,PID::ANTITAU});
36  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTITAU), pdg.getMass(PID::BZERO)-pdg.getMass(PID::DSSD2STARMINUS))});
38 
39  addProcessSignature(PID::BPLUS,{-PID::DSSD2STAR,PID::NU_MU,PID::ANTIMUON});
40  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTIMUON), pdg.getMass(PID::BPLUS)-pdg.getMass(PID::DSSD2STAR))});
42 
43  addProcessSignature(PID::BZERO,{PID::DSSD2STARMINUS,PID::NU_MU,PID::ANTIMUON});
44  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTIMUON), pdg.getMass(PID::BZERO)-pdg.getMass(PID::DSSD2STARMINUS))});
46 
47  addProcessSignature(PID::BPLUS,{-PID::DSSD2STAR,PID::NU_E,PID::POSITRON});
48  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::POSITRON), pdg.getMass(PID::BPLUS)-pdg.getMass(PID::DSSD2STAR))});
50 
51  addProcessSignature(PID::BZERO,{PID::DSSD2STARMINUS,PID::NU_E,PID::POSITRON});
52  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::POSITRON), pdg.getMass(PID::BZERO)-pdg.getMass(PID::DSSD2STARMINUS))});
54 
55  //bs -> cs
56  addProcessSignature(PID::BS,{PID::DSSDS2STARMINUS,PID::NU_TAU,PID::ANTITAU});
57  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTITAU), pdg.getMass(PID::BS)-pdg.getMass(PID::DSSDS2STARMINUS))});
59 
60  addProcessSignature(PID::BS,{PID::DSSDS2STARMINUS,PID::NU_MU,PID::ANTIMUON});
61  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::ANTIMUON), pdg.getMass(PID::BS)-pdg.getMass(PID::DSSDS2STARMINUS))});
63 
64  addProcessSignature(PID::BS,{PID::DSSDS2STARMINUS,PID::NU_E,PID::POSITRON});
65  addIntegrationBoundaries({PS::makeQ2Function(pdg.getMass(PID::POSITRON), pdg.getMass(PID::BS)-pdg.getMass(PID::DSSDS2STARMINUS))});
67 
68  setSignatureIndex();
69  }
70 
71  Tensor RateBD2starLepNu::evalAtPSPoint(const vector<double>& point) {
72  auto labs = getTensor().labels();
73  labs.pop_back();
74  auto dimensions = getTensor().dims();
75  dimensions.pop_back();
76  Tensor result{"RateBD2starLepNu", MD::makeEmptySparse(dimensions, labs)};
77 
78  const double Mb = masses()[0];
79  const double Mc = masses()[1];
80  const double Mt = masses()[3];
81  const double Mb2 = Mb*Mb;
82  const double Mc2 = Mc*Mc;
83  const double Mt2 = Mt*Mt;
84 
85  //kinematic objects
86  const double Sqq = point[0];
87  // const double Sqq2 = Sqq*Sqq;
88  const double mSqq = Sqq/Mb2;
89  const double w = (Mb2 + Mc2 - Sqq)/(2 * Mb * Mc);
90  const double rC = Mc/Mb;
91  const double rt = Mt/Mb;
92 
93  const double mSqqSq = mSqq*mSqq;
94  const double wSq = w*w;
95  const double rtSq = rt*rt;
96  const double rCSq = rC*rC;
97  // const double rCp1Sq = (rC + 1.)*(rC + 1.);
98  // const double rCm1Sq = (rC - 1.)*(rC - 1.);
99  const double wp1Sq = (w + 1.)*(w + 1.);
100  const double wm1Sq = (w - 1.)*(w - 1.);
101  const double wSqm1Sq = (wSq - 1.)*(wSq - 1.);
102  const double wp1Cu = wp1Sq*(w + 1.);
103  const double wm1Cu = wm1Sq*(w - 1.);
104  const double wSqm1Cu = wSqm1Sq*(wSq - 1.);
105 
106  double RateNorm = (GFermi*GFermi*Mb2*Mc*rCSq*(-Mt2 + Sqq)*(1 + rCSq - rtSq - 2*rC*w)*sqrt(w*w - 1.))/(32.*pow(pi,3.)*(1 + rCSq - 2*rC*w));
107 
108  //set non-zero tensor elements
109  result.element({0,1,0,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
110  result.element({0,1,0,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
111  result.element({0,1,0,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
112  result.element({0,1,1,0}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
113  result.element({0,1,3,0}) = (2*rt*wSqm1Sq)/(3.*mSqq);
114  result.element({0,1,5,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
115  result.element({0,1,5,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
116  result.element({0,1,5,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
117  result.element({0,1,7,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
118  result.element({0,1,7,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
119  result.element({0,1,7,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
120  result.element({0,1,9,5}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
121  result.element({0,1,9,6}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
122  result.element({0,1,9,7}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
123  result.element({0,2,0,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
124  result.element({0,2,0,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
125  result.element({0,2,0,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
126  result.element({0,2,1,0}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
127  result.element({0,2,3,0}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
128  result.element({0,2,5,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
129  result.element({0,2,5,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
130  result.element({0,2,5,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
131  result.element({0,2,7,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
132  result.element({0,2,7,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
133  result.element({0,2,7,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
134  result.element({0,2,9,5}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
135  result.element({0,2,9,6}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
136  result.element({0,2,9,7}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
137  result.element({0,3,0,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
138  result.element({0,3,0,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
139  result.element({0,3,0,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
140  result.element({0,3,1,0}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
141  result.element({0,3,3,0}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
142  result.element({0,3,5,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
143  result.element({0,3,5,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
144  result.element({0,3,5,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
145  result.element({0,3,7,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
146  result.element({0,3,7,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
147  result.element({0,3,7,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
148  result.element({0,3,9,5}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
149  result.element({0,3,9,6}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
150  result.element({0,3,9,7}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
151  result.element({0,4,0,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
152  result.element({0,4,5,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
153  result.element({0,4,7,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
154  result.element({0,4,9,5}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
155  result.element({0,4,9,6}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
156  result.element({1,0,0,1}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
157  result.element({1,0,0,2}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
158  result.element({1,0,0,3}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
159  result.element({1,0,1,0}) = (2*wSqm1Sq)/3.;
160  result.element({1,0,3,0}) = (-2*wSqm1Sq)/3.;
161  result.element({1,0,5,1}) = (2*rt*wSqm1Sq)/(3.*mSqq);
162  result.element({1,0,5,2}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
163  result.element({1,0,5,3}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
164  result.element({1,0,7,1}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
165  result.element({1,0,7,2}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
166  result.element({1,0,7,3}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
167  result.element({2,0,2,0}) = (2*wSqm1Sq)/3.;
168  result.element({2,0,4,0}) = (-2*wSqm1Sq)/3.;
169  result.element({2,0,6,1}) = (2*rt*wSqm1Sq)/(3.*mSqq);
170  result.element({2,0,6,2}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
171  result.element({2,0,6,3}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
172  result.element({2,0,8,1}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
173  result.element({2,0,8,2}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
174  result.element({2,0,8,3}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
175  result.element({3,0,0,1}) = (2*rt*wSqm1Sq)/(3.*mSqq);
176  result.element({3,0,0,2}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
177  result.element({3,0,0,3}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
178  result.element({3,0,1,0}) = (-2*wSqm1Sq)/3.;
179  result.element({3,0,3,0}) = (2*wSqm1Sq)/3.;
180  result.element({3,0,5,1}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
181  result.element({3,0,5,2}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
182  result.element({3,0,5,3}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
183  result.element({3,0,7,1}) = (2*rt*wSqm1Sq)/(3.*mSqq);
184  result.element({3,0,7,2}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
185  result.element({3,0,7,3}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
186  result.element({4,0,2,0}) = (-2*wSqm1Sq)/3.;
187  result.element({4,0,4,0}) = (2*wSqm1Sq)/3.;
188  result.element({4,0,6,1}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
189  result.element({4,0,6,2}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
190  result.element({4,0,6,3}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
191  result.element({4,0,8,1}) = (2*rt*wSqm1Sq)/(3.*mSqq);
192  result.element({4,0,8,2}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
193  result.element({4,0,8,3}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
194  result.element({5,1,0,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
195  result.element({5,1,0,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
196  result.element({5,1,0,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
197  result.element({5,1,1,0}) = (2*rt*wSqm1Sq)/(3.*mSqq);
198  result.element({5,1,3,0}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
199  result.element({5,1,5,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
200  result.element({5,1,5,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
201  result.element({5,1,5,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
202  result.element({5,1,7,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
203  result.element({5,1,7,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
204  result.element({5,1,7,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
205  result.element({5,1,9,5}) = (-4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
206  result.element({5,1,9,6}) = (-4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
207  result.element({5,1,9,7}) = (8*rt*(-rC + w)*wSqm1Sq)/(3.*mSqq);
208  result.element({5,2,0,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
209  result.element({5,2,0,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
210  result.element({5,2,0,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
211  result.element({5,2,1,0}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
212  result.element({5,2,3,0}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
213  result.element({5,2,5,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
214  result.element({5,2,5,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
215  result.element({5,2,5,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
216  result.element({5,2,7,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
217  result.element({5,2,7,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
218  result.element({5,2,7,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
219  result.element({5,2,9,5}) = (8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
220  result.element({5,2,9,6}) = (8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
221  result.element({5,2,9,7}) = (8*rC*rt*wSqm1Cu)/(3.*mSqq);
222  result.element({5,3,0,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
223  result.element({5,3,0,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
224  result.element({5,3,0,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
225  result.element({5,3,1,0}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
226  result.element({5,3,3,0}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
227  result.element({5,3,5,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
228  result.element({5,3,5,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
229  result.element({5,3,5,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
230  result.element({5,3,7,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
231  result.element({5,3,7,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
232  result.element({5,3,7,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
233  result.element({5,3,9,5}) = (8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
234  result.element({5,3,9,6}) = (8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
235  result.element({5,3,9,7}) = (8*rt*wSqm1Cu)/(3.*mSqq);
236  result.element({5,4,0,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
237  result.element({5,4,5,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
238  result.element({5,4,7,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
239  result.element({5,4,9,5}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
240  result.element({5,4,9,6}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
241  result.element({6,1,2,0}) = (2*rt*wSqm1Sq)/(3.*mSqq);
242  result.element({6,1,4,0}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
243  result.element({6,1,6,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
244  result.element({6,1,6,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
245  result.element({6,1,6,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
246  result.element({6,1,8,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
247  result.element({6,1,8,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
248  result.element({6,1,8,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
249  result.element({6,1,10,5}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
250  result.element({6,1,10,6}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
251  result.element({6,1,10,7}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
252  result.element({6,2,2,0}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
253  result.element({6,2,4,0}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
254  result.element({6,2,6,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
255  result.element({6,2,6,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
256  result.element({6,2,6,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
257  result.element({6,2,8,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
258  result.element({6,2,8,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
259  result.element({6,2,8,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
260  result.element({6,2,10,5}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
261  result.element({6,2,10,6}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
262  result.element({6,2,10,7}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
263  result.element({6,3,2,0}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
264  result.element({6,3,4,0}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
265  result.element({6,3,6,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
266  result.element({6,3,6,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
267  result.element({6,3,6,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
268  result.element({6,3,8,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
269  result.element({6,3,8,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
270  result.element({6,3,8,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
271  result.element({6,3,10,5}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
272  result.element({6,3,10,6}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
273  result.element({6,3,10,7}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
274  result.element({6,4,6,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
275  result.element({6,4,8,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
276  result.element({6,4,10,5}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
277  result.element({6,4,10,6}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
278  result.element({7,1,0,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
279  result.element({7,1,0,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
280  result.element({7,1,0,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
281  result.element({7,1,1,0}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
282  result.element({7,1,3,0}) = (2*rt*wSqm1Sq)/(3.*mSqq);
283  result.element({7,1,5,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
284  result.element({7,1,5,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
285  result.element({7,1,5,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
286  result.element({7,1,7,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
287  result.element({7,1,7,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
288  result.element({7,1,7,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
289  result.element({7,1,9,5}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
290  result.element({7,1,9,6}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
291  result.element({7,1,9,7}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
292  result.element({7,2,0,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
293  result.element({7,2,0,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
294  result.element({7,2,0,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
295  result.element({7,2,1,0}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
296  result.element({7,2,3,0}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
297  result.element({7,2,5,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
298  result.element({7,2,5,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
299  result.element({7,2,5,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
300  result.element({7,2,7,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
301  result.element({7,2,7,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
302  result.element({7,2,7,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
303  result.element({7,2,9,5}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
304  result.element({7,2,9,6}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
305  result.element({7,2,9,7}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
306  result.element({7,3,0,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
307  result.element({7,3,0,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
308  result.element({7,3,0,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
309  result.element({7,3,1,0}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
310  result.element({7,3,3,0}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
311  result.element({7,3,5,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
312  result.element({7,3,5,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
313  result.element({7,3,5,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
314  result.element({7,3,7,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
315  result.element({7,3,7,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
316  result.element({7,3,7,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
317  result.element({7,3,9,5}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
318  result.element({7,3,9,6}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
319  result.element({7,3,9,7}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
320  result.element({7,4,0,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
321  result.element({7,4,5,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
322  result.element({7,4,7,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
323  result.element({7,4,9,5}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
324  result.element({7,4,9,6}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
325  result.element({8,1,2,0}) = (-2*rt*wSqm1Sq)/(3.*mSqq);
326  result.element({8,1,4,0}) = (2*rt*wSqm1Sq)/(3.*mSqq);
327  result.element({8,1,6,1}) = -((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
328  result.element({8,1,6,2}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
329  result.element({8,1,6,3}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
330  result.element({8,1,8,1}) = ((-1 + wSq)*(6*mSqqSq + mSqq*(4*rCSq + 3*rtSq - 8*rC*w + 4*wSq) + 2*rtSq*(-3 + rCSq - 2*rC*w + 4*wSq)))/(9.*mSqqSq);
331  result.element({8,1,8,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
332  result.element({8,1,8,3}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
333  result.element({8,1,10,5}) = (-4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
334  result.element({8,1,10,6}) = (-4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
335  result.element({8,1,10,7}) = (8*rt*(-rC + w)*wSqm1Sq)/(3.*mSqq);
336  result.element({8,2,2,0}) = (2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
337  result.element({8,2,4,0}) = (-2*rt*(-1 + rC*w)*wSqm1Sq)/(3.*mSqq);
338  result.element({8,2,6,1}) = (2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
339  result.element({8,2,6,2}) = (-2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
340  result.element({8,2,6,3}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
341  result.element({8,2,8,1}) = (-2*wSqm1Sq*(2*mSqq*rC*(rC - w) + rtSq*(-3 + rCSq + 2*rC*w)))/(9.*mSqqSq);
342  result.element({8,2,8,2}) = (2*wSqm1Sq*(2*mSqq*rCSq*(-1 + wSq) + rtSq*(3 - 6*rC*w + rCSq*(-1 + 4*wSq))))/(9.*mSqqSq);
343  result.element({8,2,8,3}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
344  result.element({8,2,10,5}) = (8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
345  result.element({8,2,10,6}) = (8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
346  result.element({8,2,10,7}) = (8*rC*rt*wSqm1Cu)/(3.*mSqq);
347  result.element({8,3,2,0}) = (2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
348  result.element({8,3,4,0}) = (-2*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
349  result.element({8,3,6,1}) = (4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
350  result.element({8,3,6,2}) = (-2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
351  result.element({8,3,6,3}) = (-2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
352  result.element({8,3,8,1}) = (-4*(mSqq + 2*rtSq)*(rC - w)*wSqm1Sq)/(9.*mSqqSq);
353  result.element({8,3,8,2}) = (2*wSqm1Sq*(2*mSqq*rC*(-1 + wSq) + rtSq*(3*w + 3*rCSq*w - 2*rC*(2 + wSq))))/(9.*mSqqSq);
354  result.element({8,3,8,3}) = (2*wSqm1Sq*(2*mSqq*(-1 + wSq) + rtSq*(-1 + 3*rCSq - 6*rC*w + 4*wSq)))/(9.*mSqqSq);
355  result.element({8,3,10,5}) = (8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
356  result.element({8,3,10,6}) = (8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
357  result.element({8,3,10,7}) = (8*rt*wSqm1Cu)/(3.*mSqq);
358  result.element({8,4,6,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
359  result.element({8,4,8,4}) = ((2*mSqq + rtSq)*wSqm1Sq)/(3.*mSqq);
360  result.element({8,4,10,5}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
361  result.element({8,4,10,6}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
362  result.element({9,5,0,1}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
363  result.element({9,5,0,2}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
364  result.element({9,5,0,3}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
365  result.element({9,5,0,4}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
366  result.element({9,5,5,1}) = (-4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
367  result.element({9,5,5,2}) = (8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
368  result.element({9,5,5,3}) = (8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
369  result.element({9,5,5,4}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
370  result.element({9,5,7,1}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
371  result.element({9,5,7,2}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
372  result.element({9,5,7,3}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
373  result.element({9,5,7,4}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
374  result.element({9,5,9,5}) = (32*(mSqq + 2*rtSq)*(-1 + w)*wp1Sq*(mSqq - 6*rC + 3*w + mSqq*w + 3*rCSq*w))/(9.*mSqqSq);
375  result.element({9,5,9,6}) = (32*(mSqqSq + 6*(-1 + rCSq)*rtSq + mSqq*(-3 + 3*rCSq + 2*rtSq))*wSqm1Sq)/(9.*mSqqSq);
376  result.element({9,5,9,7}) = (32*(mSqq + 2*rtSq)*wm1Sq*wp1Cu)/(9.*mSqq);
377  result.element({9,6,0,1}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
378  result.element({9,6,0,2}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
379  result.element({9,6,0,3}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
380  result.element({9,6,0,4}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
381  result.element({9,6,5,1}) = (-4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
382  result.element({9,6,5,2}) = (8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
383  result.element({9,6,5,3}) = (8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
384  result.element({9,6,5,4}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
385  result.element({9,6,7,1}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
386  result.element({9,6,7,2}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
387  result.element({9,6,7,3}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
388  result.element({9,6,7,4}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
389  result.element({9,6,9,5}) = (32*(mSqqSq + 6*(-1 + rCSq)*rtSq + mSqq*(-3 + 3*rCSq + 2*rtSq))*wSqm1Sq)/(9.*mSqqSq);
390  result.element({9,6,9,6}) = (32*(mSqq + 2*rtSq)*wm1Sq*(1 + w)*(mSqq*(-1 + w) + 3*(-2*rC + w + rCSq*w)))/(9.*mSqqSq);
391  result.element({9,6,9,7}) = (32*(mSqq + 2*rtSq)*wm1Cu*wp1Sq)/(9.*mSqq);
392  result.element({9,7,0,1}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
393  result.element({9,7,0,2}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
394  result.element({9,7,0,3}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
395  result.element({9,7,5,1}) = (8*rt*(-rC + w)*wSqm1Sq)/(3.*mSqq);
396  result.element({9,7,5,2}) = (8*rC*rt*wSqm1Cu)/(3.*mSqq);
397  result.element({9,7,5,3}) = (8*rt*wSqm1Cu)/(3.*mSqq);
398  result.element({9,7,7,1}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
399  result.element({9,7,7,2}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
400  result.element({9,7,7,3}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
401  result.element({9,7,9,5}) = (32*(mSqq + 2*rtSq)*wm1Sq*wp1Cu)/(9.*mSqq);
402  result.element({9,7,9,6}) = (32*(mSqq + 2*rtSq)*wm1Cu*wp1Sq)/(9.*mSqq);
403  result.element({9,7,9,7}) = (32*(mSqq + 2*rtSq)*wSqm1Cu)/(9.*mSqq);
404  result.element({10,5,6,1}) = (4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
405  result.element({10,5,6,2}) = (-8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
406  result.element({10,5,6,3}) = (-8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
407  result.element({10,5,6,4}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
408  result.element({10,5,8,1}) = (-4*rt*(-3 + 5*rC - 2*w)*(-1 + w)*wp1Sq)/(3.*mSqq);
409  result.element({10,5,8,2}) = (8*rC*rt*wm1Sq*wp1Cu)/(3.*mSqq);
410  result.element({10,5,8,3}) = (8*rt*wm1Sq*wp1Cu)/(3.*mSqq);
411  result.element({10,5,8,4}) = (4*(1 + rC)*rt*wSqm1Sq)/mSqq;
412  result.element({10,5,10,5}) = (32*(mSqq + 2*rtSq)*(-1 + w)*wp1Sq*(mSqq - 6*rC + 3*w + mSqq*w + 3*rCSq*w))/(9.*mSqqSq);
413  result.element({10,5,10,6}) = (32*(mSqqSq + 6*(-1 + rCSq)*rtSq + mSqq*(-3 + 3*rCSq + 2*rtSq))*wSqm1Sq)/(9.*mSqqSq);
414  result.element({10,5,10,7}) = (32*(mSqq + 2*rtSq)*wm1Sq*wp1Cu)/(9.*mSqq);
415  result.element({10,6,6,1}) = (4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
416  result.element({10,6,6,2}) = (-8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
417  result.element({10,6,6,3}) = (-8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
418  result.element({10,6,6,4}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
419  result.element({10,6,8,1}) = (-4*rt*(3 + 5*rC - 2*w)*wm1Sq*(1 + w))/(3.*mSqq);
420  result.element({10,6,8,2}) = (8*rC*rt*wm1Cu*wp1Sq)/(3.*mSqq);
421  result.element({10,6,8,3}) = (8*rt*wm1Cu*wp1Sq)/(3.*mSqq);
422  result.element({10,6,8,4}) = (4*(-1 + rC)*rt*wSqm1Sq)/mSqq;
423  result.element({10,6,10,5}) = (32*(mSqqSq + 6*(-1 + rCSq)*rtSq + mSqq*(-3 + 3*rCSq + 2*rtSq))*wSqm1Sq)/(9.*mSqqSq);
424  result.element({10,6,10,6}) = (32*(mSqq + 2*rtSq)*wm1Sq*(1 + w)*(mSqq*(-1 + w) + 3*(-2*rC + w + rCSq*w)))/(9.*mSqqSq);
425  result.element({10,6,10,7}) = (32*(mSqq + 2*rtSq)*wm1Cu*wp1Sq)/(9.*mSqq);
426  result.element({10,7,6,1}) = (8*rt*(rC - w)*wSqm1Sq)/(3.*mSqq);
427  result.element({10,7,6,2}) = (-8*rC*rt*wSqm1Cu)/(3.*mSqq);
428  result.element({10,7,6,3}) = (-8*rt*wSqm1Cu)/(3.*mSqq);
429  result.element({10,7,8,1}) = (8*rt*(-rC + w)*wSqm1Sq)/(3.*mSqq);
430  result.element({10,7,8,2}) = (8*rC*rt*wSqm1Cu)/(3.*mSqq);
431  result.element({10,7,8,3}) = (8*rt*wSqm1Cu)/(3.*mSqq);
432  result.element({10,7,10,5}) = (32*(mSqq + 2*rtSq)*wm1Sq*wp1Cu)/(9.*mSqq);
433  result.element({10,7,10,6}) = (32*(mSqq + 2*rtSq)*wm1Cu*wp1Sq)/(9.*mSqq);
434  result.element({10,7,10,7}) = (32*(mSqq + 2*rtSq)*wSqm1Cu)/(9.*mSqq);
435 
436  result*=(RateNorm);
437 
438  return result;
439 
440  }
441 
442 }
TensorData makeEmptySparse(const IndexList &dimensions, const LabelsList &labels)
LabelsList labels() const
get the labels of all the indices at once
Definition: Tensor.cc:83
static constexpr double GFermi
Definition: Constants.hh:29
Tensor indices label definitions.
Sparse tensor data container.
Multidimensional tensor class with complex numbers as elements.
Definition: Tensor.hh:33
Various numerical constants.
Hammer particle data class.
BoundaryFunction makeQ2Function(double qmin, double qmax)
Definition: RateBase.hh:122
Hammer particle class.
static constexpr double pi
Definition: Constants.hh:21