]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/isasusy/ssf0.F
Adding MUON HLT code to the repository.
[u/mrichter/AliRoot.git] / ISAJET / isasusy / ssf0.F
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