]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/qcdinz.F
Added the magnetic field as a static member of the AliL3Transform class,
[u/mrichter/AliRoot.git] / ISAJET / code / qcdinz.F
1 #include "isajet/pilot.h"
2       SUBROUTINE QCDINZ(J0)
3 C
4 C          AUXILIARY ROUTINE FOR QCDINI. GENERATE A Z AND TWO DAUGHTER
5 C          PARTONS FOR 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       DATA CA/3./,CF/1.333333333/
15 C          FUNCTIONS.
16       PQQ(Z)=CF*(1.+Z**2)/(1.-Z)
17       PQG(Z)=CF*(1.+(1.-Z)**2)/Z
18       PGQ(Z)=.5*(Z**2+(1.-Z)**2)
19       PGG(Z)=2.*CA*(1.-Z*(1.-Z))**2/(Z*(1.-Z))
20 C
21 C          INITIALIZE
22       IDABS=IABS(JTYPE(J0))
23       AM0=ABS(PJSET(5,J0))
24       T0=AM0**2
25       JIN0=JIN(J0)
26       X0=(PJSET(4,J0)+SGN*PJSET(3,J0))/ECM
27       ZGOOD=.FALSE.
28       IF(ZMIN.GE.ZMAX) RETURN
29 C
30 C          SELECT BRANCHING AND GENERATE Z ACCORDING TO ALTARELLI-PARISI
31 C          FUNCTIONS.  THEN CHECK WITH STRUCTURE FUNCTIONS
32 C
33 C          GLUON
34 C
35       IF(IDABS.EQ.9) THEN
36 C
37 C          GL->GL+GL
38         IF(JIN0.EQ.1) THEN
39 110       ZGEN=DZMAX/ZMAX*(ZMAX*(1.-ZMIN)/(ZMIN*DZMAX))**RANF()
40           Z=1./(1.+ZGEN)
41           DZ=ZGEN/(1.+ZGEN)
42           GZ=2.*CA/(Z*DZ)
43           PGGZ=2.*CA*(1.-Z*(1.-Z))**2/(Z*DZ)
44           IF(PGGZ.LT.GZ*RANF()) GO TO 110
45           JTYPE(NJSET+1)=9
46           JTYPE(NJSET+2)=9
47           ZZC(J0)=Z
48 C
49           X1=X0/Z
50           FX1=STRUC(X1,T0,1,IDIN(JET-10))
51           FX0=FXTEST(J0)
52           IF(FX1/FX0.GT.RANF()) ZGOOD=.TRUE.
53 C
54 C          QK->GL+QK
55         ELSE
56 120       RZMAX=SQRT(ZMAX)
57           RZMIN=SQRT(ZMIN)
58           ZGEN=1./RZMAX-RANF()*(1./RZMAX-1./RZMIN)
59           Z=1./ZGEN**2
60           RZ=SQRT(Z)
61           GZ=2.*CF/RZ**3
62           IF(PQG(Z)/RZ.LT.GZ*RANF()) GO TO 120
63           IFL=JIN0/2
64           IF(JIN0.NE.2*IFL) IFL=-IFL
65           JTYPE(NJSET+1)=IFL
66           JTYPE(NJSET+2)=IFL
67           ZZC(J0)=Z
68 C
69           X1=X0/Z
70           FX1=STRUC(X1,T0,JIN0,IDIN(JET-10))
71           FX0=FXTEST(J0)
72           IF(RZ*FX1/FX0.GT.RANF()) ZGOOD=.TRUE.
73         ENDIF
74 C
75 C          QUARK
76 C
77       ELSE
78 C
79 C          GL->QK+QB
80         IF(JIN0.EQ.1) THEN
81 130       Z=ZMIN+(ZMAX-ZMIN)*RANF()
82           IF(PGQ(Z).LT..5*RANF()) GO TO 130
83           JTYPE(NJSET+1)=9
84           JTYPE(NJSET+2)=-JTYPE(J0)
85           ZZC(J0)=Z
86 C
87           X1=X0/Z
88           FX1=STRUC(X1,T0,1,IDIN(JET-10))
89           FX0=FXTEST(J0)
90           IF(FX1/FX0.GT.RANF().OR.GLFORC(JET-10)) ZGOOD=.TRUE.
91 C
92 C          QK->QK+GL
93         ELSE
94 140       DZ=DZMAX*((1.-ZMIN)/DZMAX)**RANF()
95           Z=1.-DZ
96           GZ=2.*CF/DZ
97           RZ=1.
98           IF(IDABS.LE.3) RZ=SQRT(Z)
99           PQQZ=CF*(1.+Z**2)/DZ
100           IF(PQQZ/RZ.LT.GZ*RANF()) GO TO 140
101           JTYPE(NJSET+1)=JTYPE(J0)
102           JTYPE(NJSET+2)=9
103           ZZC(J0)=Z
104 C
105           X1=X0/Z
106           FX1=STRUC(X1,T0,JIN0,IDIN(JET-10))
107           FX0=FXTEST(J0)
108           IF(RZ*FX1/FX0.GT.RANF()) ZGOOD=.TRUE.
109         ENDIF
110       ENDIF
111       JMATCH(NJSET+1)=0
112       JMATCH(NJSET+2)=0
113       RETURN
114       END