1 #include "isajet/pilot.h"
2 SUBROUTINE HEAVYX(X,EPS)
4 C GENERATE X FOR HEAVY PARTICLE FRAGMENTATION ACCORDING TO
6 C D(X)=1/(X*(1-1/X-EPS/(1-X))**2)
8 C D0(X)=(1-X)**2/((1-X)**2+EPS)**2
10 C D2(X)=(((1-X)**2+EPS)/((1-X)**2+EPS*X))**2
15 C CHOOSE POW FOR X=1-Y**POW.
16 C GENERATE FLAT IN X IF EPS>1.
18 POW=ALOG((3.+EPS)/EPS)/ALN4
19 YMX=(EPS*(3.*POW-1.)/(POW+1.))**(.5/POW)
21 D0MX=(1-ZMX)**2/((1.-ZMX)**2+EPS)**2*POW*YMX**(POW-1.)
22 D2MX=2./(2.-SQRT(EPS))
26 D0MX=(1.-ZMX)**2/((1.-ZMX)**2+EPS)**2
30 C GENERATE Z ACCORDING TO (1-Z)**2/((1-Z)**2+EPS*Z)**2
35 D0Z=(1.-Z)**2/((1.-Z)**2+EPS)**2*POW*Y**(POW-1.)
36 IF(D0Z.LT.RANF()*D0MX) GO TO 1
38 C CHECK REMAINING FACTORS
40 D2=(((1.-Z)**2+EPS)/((1.-Z)**2+EPS*Z))**2
41 IF(D1*D2.LT.RANF()*D2MX) GO TO 1