EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtISGWFF.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
22
23#include "EvtGenBase/EvtId.hh"
24#include "EvtGenBase/EvtPDL.hh"
26
27#include <math.h>
28#include <stdlib.h>
29#include <string>
30using std::endl;
31
32void EvtISGWFF::getscalarff( EvtId parent, EvtId daught, double t, double mass,
33 double* fpf, double* f0f )
34{
35 //added by Lange Jan4,2000
36 static const EvtId D0 = EvtPDL::getId( "D0" );
37 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
38 static const EvtId DP = EvtPDL::getId( "D+" );
39 static const EvtId DM = EvtPDL::getId( "D-" );
40
41 static const EvtId D3P0P = EvtPDL::getId( "D_0*+" );
42 static const EvtId D3P0N = EvtPDL::getId( "D_0*-" );
43 static const EvtId D3P00 = EvtPDL::getId( "D_0*0" );
44 static const EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
45
46 static const EvtId D21S0P = EvtPDL::getId( "hi" );
47 static const EvtId D21S0N = EvtPDL::getId( "hi" );
48 static const EvtId D21S00 = EvtPDL::getId( "hi" );
49 static const EvtId D21S0B = EvtPDL::getId( "hi" );
50
51 static const EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
52
53 static const EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
54 static const EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
55 static const EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
56
57 static const EvtId PIP = EvtPDL::getId( "pi+" );
58 static const EvtId PIM = EvtPDL::getId( "pi-" );
59 static const EvtId PI0 = EvtPDL::getId( "pi0" );
60
61 static const EvtId A0P = EvtPDL::getId( "a_0+" );
62 static const EvtId A0M = EvtPDL::getId( "a_0-" );
63 static const EvtId A00 = EvtPDL::getId( "a_00" );
64
65 static const EvtId F0 = EvtPDL::getId( "f_0" );
66 static const EvtId F0PR = EvtPDL::getId( "f'_0" );
67
68 static const EvtId ETA = EvtPDL::getId( "eta" );
69 static const EvtId ETAPR = EvtPDL::getId( "eta'" );
70
71 static const EvtId KP = EvtPDL::getId( "K+" );
72 static const EvtId KM = EvtPDL::getId( "K-" );
73 static const EvtId K0 = EvtPDL::getId( "K0" );
74 static const EvtId KB = EvtPDL::getId( "anti-K0" );
75 static const EvtId K0S = EvtPDL::getId( "K_S0" );
76 static const EvtId K0L = EvtPDL::getId( "K_L0" );
77
78 static const EvtId K0STP = EvtPDL::getId( "K_0*+" );
79 static const EvtId K0STM = EvtPDL::getId( "K_0*-" );
80 static const EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
81 static const EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
82
83 static const EvtId DSP = EvtPDL::getId( "D_s+" );
84 static const EvtId DSM = EvtPDL::getId( "D_s-" );
85
86 static const EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
87 static const EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
88
89 double fmf;
90 double mb = EvtPDL::getMeanMass( parent );
91
92 if ( daught == PI0 || daught == PIP || daught == PIM || daught == ETA ||
93 daught == ETAPR || daught == D0 || daught == D0B || daught == DP ||
94 daught == DM || daught == KP || daught == KM || daught == K0 ||
95 daught == K0L || daught == KB || daught == DSP || daught == DSM ||
96 daught == K0S ) {
97 EvtISGW1FF1S0( parent, daught, t, mass, fpf, &fmf );
98 }
99
100 if ( daught == PI2S0 || daught == PI2SP || daught == PI2SM ||
101 daught == ETA2S || daught == D21S0P || daught == D21S0B ||
102 daught == D21S0N || daught == D21S00 ) {
103 EvtISGW1FF21S0( parent, daught, t, mass, fpf, &fmf );
104 }
105
106 if ( daught == A00 || daught == A0P || daught == A0M || daught == F0 ||
107 daught == F0PR || daught == D3P0P || daught == D3P00 ||
108 daught == D3P0B || daught == D3P0N || daught == K0STM ||
109 daught == K0STB || daught == K0STP || daught == D3P0SP ||
110 daught == D3P0SN || daught == K0ST0 ) {
111 EvtISGW1FF3P0( parent, daught, t, mass, fpf, &fmf );
112 }
113
114 *f0f = ( fmf / ( ( mb * mb - mass * mass ) / t ) ) + ( *fpf );
115
116 return;
117}
118
119void EvtISGWFF::gettensorff( EvtId parent, EvtId daught, double t, double mass,
120 double* hf, double* kf, double* bpf, double* bmf )
121{
122 //added by Lange Jan4,2000
123 EvtISGW1FF3P2( parent, daught, t, mass, hf, kf, bpf, bmf );
124
125 return;
126}
127
128void EvtISGWFF::getvectorff( EvtId parent, EvtId daught, double t, double mass,
129 double* a1f, double* a2f, double* vf, double* a0f )
130{
131 //added by Lange Jan4,2000
132 static const EvtId DST0 = EvtPDL::getId( "D*0" );
133 static const EvtId DSTB = EvtPDL::getId( "anti-D*0" );
134 static const EvtId DSTP = EvtPDL::getId( "D*+" );
135 static const EvtId DSTM = EvtPDL::getId( "D*-" );
136
137 static const EvtId D1P1P = EvtPDL::getId( "D_1+" );
138 static const EvtId D1P1N = EvtPDL::getId( "D_1-" );
139 static const EvtId D1P10 = EvtPDL::getId( "D_10" );
140 static const EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
141
142 static const EvtId D3P1P = EvtPDL::getId( "D'_1+" );
143 static const EvtId D3P1N = EvtPDL::getId( "D'_1-" );
144 static const EvtId D3P10 = EvtPDL::getId( "D'_10" );
145 static const EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
146
147 static const EvtId D23S1P = EvtPDL::getId( "hi" );
148 static const EvtId D23S1N = EvtPDL::getId( "hi" );
149 static const EvtId D23S10 = EvtPDL::getId( "hi" );
150 static const EvtId D23S1B = EvtPDL::getId( "hi" );
151
152 static const EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
153 static const EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
154 static const EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
155 static const EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
156
157 static const EvtId RHOP = EvtPDL::getId( "rho+" );
158 static const EvtId RHOM = EvtPDL::getId( "rho-" );
159 static const EvtId RHO0 = EvtPDL::getId( "rho0" );
160
161 static const EvtId A1P = EvtPDL::getId( "a_1+" );
162 static const EvtId A1M = EvtPDL::getId( "a_1-" );
163 static const EvtId A10 = EvtPDL::getId( "a_10" );
164
165 static const EvtId B1P = EvtPDL::getId( "b_1+" );
166 static const EvtId B1M = EvtPDL::getId( "b_1-" );
167 static const EvtId B10 = EvtPDL::getId( "b_10" );
168
169 static const EvtId H1 = EvtPDL::getId( "h_1" );
170 static const EvtId H1PR = EvtPDL::getId( "h'_1" );
171
172 static const EvtId F1 = EvtPDL::getId( "f_1" );
173 static const EvtId F1PR = EvtPDL::getId( "f'_1" );
174
175 static const EvtId OMEG = EvtPDL::getId( "omega" );
176
177 static const EvtId KSTP = EvtPDL::getId( "K*+" );
178 static const EvtId KSTM = EvtPDL::getId( "K*-" );
179 static const EvtId KST0 = EvtPDL::getId( "K*0" );
180 static const EvtId KSTB = EvtPDL::getId( "anti-K*0" );
181
182 static const EvtId K1P = EvtPDL::getId( "K_1+" );
183 static const EvtId K1M = EvtPDL::getId( "K_1-" );
184 static const EvtId K10 = EvtPDL::getId( "K_10" );
185 static const EvtId K1B = EvtPDL::getId( "anti-K_10" );
186
187 static const EvtId K1STP = EvtPDL::getId( "K'_1+" );
188 static const EvtId K1STM = EvtPDL::getId( "K'_1-" );
189 static const EvtId K1ST0 = EvtPDL::getId( "K'_10" );
190 static const EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
191
192 static const EvtId PHI = EvtPDL::getId( "phi" );
193
194 static const EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
195 static const EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
196
197 static const EvtId D3P1SP = EvtPDL::getId( "D'_s1*+" );
198 static const EvtId D3P1SN = EvtPDL::getId( "D'_s1*-" );
199
200 static const EvtId DSSTP = EvtPDL::getId( "D_s*+" );
201 static const EvtId DSSTM = EvtPDL::getId( "D_s*-" );
202
203 double ff, gf, apf, amf;
204
205 if ( daught == DST0 || daught == DSTP || daught == DSTM || daught == DSTB ||
206 daught == OMEG || daught == RHO0 || daught == RHOM || daught == RHOP ||
207 daught == KSTP || daught == KSTM || daught == KST0 || daught == KSTB ||
208 daught == PHI || daught == DSSTP || daught == DSSTM ) {
209 EvtISGW1FF3S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
210 }
211 if ( daught == B10 || daught == B1P || daught == B1M || daught == H1 ||
212 daught == H1PR || daught == D1P1P || daught == D1P10 || daught == D1P1B ||
213 daught == D1P1SP || daught == D1P1SN || daught == D1P1N ||
214 daught == K10 || daught == K1B || daught == K1P || daught == K1M ) {
215 EvtISGW1FF1P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
216 }
217 if ( daught == RHO2S0 || daught == RHO2SP || daught == RHO2SM ||
218 daught == OMEG2S || daught == D23S1P || daught == D23S1B ||
219 daught == D23S1N || daught == D23S10 ) {
220 EvtISGW1FF23S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
221 }
222 if ( daught == A10 || daught == A1P || daught == A1M || daught == F1 ||
223 daught == F1PR || daught == D3P1P || daught == D3P10 ||
224 daught == D3P1B || daught == D3P1N || daught == K1STM ||
225 daught == K1STB || daught == K1STP || daught == D3P1SP ||
226 daught == D3P1SN || daught == K1ST0 ) {
227 EvtISGW1FF3P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
228 }
229
230 // Need to stuff in some factors to make these the ffs that
231 // is used elsewhere...
232
233 double mb = EvtPDL::getMeanMass( parent );
234
235 *vf = ( gf ) * ( mb + mass );
236 *a1f = ( ff ) / ( mb + mass );
237 *a2f = -1.0 * ( apf ) * ( mb + mass );
238 double a3f = ( ( mb + mass ) / ( 2.0 * mass ) ) * ( *a1f ) -
239 ( ( mb - mass ) / ( 2.0 * mass ) ) * ( *a2f );
240
241 *a0f = a3f - ( ( t * amf ) / ( 2.0 * mass ) );
242
243 return;
244}
245
246void EvtISGWFF::EvtISGW1FF3P2( EvtId parent, EvtId daugt, double t, double mass,
247 double* hf, double* kf, double* bpf, double* bmf )
248{
249 //added by Lange Jan4,2000
250 static const EvtId BP = EvtPDL::getId( "B+" );
251 static const EvtId BM = EvtPDL::getId( "B-" );
252 static const EvtId B0 = EvtPDL::getId( "B0" );
253 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
254
255 static const EvtId D3P2P = EvtPDL::getId( "D_2*+" );
256 static const EvtId D3P2N = EvtPDL::getId( "D_2*-" );
257 static const EvtId D3P20 = EvtPDL::getId( "D_2*0" );
258 static const EvtId D3P2B = EvtPDL::getId( "anti-D_2*0" );
259
260 static const EvtId A2P = EvtPDL::getId( "a_2+" );
261 static const EvtId A2M = EvtPDL::getId( "a_2-" );
262 static const EvtId A20 = EvtPDL::getId( "a_20" );
263
264 static const EvtId F2 = EvtPDL::getId( "f_2" );
265 static const EvtId F2PR = EvtPDL::getId( "f'_2" );
266
267 double mtb;
268 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
269 double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
270 double mum, mup, tm, bb2( 0.0 ), bbx2;
271 double msb( 0.0 ), kap;
272
273 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
274 msb = 5.2;
275 msd = 0.33;
276 bb2 = 0.41 * 0.41;
277 if ( daugt == A20 || daugt == A2P || daugt == A2M || daugt == F2 ||
278 daugt == F2PR ) {
279 msq = 0.33;
280 bx2 = 0.27 * 0.27;
281 } else {
282 if ( daugt == D3P2P || daugt == D3P2N || daugt == D3P2B ||
283 daugt == D3P20 ) {
284 msq = 1.82;
285 bx2 = 0.34 * 0.34;
286 } else {
287 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
288 << "Not implemented daugt in get_isgw_ff_3P1.\n";
289 }
290 }
291 } else {
292 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
293 << "Not implemented parent in get_isgw_ff_3P1.\n";
294 }
295
296 mtb = msb + msd;
297 mtx = msq + msd;
298
299 mb = EvtPDL::getMeanMass( parent );
300 mx = mass;
301
302 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
303 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
304 bbx2 = 0.5 * ( bb2 + bx2 );
305
306 tm = ( mb - mx ) * ( mb - mx );
307 if ( t > tm )
308 t = 0.99 * tm;
309 kap = 0.7 * 0.7;
310
311 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
312 exp( -1.0 *
313 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
314
315 *hf = f5 * ( msd / ( sqrt( 8.0 * bb2 ) * mtb ) ) *
316 ( ( 1.0 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
317
318 *kf = f5 * msd * sqrt( 2.0 / bb2 );
319
320 *bpf = ( -1.0 * f5 * msd / ( sqrt( 8.0 * bb2 ) * msb * mtx ) ) *
321 ( 1.0 - ( msd * msb * bx2 / ( 2.0 * mup * mtb * bbx2 ) ) +
322 ( msd * msb * bx2 * ( 1.0 - ( msd * bx2 / ( 2.0 * mtb * bbx2 ) ) ) /
323 ( 4.0 * mtb * mum * bbx2 ) ) );
324 *bmf = 0.0;
325 return;
326} //get_ff_isgw_1p1
327
328void EvtISGWFF::EvtISGW1FF1S0( EvtId parent, EvtId daugt, double t, double mass,
329 double* fpf, double* fmf )
330{
331 //added by Lange Jan4,2000
332 static const EvtId BP = EvtPDL::getId( "B+" );
333 static const EvtId BM = EvtPDL::getId( "B-" );
334 static const EvtId B0 = EvtPDL::getId( "B0" );
335 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
336
337 static const EvtId D0 = EvtPDL::getId( "D0" );
338 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
339 static const EvtId DP = EvtPDL::getId( "D+" );
340 static const EvtId DM = EvtPDL::getId( "D-" );
341
342 static const EvtId PIP = EvtPDL::getId( "pi+" );
343 static const EvtId PIM = EvtPDL::getId( "pi-" );
344 static const EvtId PI0 = EvtPDL::getId( "pi0" );
345
346 static const EvtId ETA = EvtPDL::getId( "eta" );
347 static const EvtId ETAPR = EvtPDL::getId( "eta'" );
348
349 double mtb;
350 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
351 double msq( 0.0 ), bx2( 0.0 ), mtx;
352 double f3, kap;
353 double msb( 0.0 ), bb2( 0.0 ), mup, mum, bbx2, tm;
354
355 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
356 msb = 5.2;
357 msd = 0.33;
358 bb2 = 0.41 * 0.41;
359 if ( daugt == PIP || daugt == PIM || daugt == PI0 || daugt == ETA ||
360 daugt == ETAPR ) {
361 msq = 0.33;
362 bx2 = 0.31 * 0.31;
363 } else {
364 if ( daugt == D0 || daugt == DP || daugt == DM || daugt == D0B ) {
365 msq = 1.82;
366 bx2 = 0.39 * 0.39;
367 } else {
368 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
369 << "Not implemented daugt in get_isgw_ff_1S0.\n";
370 }
371 }
372 } else {
373 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
374 << "Not implemented parent in get_isgw_ff_1S0.\n";
375 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
376 << "Parent:" << parent.getId() << endl;
377 }
378
379 mtb = msb + msd;
380 mtx = msq + msd;
381 mb = EvtPDL::getMeanMass( parent );
382 mx = mass;
383 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
384 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
385 bbx2 = 0.5 * ( bb2 + bx2 );
386 tm = ( mb - mx ) * ( mb - mx );
387 if ( t > tm )
388 t = 0.99 * tm;
389
390 kap = 0.7 * 0.7;
391 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
392 exp( -1.0 *
393 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
394
395 *fpf = f3 * ( 1 + ( msb / ( 2.0 * mum ) ) -
396 ( msb * msq * msd * bb2 / ( 4.0 * mup * mum * mtx * bbx2 ) ) );
397 *fmf = f3 * ( 1.0 - ( mtb + mtx ) *
398 ( 0.5 / msq -
399 ( msd * bb2 / ( 4.0 * mup * mtx * bbx2 ) ) ) );
400
401 return;
402} //get_ff_isgw_1s0
403
404void EvtISGWFF::EvtISGW1FF3S1( EvtId parent, EvtId daugt, double t, double mass,
405 double* f, double* g, double* ap, double* am )
406{
407 //added by Lange Jan4,2000
408 static const EvtId BP = EvtPDL::getId( "B+" );
409 static const EvtId BM = EvtPDL::getId( "B-" );
410 static const EvtId B0 = EvtPDL::getId( "B0" );
411 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
412
413 static const EvtId DST0 = EvtPDL::getId( "D*0" );
414 static const EvtId DSTB = EvtPDL::getId( "anti-D*0" );
415 static const EvtId DSTP = EvtPDL::getId( "D*+" );
416 static const EvtId DSTM = EvtPDL::getId( "D*-" );
417
418 static const EvtId RHOP = EvtPDL::getId( "rho+" );
419 static const EvtId RHOM = EvtPDL::getId( "rho-" );
420 static const EvtId RHO0 = EvtPDL::getId( "rho0" );
421
422 static const EvtId OMEG = EvtPDL::getId( "omega" );
423
424 double msd( 0.0 ), msq( 0.0 ), bb2( 0.0 ), mum, mtx, bbx2;
425 double bx2( 0.0 ), msb( 0.0 ), tm;
426 double mb, mx, f3, kap;
427
428 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
429 msb = 5.2;
430 msd = 0.33;
431 bb2 = 0.41 * 0.41;
432 if ( daugt == DSTP || daugt == DSTM || daugt == DSTB || daugt == DST0 ) {
433 msq = 1.82;
434 bx2 = 0.39 * 0.39;
435 } else {
436 if ( daugt == RHOP || daugt == RHOM || daugt == RHO0 ||
437 daugt == OMEG ) {
438 msq = 0.33;
439 bx2 = 0.31 * 0.31;
440 } else {
441 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
442 << "Not implemented daugt in get_isgw_ff_3S1.\n";
443 }
444 }
445 } else {
446 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
447 << "Not implemented parent in get_isgw_ff_3S1.\n";
448 }
449
450 double mtb;
451
452 mtb = msb + msd;
453 mtx = msq + msd;
454
455 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
456 bbx2 = 0.5 * ( bb2 + bx2 );
457 mb = EvtPDL::getMeanMass( parent );
458 mx = mass;
459 tm = ( mb - mx ) * ( mb - mx );
460 if ( t > tm )
461 t = 0.99 * tm;
462
463 kap = 0.7 * 0.7;
464 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
465 exp( -1.0 *
466 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
467
468 *f = 2.0 * mtb * f3;
469 *g = 0.5 * f3 * ( ( 1 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
470 *ap = ( -1.0 * f3 / ( 2.0 * mtx ) ) *
471 ( 1.0 + ( msd * ( bb2 - bx2 ) / ( msb * ( bb2 + bx2 ) ) ) -
472 ( msd * msd * bx2 * bx2 / ( 4.0 * mum * mtb * bbx2 * bbx2 ) ) );
473 *am = 0.0;
474}
475
476void EvtISGWFF::EvtISGW1FF23S1( EvtId parent, EvtId daugt, double t,
477 double mass, double* fpf, double* gpf,
478 double* appf, double* apmf )
479{
480 //added by Lange Jan4,2000
481 static const EvtId BP = EvtPDL::getId( "B+" );
482 static const EvtId BM = EvtPDL::getId( "B-" );
483 static const EvtId B0 = EvtPDL::getId( "B0" );
484 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
485
486 static const EvtId D23S1P = EvtPDL::getId( "hi" );
487 static const EvtId D23S1N = EvtPDL::getId( "hi" );
488 static const EvtId D23S10 = EvtPDL::getId( "hi" );
489 static const EvtId D23S1B = EvtPDL::getId( "hi" );
490
491 static const EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
492 static const EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
493 static const EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
494 static const EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
495
496 double mtb;
497 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
498 double msq( 0.0 ), bx2( 0.0 ), mtx;
499 double f3, f5, tt;
500 double mum, bb2( 0.0 ), bbx2, tm, msb( 0.0 );
501
502 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
503 msb = 5.2;
504 msd = 0.33;
505 bb2 = 0.41 * 0.41;
506 if ( daugt == RHO2SP || daugt == RHO2SM || daugt == RHO2S0 ||
507 daugt == OMEG2S ) {
508 msq = 0.33;
509 bx2 = 0.31 * 0.31;
510 } else {
511 if ( daugt == D23S1N || daugt == D23S10 || daugt == D23S1P ||
512 daugt == D23S1B ) {
513 msq = 1.82;
514 bx2 = 0.39 * 0.39;
515 } else {
516 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
517 << "Not implemented daugt in get_isgw_ff_23P1.\n";
518 }
519 }
520 } else {
521 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
522 << "Not implemented parent in get_isgw_ff_23P1.\n";
523 }
524
525 mtb = msb + msd;
526 mtx = msq + msd;
527 mb = EvtPDL::getMeanMass( parent );
528 mx = mass;
529 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
530 bbx2 = 0.5 * ( bb2 + bx2 );
531 tm = ( mb - mx ) * ( mb - mx );
532 if ( t > tm )
533 t = 0.99 * tm;
534
535 double kap = 0.7 * 0.7;
536 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
537 exp( -1.0 *
538 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
539
540 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
541 exp( -1.0 *
542 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
543
544 *fpf = sqrt( 6.0 ) * f3 * mtb *
545 ( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
546 ( ( msd * msd * bx2 * ( tm - t ) ) /
547 ( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) );
548
549 *gpf = sqrt( 3.0 / 8.0 ) * f3 *
550 ( ( ( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
551 ( ( msd * msd * bx2 * ( tm - t ) ) /
552 ( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) ) *
553 ( ( 1.0 / msq ) - ( ( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) ) +
554 ( ( msd * bb2 * bx2 ) / ( 3.0 * mum * mtx * bbx2 * bbx2 ) ) );
555
556 tt = ( msd * msd * bx2 * ( tm - t ) ) / ( mtx * mtb * bb2 * kap * bbx2 );
557
558 *appf = ( f5 / ( sqrt( 6.0 ) * mtx ) ) *
559 ( ( ( 3.0 * mtb * bbx2 / ( 2.0 * msb * sqrt( bb2 * bx2 ) ) ) *
560 ( 1.0 - ( ( msd * msd * msb * bx2 * bx2 ) /
561 ( 4.0 * mtb * mtb * mum * bbx2 * bbx2 ) ) ) ) -
562 ( ( 3.0 * msd * sqrt( bx2 / bb2 ) ) / ( 2.0 * msb ) ) +
563 ( ( 5.0 * msd * sqrt( bx2 * bb2 ) * ( 1.0 + 0.1 * tt ) ) /
564 ( 2.0 * msb * bbx2 ) ) -
565 ( ( 3.0 * mtb * sqrt( bb2 / bx2 ) * ( 1.0 + ( tt / 6.0 ) ) ) /
566 ( 2.0 * msb ) ) +
567 ( ( 7.0 * msd * msd * sqrt( bb2 / bx2 ) * bx2 * bx2 *
568 ( 1.0 + ( tt / 14.0 ) ) ) /
569 ( 8.0 * mtb * mum * bbx2 * bbx2 ) ) );
570
571 *apmf = 0.0;
572 return;
573} //get_ff_isgw_23s1
574
575void EvtISGWFF::EvtISGW1FF3P1( EvtId parent, EvtId daugt, double t, double mass,
576 double* lf, double* qf, double* cpf, double* cmf )
577{
578 //added by Lange Jan4,2000
579 static const EvtId BP = EvtPDL::getId( "B+" );
580 static const EvtId BM = EvtPDL::getId( "B-" );
581 static const EvtId B0 = EvtPDL::getId( "B0" );
582 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
583
584 static const EvtId D3P1P = EvtPDL::getId( "D'_1+" );
585 static const EvtId D3P1N = EvtPDL::getId( "D'_1-" );
586 static const EvtId D3P10 = EvtPDL::getId( "D'_10" );
587 static const EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
588
589 static const EvtId A1P = EvtPDL::getId( "a_1+" );
590 static const EvtId A1M = EvtPDL::getId( "a_1-" );
591 static const EvtId A10 = EvtPDL::getId( "a_10" );
592
593 static const EvtId F1 = EvtPDL::getId( "f_1" );
594 static const EvtId F1PR = EvtPDL::getId( "f'_1" );
595
596 double mtb;
597 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
598 double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
599 double msb( 0.0 ), bb2( 0.0 ), mum, bbx2, tm;
600 double kap;
601
602 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
603 msb = 5.2;
604 msd = 0.33;
605 bb2 = 0.41 * 0.41;
606 if ( daugt == A10 || daugt == A1P || daugt == A1M || daugt == F1 ||
607 daugt == F1PR ) {
608 msq = 0.33;
609 bx2 = 0.27 * 0.27;
610 } else {
611 if ( daugt == D3P1P || daugt == D3P1N || daugt == D3P1B ||
612 daugt == D3P10 ) {
613 msq = 1.82;
614 bx2 = 0.34 * 0.34;
615 } else {
616 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
617 << "Not implemented daugt in get_isgw_ff_3P1.\n";
618 }
619 }
620 } else {
621 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
622 << "Not implemented parent in get_isgw_ff_3P1.\n";
623 }
624
625 mtb = msb + msd;
626 mtx = msq + msd;
627
628 mb = EvtPDL::getMeanMass( parent );
629 mx = mass;
630
631 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
632 bbx2 = 0.5 * ( bb2 + bx2 );
633 tm = ( mb - mx ) * ( mb - mx );
634 if ( t > tm )
635 t = 0.99 * tm;
636
637 kap = 0.7 * 0.7;
638 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
639 exp( -1.0 *
640 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
641
642 *qf = ( f5 * msd ) / ( 2.0 * mtx * sqrt( bb2 ) );
643
644 *lf = -1.0 * mtb * sqrt( bb2 ) * f5 *
645 ( 1 / mum + ( msd * ( tm - t ) / ( 2.0 * mtb * kap * bb2 ) ) *
646 ( ( 1.0 / msq ) -
647 ( 1.0 * msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) ) );
648
649 *cpf = ( f5 * msd * msb / ( 4.0 * mtb * sqrt( bb2 ) * mum ) ) *
650 ( 1.0 - ( msd * msq * bb2 / ( 2.0 * mtx * mum * bbx2 ) ) );
651 *cmf = 0.0;
652 return;
653} //get_ff_isgw_3p1
654
655void EvtISGWFF::EvtISGW1FF3P0( EvtId parent, EvtId daugt, double t, double mass,
656 double* upf, double* umf )
657{
658 //added by Lange Jan4,2000
659 static const EvtId BP = EvtPDL::getId( "B+" );
660 static const EvtId BM = EvtPDL::getId( "B-" );
661 static const EvtId B0 = EvtPDL::getId( "B0" );
662 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
663
664 static const EvtId D3P0P = EvtPDL::getId( "D_0*+" );
665 static const EvtId D3P0N = EvtPDL::getId( "D_0*-" );
666 static const EvtId D3P00 = EvtPDL::getId( "D_0*0" );
667 static const EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
668
669 static const EvtId A0P = EvtPDL::getId( "a_0+" );
670 static const EvtId A0M = EvtPDL::getId( "a_0-" );
671 static const EvtId A00 = EvtPDL::getId( "a_00" );
672
673 static const EvtId F0 = EvtPDL::getId( "f_0" );
674 static const EvtId F0PR = EvtPDL::getId( "f'_0" );
675
676 double mtb;
677 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
678 double msq( 0.0 ), bx2( 0.0 ), mtx;
679 double f5;
680 double mum, bb2( 0.0 ), bbx2, msb( 0.0 ), tm;
681
682 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
683 msb = 5.2;
684 msd = 0.33;
685 bb2 = 0.41 * 0.41;
686 if ( daugt == A00 || daugt == A0P || daugt == A0M || daugt == F0 ||
687 daugt == F0PR ) {
688 msq = 0.33;
689 bx2 = 0.27 * 0.27;
690 } else {
691 if ( daugt == D3P0P || daugt == D3P0N || daugt == D3P0B ||
692 daugt == D3P00 ) {
693 msq = 1.82;
694 bx2 = 0.34 * 0.34;
695 } else {
696 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
697 << "Not implemented daugt in get_isgw_ff_3P0.\n";
698 }
699 }
700 } else {
701 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
702 << "Not implemented parent in get_isgw_ff_3P0.\n";
703 }
704
705 mtb = msb + msd;
706 mtx = msq + msd;
707
708 mb = EvtPDL::getMeanMass( parent );
709 mx = mass;
710
711 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
712 bbx2 = 0.5 * ( bb2 + bx2 );
713 tm = ( mb - mx ) * ( mb - mx );
714 if ( t > tm )
715 t = 0.99 * tm;
716
717 double kap = 0.7 * 0.7;
718 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
719 exp( -1.0 *
720 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
721
722 *upf = f5 * msd * msq * msb / ( sqrt( 6.0 * bb2 ) * mtx * mum );
723 *umf = 0.0;
724 return;
725} //get_ff_isgw_3p0
726
727void EvtISGWFF::EvtISGW1FF1P1( EvtId parent, EvtId daugt, double t, double mass,
728 double* vf, double* rf, double* spf, double* smf )
729{
730 //added by Lange Jan4,2000
731 static const EvtId BP = EvtPDL::getId( "B+" );
732 static const EvtId BM = EvtPDL::getId( "B-" );
733 static const EvtId B0 = EvtPDL::getId( "B0" );
734 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
735
736 static const EvtId D1P1P = EvtPDL::getId( "D_1+" );
737 static const EvtId D1P1N = EvtPDL::getId( "D_1-" );
738 static const EvtId D1P10 = EvtPDL::getId( "D_10" );
739 static const EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
740
741 static const EvtId B1P = EvtPDL::getId( "b_1+" );
742 static const EvtId B1M = EvtPDL::getId( "b_1-" );
743 static const EvtId B10 = EvtPDL::getId( "b_10" );
744
745 static const EvtId H1 = EvtPDL::getId( "h_1" );
746 static const EvtId H1PR = EvtPDL::getId( "h'_1" );
747
748 double mtb;
749 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
750 double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
751 double mup, mum, kap;
752 double msb( 0.0 ), bb2( 0.0 ), bbx2, tm;
753
754 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
755 msb = 5.2;
756 msd = 0.33;
757 bb2 = 0.41 * 0.41;
758 if ( daugt == H1 || daugt == H1PR || daugt == B10 || daugt == B1P ||
759 daugt == B1M ) {
760 msq = 0.33;
761 bx2 = 0.27 * 0.27;
762 } else {
763 if ( daugt == D1P1P || daugt == D1P1N || daugt == D1P10 ||
764 daugt == D1P1B ) {
765 msq = 1.82;
766 bx2 = 0.34 * 0.34;
767 } else {
768 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
769 << "Not implemented daugt in get_isgw_ff_3P1.\n";
770 }
771 }
772 } else {
773 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
774 << "Not implemented parent in get_isgw_ff_3P1.\n";
775 }
776
777 mtb = msb + msd;
778 mtx = msq + msd;
779
780 mb = EvtPDL::getMeanMass( parent );
781 mx = mass;
782
783 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
784 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
785 bbx2 = 0.5 * ( bb2 + bx2 );
786 tm = ( mb - mx ) * ( mb - mx );
787 if ( t > tm )
788 t = 0.99 * tm;
789
790 kap = 0.7 * 0.7;
791 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
792 exp( -1.0 *
793 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
794
795 *vf = f5 *
796 ( ( ( mtb * sqrt( bb2 ) ) / ( 4.0 * sqrt( 2.0 ) * msb * msq * mtx ) ) );
797 *rf = f5 * mtb * sqrt( bb2 / 2 ) * ( ( 1.0 / mup ) );
798
799 *spf = ( f5 * msd / ( sqrt( 2.0 * bb2 ) * mtb ) ) *
800 ( 1.0 + ( msb / ( 2.0 * mum ) ) -
801 ( msb * msq * msd * bb2 / ( 4.0 * mup * mum * mtx * bbx2 ) ) );
802 *smf = 0.0;
803
804 return;
805 //get_ff_isgw_1p1
806}
807
808void EvtISGWFF::EvtISGW1FF21S0( EvtId parent, EvtId daugt, double t,
809 double mass, double* fppf, double* fpmf )
810{
811 //added by Lange Jan4,2000
812 static const EvtId BP = EvtPDL::getId( "B+" );
813 static const EvtId BM = EvtPDL::getId( "B-" );
814 static const EvtId B0 = EvtPDL::getId( "B0" );
815 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
816
817 static const EvtId D21S0P = EvtPDL::getId( "hi" );
818 static const EvtId D21S0N = EvtPDL::getId( "hi" );
819 static const EvtId D21S00 = EvtPDL::getId( "hi" );
820 static const EvtId D21S0B = EvtPDL::getId( "hi" );
821
822 static const EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
823
824 static const EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
825 static const EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
826 static const EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
827
828 double mtb;
829 double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
830 double msq( 0.0 ), bx2( 0.0 ), mtx;
831 double f3;
832 double msb( 0.0 );
833 double mum, mup, tm, bb2( 0.0 ), bbx2;
834
835 if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
836 msb = 5.2;
837 msd = 0.33;
838 bb2 = 0.41 * 0.41;
839 if ( daugt == PI2S0 || daugt == PI2SP || daugt == PI2SM ||
840 daugt == ETA2S ) {
841 msq = 0.33;
842 bx2 = 0.31 * 0.31;
843 } else {
844 if ( daugt == D21S00 || daugt == D21S0P || daugt == D21S0N ||
845 daugt == D21S0B ) {
846 msq = 1.82;
847 bx2 = 0.39 * 0.39;
848 } else {
849 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
850 << "Not implemented daugt in get_isgw1_ff_21S0.\n";
851 }
852 }
853 } else {
854 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
855 << "Not implemented parent in get_isgw1_ff_21S0.\n";
856 }
857
858 mtb = msb + msd;
859 mtx = msq + msd;
860
861 mb = EvtPDL::getMeanMass( parent );
862 mx = mass;
863
864 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
865 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
866 bbx2 = 0.5 * ( bb2 + bx2 );
867 tm = ( mb - mx ) * ( mb - mx );
868 if ( t > tm )
869 t = 0.99 * tm;
870
871 double kap = 0.7 * 0.7;
872 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
873 exp( -1.0 *
874 ( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
875
876 *fppf = f3 * sqrt( 3.0 / 8.0 ) * ( msb / mup ) *
877 ( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
878 ( ( ( msq * msd * bb2 ) / ( 3.0 * mum * mtx * bbx2 ) ) *
879 ( ( 7.0 * bx2 - 3.0 * bb2 ) / ( 4.0 * bbx2 ) ) ) +
880 ( ( ( msd * msd * bx2 * ( tm - t ) ) /
881 ( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) *
882 ( 1.0 - ( ( msq * msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) ) );
883
884 *fpmf = 0.0;
885 return;
886} //get_ff_isgw_21s0
887
888void EvtISGWFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
889 double*, double* )
890{
891 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
892 << "Not implemented :getbaryonff in EvtISGWFF.\n";
893 ::abort();
894}
895
896void EvtISGWFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
897 double*, double*, double*, double* )
898{
899 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
900 << "Not implemented :getdiracff in EvtISGWFF.\n";
901 ::abort();
902}
903
904void EvtISGWFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
905 double*, double*, double*, double*, double*, double* )
906{
907 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
908 << "Not implemented :getraritaff in EvtISGWFF.\n";
909 ::abort();
910}
EvtComplex exp(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf) override
void EvtISGW1FF21S0(EvtId parent, EvtId daught, double t, double mass, double *fppf, double *fpmf)
void EvtISGW1FF3P0(EvtId parent, EvtId daught, double t, double mass, double *upf, double *umf)
void EvtISGW1FF1P1(EvtId parent, EvtId daught, double t, double mass, double *vf, double *rf, double *spf, double *smf)
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void EvtISGW1FF3P1(EvtId parent, EvtId daught, double t, double mass, double *lf, double *qf, double *cpf, double *cmf)
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
void EvtISGW1FF23S1(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *gpf, double *app, double *apm)
void EvtISGW1FF3S1(EvtId parent, EvtId daught, double t, double mass, double *ff, double *gf, double *apf, double *amf)
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
Definition EvtISGWFF.cpp:32
void EvtISGW1FF1S0(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *fmf)
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
void EvtISGW1FF3P2(EvtId parent, EvtId daught, double t, double mass, double *h, double *k, double *bp, double *bm)
Definition EvtId.hh:27
int getId() const
Definition EvtId.hh:41
static double getMeanMass(EvtId i)
Definition EvtPDL.cpp:306
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283