37 {
38
39
40 if (sigmaProcessPtr->nFinal() != 1) return 0.;
41
42
43
44
45
46 const int idRes = sigmaProcessPtr->resonanceA();
47 const double mRes = particleDataPtr->m0(idRes);
48 const double wRes = particleDataPtr->mWidth(idRes);
49 const double m2Res = mRes*mRes;
50 const double GamMRat = wRes/mRes;
51 const double sHat = phaseSpacePtr->sHat();
52 const double rH = std::sqrt(sHat);
53 const double weightBW =
pow2(sHat - m2Res) +
pow2(sHat * GamMRat);
54
55
57 double weightPL = 1;
58 double weightpT_G = 1;
59
61 switch (emode) {
62 case 8:
63
64 if (rH < 50) {
65
66 }
67 else if (rH < 2000) {
68
69
70 const double p0 = 12.4176;
71 const double p1 = -0.364611;
72 const double p2 = 0.00293827;
73 const double p3 = 4.3106e-07;
74 const double p4 = -2.61662e-09;
75 const double p5 = 1.33037e-12;
76 const double p6 = -2.07848e-16;
77 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
78 }
79 else if (rH < 4000) {
80
81
82 const double p0 = 41237.9;
83 const double p1 = -95.9745;
84 const double p2 = 0.0979667;
85 const double p3 = -5.14644e-05;
86 const double p4 = 1.45857e-08;
87 const double p5 = -2.13169e-12;
88 const double p6 = 1.26473e-16;
89 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
90 }
91 else if (rH < 5500) {
92
93
94 const double p0 = 1.11676e+06;
95 const double p1 = -925.647;
96 const double p2 = 0.311595;
97 const double p3 = -5.38465e-05;
98 const double p4 = 4.92286e-09;
99 const double p5 = -2.1452e-13;
100 const double p6 = 2.97112e-18;
101 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
102 }
103 else if (rH <= 6500) {
104
105
106 const double p0 = 9.70964e+13;
107 const double p1 = -4.17142e-03;
108 const double p2 = -3.06415e-03;
109 weightPL = 1/((
p0*std::exp(p1*rH))+(
p2*rH));
110 }
111 weight = weightBW * weightPL;
112 break;
113
114
115 case 13:
116
118
119 if (rH < 4000) {
120 const double p0 = 0.00384785;
121 const double p1 = -1.72701e-05;
122 const double p2 = 2.25365e-08;
123 const double p3 = -6.15774e-12;
124 const double p4 = 4.85585e-16;
125 weightpT_G = 1/(
p0+
p1*std::pow(rH,1)+
p2*std::pow(rH,2)+
p3*std::pow(rH,3)+p4*std::pow(rH,4));
126 }
127 else if (rH < 6000) {
128 const double p10 = 0.00659488 ;
129 const double p11 = 2.68603e-05;
130 const double p12 = -7.80009e-09;
131 const double p13 = 5.54463e-13;
132 weightpT_G = 1/(p10+p11*std::pow(rH,1)+p12*std::pow(rH,2)+p13*std::pow(rH,3));
133 }
134 else if (rH < 13000) {
135 weightpT_G = 1./
exp(2.14289e+00 - 1.17687e-03*rH);
136 } else {
137 weightpT_G = 0;
138 }
139 weight = weightpT_G * (1 + rH/13000.);
140
141 } else {
142
143 if (rH < 50) {
144
145 } else if (rH < 2500) {
146
147
148 const double
153 p4 = -1.29332e-09,
154 p5 = 4.64752e-13,
155 p6 = -5.68297e-17;
156 weightPL = 1./(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
157 }
158 else if (rH < 6000) {
159
160
161 const double
166 p4 = 2.49922e-11,
167 p5 = -3.96985e-15,
168 p6 = 1.88504e-19;
169 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
170 }
171 else if (rH < 8000) {
172
173
174 const double
179 p4 = 6.74486e-13,
180 p5 = 2.82952e-16,
181 p6 = -2.20149e-20;
182 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
183 }
184 else if (rH <= 10500) {
185
186
187 const double
192 p4 = 8.55312e-14,
193 p5 = 6.98307e-18,
194 p6 = -6.52683e-22;
195 weightPL = 1/(
p0+(
p1*rH)+(
p2*std::pow(rH,2))+(
p3*std::pow(rH,3))+(p4*std::pow(rH,4))+(p5*std::pow(rH,5))+(p6*std::pow(rH,6)));
196 }
197 weight = weightBW * weightPL;
198 }
199 break;
200
201
202 default:
203 throw std::runtime_error("Unknown GravFlat:EnergyMode = " + std::to_string(emode) + " (should be either 8 or 13!)");
204 }
205
207 }
static const std::map< unsigned int, unsigned int > pow2