]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/rkzf.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / PYTHIA / pythia / rkzf.F
1  
2 *==================================================================
3  
4       FUNCTION RKZF(L1,P1,Q,RMB,L2,P2)
5 * COMPUTES THE SCALAR STRUCTURE
6 * U_BAR(L1,P1)(SLASH(Q)+RMB)U(L2,P2)
7       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
8       COMPLEX RKZF,RKZPR,RKZSF
9       COMPLEX ANSF(-1:1,1:4,1:8,-1:1,1:4)
10       INTEGER DONF(-1:1,1:4,1:8,-1:1,1:4)
11       COMMON/RKZFCO/ANSF,DONF
12       DIMENSION P1(0:4),P2(0:4),Q(0:4),R(0:4)
13 * CHECK ON CORRECT LABEL INPUT
14       IP1=IDINT(P1(4))
15       IQ=IDINT(Q(4))
16       IP2=IDINT(P2(4))
17       IF(IABS(L1).NE.1.OR.IABS(L2).NE.1.OR.
18      . IP1.LT.1.OR.IP1.GT.4            .OR.
19      . IQ.LT.1.OR.IQ.GT.8              .OR.
20      . IP2.LT.1.OR.IP2.GT.4) THEN
21         WRITE(6,*) ' RKZF LABEL ERROR'
22         WRITE(6,*) 'L1=',L1,' IP1=',IP1,' IQ=',IQ,
23      .             ' L2=',L2,' IP2=',IP2
24         STOP
25       ENDIF
26 * CHECK WHETHER THIS ONE HAS BEEN CALCULATED ALREADY
27       IF(DONF(L1,IP1,IQ,L2,IP2).EQ.0) THEN
28 * THIS ONE NOT DONE YET: DO IT AND STORE THE RESULT IN ARRAY 'ANSF'
29         IF(L1.EQ.L2) THEN
30           A=2D0*RKDOT(Q,P2)
31 C         IF(DABS(A).LT.(1D-10*P2(0)*Q(0))) THEN
32 C...The check above is extended to following.
33           IF(ABS(A).LT.MAX(1D-8,ABS(1D-10*P2(0)*Q(0)))) THEN
34             ANSF(L1,IP1,IQ,L2,IP2)=(0.,0.)
35           ELSE
36             A=RKDOT(Q,Q)/A
37             DO 100 K=0,3
38               R(K)=Q(K)-A*P2(K)
39   100       CONTINUE
40             IF(R(0).GT.0D0) THEN
41               C=1D0
42             ELSE
43               DO 110 K=0,3
44                 R(K)=-R(K)
45   110         CONTINUE
46               C=-1D0
47             ENDIF
48             ANSF(L1,IP1,IQ,L2,IP2)=C*RKZPR(L1,P1,R)*RKZPR(-L1,R,P2)
49           ENDIF
50         ELSEIF(L1.EQ.-L2) THEN
51           ANSF(L1,IP1,IQ,L2,IP2)=RMB*RKZSF(L1,P1,L2,P2)
52         ELSE
53           WRITE(6,*) ' ERROR IN RKZF: L1=',L1,'  L2=',L2
54           STOP
55         ENDIF
56         RKZF=ANSF(L1,IP1,IQ,L2,IP2)
57         DONF(L1,IP1,IQ,L2,IP2)=1
58       ELSE
59         RKZF=ANSF(L1,IP1,IQ,L2,IP2)
60       ENDIF
61       END