]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/frgjet.F
Update rawdata format for trigger (Christian)
[u/mrichter/AliRoot.git] / ISAJET / code / frgjet.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE FRGJET(JET)
3C
4C Hadronize all partons in /JETSET/ corresponding to jet JET.
5C
6#if defined(CERNLIB_IMPNONE)
7 IMPLICIT NONE
8#endif
9#include "isajet/itapes.inc"
10#include "isajet/primar.inc"
11#include "isajet/jetpar.inc"
12#include "isajet/pjets.inc"
13#include "isajet/pinits.inc"
14#include "isajet/partcl.inc"
15#include "isajet/const.inc"
16#include "isajet/jetset.inc"
17#include "isajet/jwork.inc"
18#include "isajet/keys.inc"
19#include "isajet/q1q2.inc"
20#include "isajet/frame.inc"
21C
22 REAL ROT(3,3),POLD(5),PNEW(5),PSUM(5)
23 REAL CPHI,SPHI,AMSUM,ESUM,PJ,CTHJ,STHJ,PTJ
24 INTEGER K,K1,K2,IP,NPLV1,IFAIL,NBEGIN,JET,NFRAG,NFRGMX,JETJ,
25 $JTABS,NFIRST,J
26C
27 DATA PSUM/5*0./
28C
29C NFRAG counter protects against possible infinite loop.
30C
31 NFRAG=0
32 NFRGMX=10*MXJSET
33201 NBEGIN=NPTCL+1
34 NFRAG=NFRAG+1
35C
36C Loop over partons
37C
38 ESUM=0.
39 DO 220 J=1,NJSET
40 IF(JDCAY(J).NE.0) GO TO 220
41 JETJ=JORIG(J)/JPACK
42 IF(JETJ.NE.JET) GO TO 220
43 ESUM=ESUM+PJSET(4,J)
44C
45C Generate Field-Feynman jet for each quark or gluon, or...
46C
47 JTABS = IABS(JTYPE(J))
48 IF(JTABS.LT.10) THEN
49 NFIRST=NPTCL+1
50 CALL JETGEN(J)
51 IF(NPTCL.LT.NFIRST) GO TO 220
52C
53C Rotate hadrons to parton direction
54C
55 PTJ=PJSET(1,J)**2+PJSET(2,J)**2
56 PJ=SQRT(PTJ+PJSET(3,J)**2)
57 PTJ=SQRT(PTJ)
58C Following is to fix occasional bug on 32-bit machines
59 IF(PJ.GT.0.) THEN
60 CTHJ=PJSET(3,J)/PJ
61 STHJ=PTJ/PJ
62 ELSE
63 CTHJ=1.
64 STHJ=0.
65 ENDIF
66 IF(PTJ.GT.0.) THEN
67 CPHI=PJSET(1,J)/PTJ
68 SPHI=PJSET(2,J)/PTJ
69 ELSE
70 CPHI=SIGN(1.,PJSET(3,J))
71 SPHI=0.
72 ENDIF
73 ROT(1,1)=CPHI*CTHJ
74 ROT(2,1)=SPHI*CTHJ
75 ROT(3,1)=-STHJ
76 ROT(1,2)=-SPHI
77 ROT(2,2)=CPHI
78 ROT(3,2)=0.
79 ROT(1,3)=CPHI*STHJ
80 ROT(2,3)=SPHI*STHJ
81 ROT(3,3)=CTHJ
82 DO 230 IP=NFIRST,NPTCL
83 DO 235 K=1,3
84 POLD(K)=PPTCL(K,IP)
85 PPTCL(K,IP)=0
86235 CONTINUE
87 DO 240 K1=1,3
88 DO 240 K2=1,3
89240 PPTCL(K1,IP)=PPTCL(K1,IP)+ROT(K1,K2)*POLD(K2)
90230 CONTINUE
91C
92C ... hadronize all other partons with delta function.
93C
94 ELSE
95 IF((IABS(JTYPE(J)).EQ.80.OR.IABS(JTYPE(J)).EQ.90).AND.
96 $ .NOT.KEYS(2).AND..NOT.KEYS(12)) GO TO 210
97 IF(NPTCL.GE.MXPTCL) GO TO 9999
98 NPTCL=NPTCL+1
99 DO 255 K=1,5
100 PPTCL(K,NPTCL)=PJSET(K,J)
101255 CONTINUE
102 IORIG(NPTCL)=-J
103 IDENT(NPTCL)=JTYPE(J)
104 IDCAY(NPTCL)=0
105 ENDIF
106220 CONTINUE
107C
108C Sum masses and insert jet label
109C
110 AMSUM=0.
111 DO 260 IP=NBEGIN,NPTCL
112 AMSUM=AMSUM+PPTCL(5,IP)
113 IORIG(IP)=ISIGN(IABS(IORIG(IP))+IPACK*JET,IORIG(IP))
114260 CONTINUE
115C
116C Require sum of masses less than jet energy.
117C
118 IF(AMSUM.GT.ESUM.AND.NBEGIN.NE.NPTCL.AND.NFRAG.LT.NFRGMX) THEN
119 NPTCL=NBEGIN-1
120 GO TO 201
121 ENDIF
122C
123C For WPAIR events rescale jet to W mass.
124C
125 IF((KEYS(6).OR.KEYS(7).OR.KEYS(9).OR.KEYS(10)).AND.JET.LT.10)
126 $ THEN
127 IF(IABS(JTYPE(JET+N0JETS-1)).LT.80) RETURN
128 IF(AMSUM.GE.PJSET(5,JET+N0JETS-1)) THEN
129 IF(NFRAG.GT.NFRGMX) RETURN
130 NPTCL=NBEGIN-1
131 GO TO 201
132 ENDIF
133 PSUM(4)=PJSET(5,JET+N0JETS-1)
134 PSUM(5)=PSUM(4)
135 NPLV1=NPTCL
136 CALL RESCAL(NBEGIN,NPLV1,PSUM,IFAIL)
137 ENDIF
138C
139210 RETURN
140C
141C Error
142C
1439999 CALL PRTEVT(0)
144 WRITE(ITLIS,9998) NPTCL
1459998 FORMAT(//' ERROR IN FRGJET ... NPTCL > ',I6)
146 RETURN
147 END