]>
Commit | Line | Data |
---|---|---|
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 |