]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwsspc.f
renamed CorrectionMatrix class
[u/mrichter/AliRoot.git] / HERWIG / src / hwsspc.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWSSPC.
3
4*CMZ :- -26/04/91 11.11.56 by Bryan Webber
5
6*-- Author : Bryan Webber
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWSSPC
11
12C-----------------------------------------------------------------------
13
14C REPLACES SPACELIKE PARTONS BY SPECTATORS
15
16C-----------------------------------------------------------------------
17
18 INCLUDE 'HERWIG61.INC'
19
20 DOUBLE PRECISION HWUSQR,EMSQ,EMTR,EPAR,XPAR,QSQ,PCL(5)
21
22 INTEGER KHEP,IP,JP,IDH,IDP,ISP,IDSPC,JHEP
23
24 EXTERNAL HWUSQR
25
26 IF (IERROR.NE.0) RETURN
27
28 DO 50 KHEP=1,NHEP
29
30 IF (ISTHEP(KHEP).EQ.145.OR.ISTHEP(KHEP).EQ.146) THEN
31
32 IP=ISTHEP(KHEP)-144
33
34 JP=IP
35
36 IF (JDAHEP(1,IP).NE.0) JP=JDAHEP(1,IP)
37
38 IDH=IDHW(JP)
39
40 IDP=IDHW(KHEP)
41
42 IF (IDH.NE.IDP) THEN
43
44 IF (IDH.EQ.59) THEN
45
46C---PHOTON CASE
47
48 IF (IDP.LT.7) THEN
49
50 IDSPC=IDP+6
51
52 ELSEIF (IDP.LT.13) THEN
53
54 IDSPC=IDP-6
55
56 ELSE
57
58 CALL HWWARN('HWSSPC',100,*999)
59
60 ENDIF
61
62C---IDENTIFY SPECTATOR
63
64C (1) QUARK CASE
65
66 ELSEIF (IDP.LE.3) THEN
67
68 DO 10 ISP=1,12
69
70 10 IF (IDH.EQ.NCLDK(LOCN(IDP,ISP))) GOTO 20
71
72 CALL HWWARN('HWSSPC',101,*999)
73
74 20 IF (ISP.LE.3) THEN
75
76 IDSPC=ISP+6
77
78 ELSEIF (ISP.LE.9) THEN
79
80 IDSPC=ISP+105
81
82 ELSE
83
84 IDSPC=ISP
85
86 ENDIF
87
88C---(2) ANTIQUARK CASE
89
90 ELSEIF (IDP.GT.6.AND.IDP.LE.9) THEN
91
92 IDP=IDP-6
93
94 DO 30 ISP=1,12
95
96 30 IF (IDH.EQ.NCLDK(LOCN(ISP,IDP))) GOTO 40
97
98 CALL HWWARN('HWSSPC',103,*999)
99
100 RETURN
101
102 40 IF (ISP.LE.3) THEN
103
104 IDSPC=ISP
105
106 ELSEIF (ISP.LE.9) THEN
107
108 IDSPC=ISP+111
109
110 ELSE
111
112 IDSPC=ISP-6
113
114 ENDIF
115
116C---SPECIAL CASE FOR REMNANT HADRON
117
118 ELSEIF (IDH.EQ.71.OR.IDH.EQ.72) THEN
119
120 IF (IDP.EQ.13) THEN
121
122 IDSPC=IDP
123
124 ELSE
125
126 CALL HWWARN('HWSSPC',106,*999)
127
128 ENDIF
129
130 ELSE
131
132 CALL HWWARN('HWSSPC',105,*999)
133
134 ENDIF
135
136C---REPLACE PARTON BY SPECTATOR
137
138 IDHW(KHEP)=IDSPC
139
140 IDHEP(KHEP)=IDPDG(IDSPC)
141
142 ISTHEP(KHEP)=146+IP
143
144 EMSQ=SIGN(PHEP(5,KHEP)**2,PHEP(5,KHEP))
145
146 EMTR=EMSQ+PHEP(1,KHEP)**2+PHEP(2,KHEP)**2
147
148 EPAR=PHEP(4,KHEP)
149
150 CALL HWVDIF(4,PHEP(1,JP),PHEP(1,KHEP),PHEP(1,KHEP))
151
152 IF (EPAR**2.LT.10000.*ABS(EMTR)) THEN
153
154 CALL HWUMAS(PHEP(1,KHEP))
155
156 ELSE
157
158C---COMPUTE SPECTATOR MASS ELIMINATING ROUNDING ERRORS
159
160 XPAR=EPAR/PHEP(4,JP)
161
162 QSQ=SIGN(PHEP(5,JP)**2,PHEP(5,JP))
163
164 PHEP(5,KHEP)=HWUSQR((1.-XPAR)*QSQ+EMSQ-EMTR/XPAR
165
166 & -((QSQ*XPAR**2-EMTR)/(2*EPAR*XPAR**2))**2*XPAR)
167
168 ENDIF
169
170C---CHECK FOR UNPHYSICAL SPECTATOR
171
172 IF (PHEP(4,KHEP).LT.ZERO) FROST=.TRUE.
173
174C---FIND MASS OF CORRESPONDING CLUSTER, IF PARTNER IS IN THE SAME JET
175
176 IF (QORQQB(IDHW(KHEP))) THEN
177
178 JHEP=JMOHEP(2,KHEP)
179
180 ELSEIF (QBORQQ(IDHW(KHEP))) THEN
181
182 JHEP=JDAHEP(2,KHEP)
183
184 ELSE
185
186 JHEP=0
187
188 ENDIF
189
190 IF (JHEP.GT.0) THEN
191
192 CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,JHEP),PCL)
193
194 CALL HWUMAS(PCL)
195
196C---IF IT IS NEGATIVE, REJECT
197
198 IF (PCL(5).LT.ZERO) FROST=.TRUE.
199
200 ENDIF
201
202 ENDIF
203
204 ENDIF
205
206 50 CONTINUE
207
208 999 END
209
210CDECK ID>, HWSSUD.
211
212*CMZ :- -26/04/91 11.11.56 by Bryan Webber
213
214*-- Author : Bryan Webber
215
216C-----------------------------------------------------------------------
217
218 FUNCTION HWSSUD(I)
219
220C-----------------------------------------------------------------------
221
222 INCLUDE 'HERWIG61.INC'
223
224 DOUBLE PRECISION HWSSUD,HWSGQQ,DMIN,QSCA,XLAST,DIST(13)
225
226 INTEGER I,N0,IS,ID
227
228 EXTERNAL HWSGQQ
229
230 COMMON/HWTABC/XLAST,N0,IS,ID
231
232 DATA DMIN/1.D-15/
233
234 QSCA=QEV(N0+I,IS)
235
236 CALL HWSFUN(XLAST,QSCA,IDHW(INHAD),NSTRU,DIST,JNHAD)
237
238 IF (ID.EQ.13) DIST(ID)=DIST(ID)*HWSGQQ(QSCA)
239
240 IF (DIST(ID).LT.DMIN) DIST(ID)=DMIN
241
242 HWSSUD=SUD(N0+I,IS)/DIST(ID)
243
244 END