]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hipyset1_35/luzdis_hijing.F
Adding makefile for Darwin and XLC compiler
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / luzdis_hijing.F
CommitLineData
e74335a4 1* $Id$
2
3C*********************************************************************
4
5 SUBROUTINE LUZDIS_HIJING(KFL1,KFL2,PR,Z)
6
7C...Purpose: to generate the longitudinal splitting variable z.
8#include "ludat1_hijing.inc"
9
10C...Check if heavy flavour fragmentation.
11 KFLA=IABS(KFL1)
12 KFLB=IABS(KFL2)
13 KFLH=KFLA
14 IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
15
16C...Lund symmetric scaling function: determine parameters of shape.
17 IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3)) THEN
18 FA=PARJ(41)
19 IF(MSTJ(91).EQ.1) FA=PARJ(43)
20 IF(KFLB.GE.10) FA=FA+PARJ(45)
21 FB=PARJ(42)*PR
22 IF(MSTJ(91).EQ.1) FB=PARJ(44)*PR
23 FC=1.
24 IF(KFLA.GE.10) FC=FC-PARJ(45)
25 IF(KFLB.GE.10) FC=FC+PARJ(45)
26 MC=1
27 IF(ABS(FC-1.).GT.0.01) MC=2
28
29C...Determine position of maximum. Special cases for a = 0 or a = c.
30 IF(FA.LT.0.02) THEN
31 MA=1
32 ZMAX=1.
33 IF(FC.GT.FB) ZMAX=FB/FC
34 ELSEIF(ABS(FC-FA).LT.0.01) THEN
35 MA=2
36 ZMAX=FB/(FB+FC)
37 ELSE
38 MA=3
39 ZMAX=0.5*(FB+FC-SQRT((FB-FC)**2+4.*FA*FB))/(FC-FA)
40 IF(ZMAX.GT.0.99.AND.FB.GT.100.) ZMAX=1.-FA/FB
41 ENDIF
42
43C...Subdivide z range if distribution very peaked near endpoint.
44 MMAX=2
45 IF(ZMAX.LT.0.1) THEN
46 MMAX=1
47 ZDIV=2.75*ZMAX
48 IF(MC.EQ.1) THEN
49 FINT=1.-LOG(ZDIV)
50 ELSE
51 ZDIVC=ZDIV**(1.-FC)
52 FINT=1.+(1.-1./ZDIVC)/(FC-1.)
53 ENDIF
54 ELSEIF(ZMAX.GT.0.85.AND.FB.GT.1.) THEN
55 MMAX=3
56 FSCB=SQRT(4.+(FC/FB)**2)
57 ZDIV=FSCB-1./ZMAX-(FC/FB)*LOG(ZMAX*0.5*(FSCB+FC/FB))
58 IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1.-ZMAX)
59 ZDIV=MIN(ZMAX,MAX(0.,ZDIV))
60 FINT=1.+FB*(1.-ZDIV)
61 ENDIF
62
63C...Choice of z, preweighted for peaks at low or high z.
64 100 Z=RLU_HIJING(0)
65 FPRE=1.
66 IF(MMAX.EQ.1) THEN
67 IF(FINT*RLU_HIJING(0).LE.1.) THEN
68 Z=ZDIV*Z
69 ELSEIF(MC.EQ.1) THEN
70 Z=ZDIV**Z
71 FPRE=ZDIV/Z
72 ELSE
73 Z=1./(ZDIVC+Z*(1.-ZDIVC))**(1./(1.-FC))
74 FPRE=(ZDIV/Z)**FC
75 ENDIF
76 ELSEIF(MMAX.EQ.3) THEN
77 IF(FINT*RLU_HIJING(0).LE.1.) THEN
78 Z=ZDIV+LOG(Z)/FB
79 FPRE=EXP(FB*(Z-ZDIV))
80 ELSE
81 Z=ZDIV+Z*(1.-ZDIV)
82 ENDIF
83 ENDIF
84
85C...Weighting according to correct formula.
86 IF(Z.LE.FB/(50.+FB).OR.Z.GE.1.) GOTO 100
87 FVAL=(ZMAX/Z)**FC*EXP(FB*(1./ZMAX-1./Z))
88 IF(MA.GE.2) FVAL=((1.-Z)/(1.-ZMAX))**FA*FVAL
89 IF(FVAL.LT.RLU_HIJING(0)*FPRE) GOTO 100
90
91C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
92 ELSE
93 FC=PARJ(50+MAX(1,KFLH))
94 IF(MSTJ(91).EQ.1) FC=PARJ(59)
95 110 Z=RLU_HIJING(0)
96 IF(FC.GE.0..AND.FC.LE.1.) THEN
97 IF(FC.GT.RLU_HIJING(0)) Z=1.-Z**(1./3.)
98 ELSEIF(FC.GT.-1.) THEN
99 IF(-4.*FC*Z*(1.-Z)**2.LT.RLU_HIJING(0)*((1.-Z)**2-FC*Z)**2)
100 $ GOTO 110
101 ELSE
102 IF(FC.GT.0.) Z=1.-Z**(1./FC)
103 IF(FC.LT.0.) Z=Z**(-1./FC)
104 ENDIF
105 ENDIF
106
107 RETURN
108 END