]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/isasusy/ssf0.F
Moved from AliTransbit to AliL3Transbit.
[u/mrichter/AliRoot.git] / ISAJET / isasusy / ssf0.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 COMPLEX*16 FUNCTION SSF0(XQSQ,XM1,XM2)
3#if defined(CERNLIB_IMPNONE)
4 IMPLICIT NONE
5#endif
6 REAL XQSQ,XM1,XM2
7 DOUBLE PRECISION QSQ,M1,M2,M1SQ,M2SQ,AQSQ,RE,XI,R
8 DOUBLE PRECISION PI,T1,T2,BETA,XL,T
9 DATA PI/3.14159265359D0/
10 QSQ=XQSQ
11 M1=XM1
12 M2=XM2
13 M1SQ=M1*M1
14 M2SQ=M2*M2
15 AQSQ=ABS(QSQ)
16 IF(AQSQ.LT.1.D-6*(M1SQ+M2SQ)) THEN
17 IF(ABS(M1-M2).LT.1.D-6*M1) THEN
18 IF(M1SQ.LT.1.D-8) THEN
19 RE=LOG(1.D-8)
20 ELSE
21 RE=LOG(M1SQ)+.5*(M2SQ/M1SQ-1.D0) -QSQ/(6.*M1SQ)
22 ENDIF
23 ELSE
24 IF(M2SQ.LT.1.D-6*M1SQ) THEN
25 RE=LOG(M1SQ)-1.D0
26 ELSE IF(M1SQ.LT.1.D-6*M2SQ) THEN
27 RE=LOG(M2SQ)-1.D0
28 ELSEIF(M1SQ.GE.1.D-9*M2SQ) THEN
29 RE=LOG(M1*M2)+(M1SQ+M2SQ)/(M1SQ-M2SQ)*LOG(M1/M2)-1.D0
30 $ -QSQ*(.5*(M1SQ+M2SQ)-M1SQ*M2SQ*LOG(M2SQ/M1SQ)/(M2SQ-M1SQ))
31 $ /(M1SQ-M2SQ)**2
32 ENDIF
33 ENDIF
34 XI=0.D0
35 ELSE
36 IF(M1SQ.LT.1.D-6*AQSQ.OR.M2SQ.LT.1.D-6*AQSQ.OR.
37 $ M1SQ+M2SQ.LT.1.D-5*AQSQ) THEN
38 IF(M1SQ.LT.1.D-6*AQSQ) THEN
39 R=M2SQ/QSQ
40 ELSE
41 R=M1SQ/QSQ
42 ENDIF
43 IF(ABS(R-1.D0).GT.1.D-6.AND.ABS(R).GT.1.D-6.AND.
44 $ M1SQ+M2SQ.GT.1.D-5*AQSQ) THEN
45 RE=LOG(R*QSQ)-2.D0+(1.D0-R)*LOG(ABS(1.D0-1.D0/R))
46 ELSE
47 RE=-2.D0+LOG(AQSQ)
48 ENDIF
49 IF(R.LT.1.D0.AND.R.GT.-1.D-10) THEN
50 XI=-PI*(1.D0-R)
51 ELSE
52 XI=0.D0
53 ENDIF
54 ELSE
55 T1=(M1-M2)*(M1-M2)
56 T2=T1+4.0*M1*M2
57 BETA=SQRT(ABS((1.D0-T1/QSQ)*(1.D0-T2/QSQ)))
58 IF(QSQ.GT.T2.OR.QSQ.LT.T1) THEN
59 XL=.5*BETA*LOG((QSQ*(1.D0+BETA)-M1SQ-M2SQ)/
60 $ (QSQ*(1.D0-BETA)-M1SQ-M2SQ))
61 ELSE
62 T=M1SQ+M2SQ-QSQ
63 IF(T.EQ.0.) T=1.D-10
64 XL=BETA*ATAN(QSQ*BETA/T)
65 IF(T.LT.0.D0) XL = XL + PI*BETA
66 ENDIF
67 RE=LOG(M1*M2)-(M1SQ-M2SQ)/QSQ*LOG(M2/M1)-2.D0+XL
68 IF(QSQ.GT.T2) THEN
69 XI=-PI*BETA
70 ELSE
71 XI=0.D0
72 ENDIF
73 ENDIF
74 ENDIF
75 SSF0=RE*(1.D0,0.D0)-XI*(0.D0,1.D0)
76 RETURN
77 END