]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/rkzsf.F
More exact rounding function, but also much slower.
[u/mrichter/AliRoot.git] / PYTHIA / pythia / rkzsf.F
1  
2 *==================================================================
3  
4       FUNCTION RKZSF(L1,P1,L2,P2)
5       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
6       COMPLEX RKZSF,RKZPR
7       COMPLEX ANSS(-1:1,1:4,-1:1,1:4)
8       INTEGER DONS(-1:1,1:4,-1:1,1:4)
9       COMMON/RKZSCO/ANSS,DONS
10       DIMENSION P1(0:4),P2(0:4)
11 * CHECK ON CORRECT LABEL INPUT
12       IP1=IDINT(P1(4))
13       IP2=IDINT(P2(4))
14       IF(IABS(L1).NE.1.OR.IABS(L2).NE.1.OR.
15      . IP1.LT.1.OR.IP2.GT.4.OR.IP2.LT.1.OR.IP2.GT.4) THEN
16        WRITE(6,*)
17      .  ' RKZSF: ERROR L1=',L1,' L2=',L2,' IP1=',IP1,' IP2=',IP2
18        STOP
19       ENDIF
20 * CHECK WHETER THIS ONE WAS ALREADY COMPUTED
21 * DONS(,,,)=0: NOT YET COMPUTED, DONS(,,,)=1: ALREADY COMPUTED
22 * IF NOT YET COMPUTED: COMPUTE IT, AND STORE IN ARRAY 'ANSS'
23 * IF ALREADY COMPUTED: GET THE RESULT FROM ARRAY 'ANSS'
24       IF(DONS(L1,IP1,L2,IP2).EQ.0) THEN
25         IF(L1.EQ.L2) THEN
26           ANSS(L1,IP1,L2,IP2)=(0.,0.)
27         ELSE
28           ANSS(L1,IP1,L2,IP2)=RKZPR(L1,P1,P2)
29         ENDIF
30         DONS(L1,IP1,L2,IP2)=1
31       ENDIF
32       RKZSF=ANSS(L1,IP1,L2,IP2)
33       END