]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HERWIG/src/hwhew2.f
Coding rule violations corrected.
[u/mrichter/AliRoot.git] / HERWIG / src / hwhew2.f
1
2 CDECK  ID>, HWHEW2.
3
4 *CMZ :-        -26/04/91  13.22.25  by  Federico Carminati
5
6 *-- Author :    Zoltan Kunszt, modified by Bryan Webber
7
8 C-----------------------------------------------------------------------
9
10       SUBROUTINE HWHEW2(NPART,PPCM,H,CH,D)
11
12 C-----------------------------------------------------------------------
13
14 C PCM SHOULD BE DEFINED SUCH THAT ALL 4-MOMENTA ARE OUTGOING.
15
16 C CONVENTION FOR PCM AND P IS THAT DIRECTION 1 =BEAM, COMPONENT
17
18 C 4 = ENERGY AND COMPONENT 2 AND 3 ARE TRANSVERSE COMPONENTS.
19
20 C THUS INCOMING MOMENTA SHOULD CORRESPOND TO OUTGOING MOMENTA
21
22 C OF NEGATIVE ENERGY.
23
24 C PCM IS FILLED BY PHASE SPACE MONTE CARLO.
25
26 C I1-I7 HERE REFER TO HOW PCM INDEXING IS MAPPED TO OUR STANDARD
27
28 C 1-6=GLUON,GLUON,Q,QBAR,QP,QPBAR ORDERING `
29
30 C-----------------------------------------------------------------------
31
32       IMPLICIT NONE
33
34       COMPLEX PT5,ZT,Z1,ZI,ZP,ZQ,ZD,ZPS,ZQS,ZDPM,ZDMP,H(7,7),CH(7,7),
35
36      & D(7,7)
37
38       DOUBLE PRECISION ZERO,ONE,PPCM(5,7),P(5,7),WRN(7),EPS,Q1,Q2,QP,QM,
39
40      & P1,P2,PP,PM,DMP,DPM,PT,QT,PTI,QTI
41
42       INTEGER J,L,IJ,II,JJ,I,NPART,IP1,IPP1
43
44       PARAMETER (ZERO=0.D0,ONE=1.D0)
45
46       EPS=0.0000001
47
48       ZI=CMPLX(0.,1.)
49
50       Z1=CMPLX(1.,0.)
51
52 C FOLLOWING DO LOOP IS TO CONVERT TO OUR STANDARD INDEXING
53
54       DO 1 L=1,NPART
55
56       DO 1 IJ=1,4
57
58 1     P(IJ,L)=PPCM(IJ,L)
59
60       DO 2 II=1,7
61
62       WRN(II)=ONE
63
64       IF(P(4,II).LT.ZERO) WRN(II)=-ONE
65
66       DO 2 JJ=1,4
67
68       P(JJ,II)=WRN(II)*P(JJ,II)
69
70     2 CONTINUE
71
72 C THE ABOVE CHECKS FOR MOMENTA WITH NEGATIVE ENERGY,INNER PRODUCTS
73
74 C ARE EXPRESSED DIFFERENTLY FOR DIFFERENT CASES
75
76       DO 11 I=1,NPART-1
77
78       IP1=I+1
79
80       DO 11 J=IP1,NPART
81
82       Q1=P(4,I)+P(1,I)
83
84       QP=0.0
85
86       IF(Q1.GT.EPS)QP=SQRT(Q1)
87
88       Q2=P(4,I)-P(1,I)
89
90       QM=0.0
91
92       IF(Q2.GT.EPS)QM=SQRT(Q2)
93
94       P1=P(4,J)+P(1,J)
95
96       PP=0.
97
98       IF(P1.GT.EPS)PP=SQRT(P1)
99
100       P2=P(4,J)-P(1,J)
101
102       PM=0.
103
104       IF(P2.GT.EPS)PM=SQRT(P2)
105
106       DMP=PM*QP
107
108       ZDMP=CMPLX(DMP,ZERO)
109
110       DPM=PP*QM
111
112       ZDPM=CMPLX(DPM,ZERO)
113
114 C NOTE THAT IN OUR INNER PRODUCT NOTATION WE ARE COMPUTING <P,Q>
115
116       PT=SQRT(P(2,J)**2+P(3,J)**2)
117
118       QT=SQRT(P(2,I)**2+P(3,I)**2)
119
120       IF(PT.GT.EPS) GOTO 99
121
122       ZP=Z1
123
124       GOTO 98
125
126    99 PTI=ONE/PT
127
128       ZP=CMPLX(PTI*P(2,J),PTI*P(3,J))
129
130    98 ZPS=CONJG(ZP)
131
132       IF(QT.GT.EPS) GOTO 89
133
134       ZQ=Z1
135
136       GOTO 88
137
138    89 QTI=ONE/QT
139
140       ZQ=CMPLX(QTI*P(2,I),QTI*P(3,I))
141
142    88 ZQS=CONJG(ZQ)
143
144       ZT=Z1
145
146       IF(WRN(I).LT.ZERO) ZT=ZT*ZI
147
148       IF(WRN(J).LT.ZERO) ZT=ZT*ZI
149
150       H(J,I)=(ZDMP*ZP-ZDPM*ZQ)*ZT
151
152       CH(J,I)=(ZDMP*ZPS-ZDPM*ZQS)*ZT
153
154       ZD=H(J,I)*CH(J,I)
155
156       PT5=CMPLX(.5,0.)
157
158       D(J,I)=PT5*ZD
159
160    11 CONTINUE
161
162       DO 60 I=1,NPART-1
163
164       IPP1=I+1
165
166       DO 60 J=IPP1,NPART
167
168       H(I,J)=-H(J,I)
169
170       CH(I,J)=-CH(J,I)
171
172    60 D(I,J)=D(J,I)
173
174       RETURN
175
176       END