]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/qcdint.F
Functions renamed to get a prefix PHOS
[u/mrichter/AliRoot.git] / ISAJET / code / qcdint.F
1 #include "isajet/pilot.h"
2       SUBROUTINE QCDINT(J0)
3 C
4 C          AUXILIARY ROUTINE FOR QCDINI.  GENERATE A NEW MASS FOR
5 C          SPACELIKE PARTON J0.
6 C
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"
13 C
14       DIMENSION GAMS(13),FX0S(13)
15       DATA CA/3./,CF/1.333333333/
16 C
17 C          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))
24 C
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))
36 1     T0=AM0**2
37       X0=ZMIN
38       ANF=3
39       DO 110 I=4,6
40       AMQ2=AMASS(I)**2
41 110   ANF=ANF+T0/(AMQ2+T0)
42       B0=11.-2.*ANF/3.
43 C
44 C          SET UP ANOMALOUS DIMENSIONS. ALSO USE THESE TO DETERMINE TYPE
45 C          OF INCOMING PARTON (TO BE USED IN QCDINZ).
46 C
47 C          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)
59 210     GAMQ=GAMQ+GAMS(IQ)
60         GAM=GAMG+GAMQ
61         AM1=CUTJET
62 C
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
71 220     CONTINUE
72 C
73 C          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
83 C
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
91 C
92 C          HEAVY QUARK -- SPECIAL TREATMENT NEEDED TO ALWAYS FORCE
93 C          GL-->QK+QB BEFORE END OF EVOLUTION.
94 C          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)
109 230     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
120 C
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
129 C
130 C          LEADING-LOG MASS GENERATION.
131 C
132 300   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