]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/qcdint.F
First commit.
[u/mrichter/AliRoot.git] / ISAJET / code / qcdint.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE QCDINT(J0)
3C
4C AUXILIARY ROUTINE FOR QCDINI. GENERATE A NEW MASS FOR
5C SPACELIKE PARTON J0.
6C
7#include "isajet/itapes.inc"
8#include "isajet/jetset.inc"
9#include "isajet/jwork.inc"
10#include "isajet/jwork2.inc"
11#include "isajet/qcdpar.inc"
12#include "isajet/primar.inc"
13C
14 DIMENSION GAMS(13),FX0S(13)
15 DATA CA/3./,CF/1.333333333/
16C
17C FUNCTIONS -- USE DZMAX FOR PRECISION
18 GQQ(Z,DZ)=CF*(-2.*ALOG(DZ)+Z*(-1.-.5*Z))
19 GQG(Z)=CF*(+2.*ALOG(Z)+Z*(-2.+.5*Z))
20 GGQ(Z)=(Z**3-(1.-Z)**3)/6.
21 GGG(Z,DZ)=2.*CA*(ALOG(Z/DZ)+Z*(-2.+Z*(.5-Z/3.)))
22 GBQQ(RZ,DZ)=CF*(2.*ALOG((1.+RZ)**2/DZ)+RZ*(-2.-2./3.*RZ**2))
23 GBQG(RZ)=CF*(-4./RZ+RZ*(-4.+2./3.*RZ**2))
24C
25 GLFORC(JET-10)=.FALSE.
26 IDABS=IABS(JTYPE(J0))
27 IF(JTYPE(J0).EQ.9) THEN
28 ITYP=1
29 ELSEIF(JTYPE(J0).GT.0) THEN
30 ITYP=2*IDABS
31 ELSE
32 ITYP=2.*IDABS+1
33 ENDIF
34 IBEAM=JET-10
35 AM0=ABS(PJSET(5,J0))
361 T0=AM0**2
37 X0=ZMIN
38 ANF=3
39 DO 110 I=4,6
40 AMQ2=AMASS(I)**2
41110 ANF=ANF+T0/(AMQ2+T0)
42 B0=11.-2.*ANF/3.
43C
44C SET UP ANOMALOUS DIMENSIONS. ALSO USE THESE TO DETERMINE TYPE
45C OF INCOMING PARTON (TO BE USED IN QCDINZ).
46C
47C GLUON
48 IF(IDABS.EQ.9) THEN
49 AMQ=0.
50 GAMG=GGG(ZMAX,DZMAX)-GGG(ZMIN,1.-ZMIN)
51 GAMS(1)=GAMG
52 FX0=STRUC(X0,T0,1,IDIN(IBEAM))
53 FX0S(1)=FX0
54 GAMFAC=(GBQG(SQRT(ZMAX))-GBQG(SQRT(ZMIN)))/FX0
55 GAMQ=0.
56 DO 210 IQ=2,13
57 FX0S(IQ)=STRUC(X0,T0,IQ,IDIN(IBEAM))
58 GAMS(IQ)=GAMFAC*FX0S(IQ)
59210 GAMQ=GAMQ+GAMS(IQ)
60 GAM=GAMG+GAMQ
61 AM1=CUTJET
62C
63 TRY=RANF()
64 SUM=0.
65 DO 220 IQ=1,13
66 SUM=SUM+GAMS(IQ)/GAM
67 IF(SUM.LT.TRY) GO TO 220
68 JIN(J0)=IQ
69 FXTEST(J0)=FX0S(IQ)
70 GO TO 300
71220 CONTINUE
72C
73C LIGHT QUARK
74 ELSEIF(IDABS.LE.3) THEN
75 AMQ=AMASS(IDABS)
76 GAMQ=GBQQ(SQRT(ZMAX),DZMAX)-GBQQ(SQRT(ZMIN),1.-ZMIN)
77 FX0=STRUC(X0,T0,ITYP,IDIN(IBEAM))
78 FXG=STRUC(X0,T0,1,IDIN(IBEAM))
79 GAMFAC=FXG/FX0
80 GAMG=GAMFAC*(GGQ(ZMAX)-GGQ(ZMIN))
81 GAM=GAMQ+GAMG
82 AM1=AMQ+CUTJET
83C
84 IF(GAMQ/GAM.GT.RANF()) THEN
85 JIN(J0)=ITYP
86 FXTEST(J0)=FX0
87 ELSE
88 JIN(J0)=1
89 FXTEST(J0)=FXG
90 ENDIF
91C
92C HEAVY QUARK -- SPECIAL TREATMENT NEEDED TO ALWAYS FORCE
93C GL-->QK+QB BEFORE END OF EVOLUTION.
94C USE SMALLER MASS FOR FORCED DECAYS TO PREVENT INFINITE LOOP.
95 ELSE
96 AMQ=AMASS(IDABS)
97 THRESH=4.*AMQ**2*X0/(1.-X0)
98 THRESH=(SQRT(THRESH)+CUTJET)**2
99 IF(STRUC(X0,T0,ITYP,IDIN(IBEAM)).LE.0..OR.
100 $ T0.LE.THRESH) THEN
101 PJSET(5,J0)=-AM0*SQRT(RANF())-ALAM
102 GLFORC(JET-10)=.TRUE.
103 JDCAY(J0)=-2
104 JIN(J0)=1
105 FXTEST(J0)=1.
106 RETURN
107 ENDIF
108 T1=SQRT(T0*THRESH)
109230 AM1=SQRT(T1)
110 FX0=STRUC(X0,T1,ITYP,IDIN(IBEAM))
111 IF(FX0.LE.0.) THEN
112 T1=SQRT(T1*T0)
113 GO TO 230
114 ENDIF
115 FXG=STRUC(X0,T1,1,IDIN(IBEAM))
116 GAMFAC=FXG/FX0
117 GAMQ=GQQ(ZMAX,DZMAX)-GQQ(ZMIN,1.-ZMIN)
118 GAMG=GAMFAC*(GGQ(ZMAX)-GGQ(ZMIN))
119 GAM=GAMQ+GAMG
120C
121 IF(GAMQ/GAM.GT.RANF()) THEN
122 JIN(J0)=ITYP
123 FXTEST(J0)=FX0
124 ELSE
125 JIN(J0)=1
126 FXTEST(J0)=FXG
127 ENDIF
128 ENDIF
129C
130C LEADING-LOG MASS GENERATION.
131C
132300 GB=2.*GAM/B0
133 IF(AM1.GT.ALAM.AND.AM0.GT.ALAM) THEN
134 PROBL=GB*ALOG(ALOG(AM1/ALAM)/ALOG(AM0/ALAM))
135 ELSE
136 PROBL=0.
137 ENDIF
138 IF(PROBL.GT.0.) THEN
139 PROB=1.
140 ELSEIF(PROBL.GT.-50.) THEN
141 PROB=EXP(PROBL)
142 ELSE
143 PROB=0.
144 ENDIF
145 IF(PROB.GT.RANF()) THEN
146 IF(IDABS.LE.3.OR.IDABS.EQ.9) THEN
147 PJSET(5,J0)=AMQ
148 JDCAY(J0)=JPACK*J0+J0
149 RETURN
150 ELSEIF(AM0.LT.AM1+CUTJET) THEN
151 PJSET(5,J0)=-SQRT(T0)
152 GLFORC(JET-10)=.TRUE.
153 JDCAY(J0)=-2
154 JIN(J0)=1
155 FXTEST(J0)=1
156 RETURN
157 ELSE
158 AM0=AM1
159 GO TO 1
160 ENDIF
161 ELSE
162 POW=(1.-(1.-PROB)*RANF())**(1./GB)
163 AMNEW=ALAM*(AM0/ALAM)**POW
164 IF(AMNEW.GE.AM1) THEN
165 PJSET(5,J0)=-AMNEW
166 JDCAY(J0)=-2
167 RETURN
168 ELSEIF(IDABS.LE.3.OR.IDABS.EQ.9) THEN
169 PJSET(5,J0)=AMQ
170 JDCAY(J0)=JPACK*J0+J0
171 RETURN
172 ELSEIF(AM0.LT.AM1+CUTJET) THEN
173 PJSET(5,J0)=-AM0*SQRT(RANF())-ALAM
174 GLFORC(JET-10)=.TRUE.
175 JDCAY(J0)=-2
176 JIN(J0)=1
177 FXTEST(J0)=1
178 RETURN
179 ELSE
180 AM0=AM1
181 GO TO 1
182 ENDIF
183 ENDIF
184 END