2 SUBROUTINE ykern(IMODE,NT,ITKDM,PP,IERR)
34 INTEGER nt,itkdm,nyclmx,njetmx,ncall,nprint,i,j,k,ierr,imodeo
36 parameter(nyclmx = 500, njetmx = 20)
37 INTEGER nto,njeto,njj,im,jm,nold,kk,ii,histor(2,nyclmx)
38 REAL pl(7,nyclmx),
y(nyclmx,nyclmx),pint(10,nyclmx)
39 REAL yrec(njetmx),eviso
40 REAL pp(itkdm,*),jade,d,g,e,evis,pvis,pjet(10,njetmx,njetmx),ymini
41 COMMON /ycl/yrec,pjet,histor
42 COMMON /yint/ imodeo,nto,njeto,pint
45 DATA ncall,nprint /0,0/
49 jade(i,j) = 2.*pl(4,i)*pl(4,j)*max(0.,(1.-
50 + (pl(1,i)*pl(1,j)+pl(2,i)*pl(2,j)+pl(3,i)*pl(3,j))/
52 d(i,j) = 2.*
min(pl(4,i)*pl(4,i),pl(4,j)*pl(4,j))*max(0.,(1.-
53 + (pl(1,i)*pl(1,j)+pl(2,i)*pl(2,j)+pl(3,i)*pl(3,j))/
55 e(i,j) = max(0.,(pl(4,i)+pl(4,j))**2-(pl(1,i)+pl(1,j))**2-
56 + (pl(2,i)+pl(2,j))**2-(pl(3,i)+pl(3,j))**2)
57 g(i,j) = 8.*pl(4,i)*pl(4,j)*max(0.,(1.-
58 + (pl(1,i)*pl(1,j)+pl(2,i)*pl(2,j)+pl(3,i)*pl(3,j))/
59 + (pl(6,i)*pl(6,j))))/(9.*(pl(4,i)+pl(4,j))**2)
76 IF(imode.NE.imodeo .AND. nprint.LE.7)
THEN
79 ELSEIF(imode.EQ.2)
THEN
81 ELSEIF(imode.EQ.3)
THEN
83 ELSEIF(imode.EQ.4)
THEN
85 ELSEIF(imode.EQ.5)
THEN
87 ELSEIF(imode.EQ.6)
THEN
91 281
FORMAT(/,
' ### YKERN: IMODE =',i3,
' INVALID; SET TO 1 ###')
96 789
FORMAT(/,8
x,54(
'#'),/,8
x,
97 +
'# YCLUS JET FINDER WITH ',a7,
' RECOMBINATION SCHEME #',/,
106 701
FORMAT(/,
' ### YKERN: NUMBER OF INPUT PARTICLES ',i4,
' < 2;',
107 +
' NO JET RECONSTRUCTION DONE. ###')
110 IF(nt.GT.nyclmx)
THEN
111 print 700, nt, nyclmx,nyclmx
112 700
FORMAT(/,
' #### YKERN: NUMBER OF INPUT PARTICLES ',i4,
' > ',i4,
113 +
'; SET TO ',i4,/,12
x,
' INCREASE NYCLMX IF THIS',
114 +
' WARNING OCCURS MORE OFTEN. #### ')
126 pl(6,i)=sqrt(pp(1,i)**2 + pp(2,i)**2 + pp(3,i)**2)
130 IF(imode.EQ.2 .OR. imode.EQ.3)
THEN
144 IF(evis.LE.0. .OR. pvis.GT.1.001*evis)
THEN
145 WRITE(6,283) evis,pvis
146 283
FORMAT(
' #### YKERN: INCOMPATIBLE SUMS OF ENERGIES',
147 +
' AND/OR MOMENTA:',
148 + /,12
x,
' SUM(E) = ',f11.4,
' SUM(P) = ',f11.4,/,12
x,
' CHECK',
149 +
' INPUT VECTORS AND/OR ARRAY DIMENSIONS. ####')
153 IF(njj.LE.njetmx)
THEN
156 pjet(i,j,njj) = pl(i,j)
167 ELSEIF(imode.EQ.5)
THEN
169 ELSEIF(imode.EQ.6)
THEN
185 IF(
y(i,j).LT.ymini)
THEN
193 IF(im.EQ.0 .OR. jm.EQ.0)
THEN
195 284
FORMAT(
' #### YKERN: ERROR; NO MINIMUM FOUND IN Y-ARRAY! ####')
201 pl(1,im) = pl(1,im) + pl(1,jm)
202 pl(2,im) = pl(2,im) + pl(2,jm)
203 pl(3,im) = pl(3,im) + pl(3,jm)
204 pl(6,im) = sqrt(pl(1,im)**2 + pl(2,im)**2
208 ELSEIF(imode.EQ.3)
THEN
210 evis = evis-pl(4,im)-pl(4,jm)+pl(6,im)
213 pl(4,im) = pl(4,im) + pl(4,jm)
216 pl(7,im) = pl(7,im) + pl(7,jm)
221 pl(kk,jm) = pl(kk,njj)
229 IF(njj.LE.njetmx)
THEN
231 yrec(njj) = ymini/eviso**2
232 ELSEIF(imode.EQ.6)
THEN
235 yrec(njj) = ymini/evis**2
239 pjet(k,i,njj) = pl(k,i)
246 IF(njj.LE.1) goto 9000
256 ELSEIF(imode.EQ.5)
THEN
258 ELSEIF(imode.EQ.6)
THEN
double min(double a, double b)
subroutine ykern(IMODE, NT, ITKDM, PP, IERR)