]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/isatape/isahep.F
Changed inheritance order (RenderElement base comes first).
[u/mrichter/AliRoot.git] / ISAJET / isatape / isahep.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE ISAHEP(MCONV)
3C
4C...Purpose: to convert ISAJET event record contents to or from
5C...the standard event record common block.
6C
7C Thanks to Lynn Garren, Fermilab.
8C
9#if defined(CERNLIB_IMPNONE)
10 IMPLICIT NONE
11#endif
12#include "isajet/hepevt.inc"
13C
14C...for event number
15#include "isajet/idrun.inc"
16C...initial partons
17#include "isajet/pjets.inc"
18#include "isajet/primar.inc"
19C...partons created during decay
20#include "isajet/jetset.inc"
21C...particles created in the decay, including final state particles
22#include "isajet/partcl.inc"
23C
24 INTEGER MCONV
25 INTEGER ITRANS
26 INTEGER I1,IHP,MPART,JET,NPOFF,NJHEP,NWHEP,IMO,IJT
27 INTEGER JPMO(2,MXJSET),JPDA(2,MXJSET),JMX(MXJSET),JMN(MXJSET)
28 INTEGER JTMO(2,MXPTCL),JTDA(2,MXPTCL)
29 INTEGER IP,IJ3,IJ2,IJ1,NSUM2,NSUM1,IPT,I,J,KST,KND,K
30C
31C
32C...Conversion from ISAJET to standard
33C
34 IF(MCONV.EQ.1) THEN
35 NEVHEP = IEVT
36C...initial jets
37 NHEP = 0
38C... W or Z
39 IF(IDENTW.NE.0)THEN
40 NHEP = NHEP + 1
41 ISTHEP(NHEP)=12
42 JMOHEP(1,NHEP)=0
43 JMOHEP(2,NHEP)=0
44 JDAHEP(1,NHEP)= 2
45 JDAHEP(2,NHEP)= NJET + 1
46 IDHEP(NHEP) = ITRANS(IDENTW,1)
47 DO 100 J=1,5
48 100 PHEP(J,NHEP) = QWJET(J)
49 ENDIF
50 NWHEP = NHEP
51C... jets
52 IF(NJET.GT.0)THEN
53 DO 120 I=1,NJET
54 NHEP = NHEP + 1
55 ISTHEP(NHEP)=11
56 JMOHEP(1,NHEP)=0
57 IF(IDENTW.NE.0) JMOHEP(1,NHEP) = 1
58 JMOHEP(2,NHEP)= I
59 JDAHEP(1,NHEP)=0
60 JDAHEP(2,NHEP)=0
61 IDHEP(NHEP) = ITRANS(IDJETS(I),1)
62 DO 110 J=1,5
63 110 PHEP(J,NHEP) = PJETS(J,I)
64 120 CONTINUE
65 ENDIF
66 NJHEP = NHEP
67C... pairs
68 IF(NPAIR.GT.0)THEN
69 DO 150 I=1,NPAIR
70 NHEP = NHEP + 1
71 ISTHEP(NHEP)=13
72 JMOHEP(1,NHEP)= JPAIR(I) + NWHEP
73 JMOHEP(2,NHEP)= JPAIR(I)
74 JDAHEP(1,NHEP)=0
75 JDAHEP(2,NHEP)=0
76 IDHEP(NHEP) = ITRANS(IDPAIR(I),1)
77 DO 140 J=1,5
78 140 PHEP(J,NHEP) = PPAIR(J,I)
79 150 CONTINUE
80 ENDIF
81 DO 160 I=1,NHEP
82 DO 160 J=1,4
83 160 VHEP(J,I) = 0.
84C...save offset into hep list
85 NPOFF = NHEP
86C...partons
87 DO 200 I=1,NJSET
88 IHP = NHEP + I
89C...use JMX and JMN to find daughters in hadron list
90 JMX(I) = 0
91 JMN(I) = NHEP + NPTCL + 1
92 IDHEP(IHP) = ITRANS(JTYPE(I),1)
93 MPART=MOD(JORIG(I),JPACK)
94 JMOHEP(1,IHP)=0
95 IJT = JORIG(I)/JPACK
96 IF(MPART.NE.0)THEN
97 JMOHEP(1,IHP)=MPART+NHEP
98 ELSEIF(MPART.EQ.0 .AND. IJT.LT.10)THEN
99C...find mother in jet/pair list
100 IMO = IJT + NWHEP
101 IF(NJHEP.LT.NPOFF)THEN
102 KST = NJHEP + 1
103 DO 170 K=KST,NPOFF
104 IF(IDHEP(K).EQ.IDHEP(IHP)) IMO=K
105 170 CONTINUE
106 ENDIF
107 JMOHEP(1,IHP)= IMO
108 IF(JDAHEP(1,IMO).EQ.0) JDAHEP(1,IMO)=IHP
109 JDAHEP(1,IMO) = MIN(IHP,JDAHEP(1,IMO))
110 JDAHEP(2,IMO) = MAX(IHP,JDAHEP(2,IMO))
111C...amend information if a parton thinks this is it's daughter
112 KND = IHP-1
113 DO 175 K=NPOFF,KND
114 IF(IHP.GE.JDAHEP(1,K) .AND. IHP.LE.JDAHEP(2,K))
115 1 JMOHEP(1,IHP)=K
116 175 CONTINUE
117 ENDIF
118 JMOHEP(2,IHP)= IJT
119 IF(JDCAY(I).EQ.0)THEN
120 ISTHEP(IHP) = 21
121 JDAHEP(1,IHP)=0
122 JDAHEP(2,IHP)=0
123 ELSE
124 ISTHEP(IHP) = 22
125 JDAHEP(1,IHP) = JDCAY(I)/JPACK + NHEP
126 JDAHEP(2,IHP) = MOD(JDCAY(I),JPACK) + NHEP
127 ENDIF
128 DO 180 J=1,5
129 180 PHEP(J,IHP) = PJSET(J,I)
130 DO 190 J=1,4
131 190 VHEP(J,IHP) = 0.
132 200 CONTINUE
133 NHEP = NHEP + NJSET
134C...hadrons
135 DO 250 I=1,NPTCL
136 IHP = NHEP + I
137 IDHEP(IHP) = ITRANS(IDENT(I),1)
138 I1 = MOD(IABS(IORIG(I)),IPACK)
139 JMOHEP(1,IHP)=0
140 JMOHEP(2,IHP)=IABS(IORIG(I))/IPACK
141C...mother is pomeron
142 IF(I1.EQ.0)THEN
143C...mother is in parton list
144 ELSEIF(IORIG(I).LT.0)THEN
145 JMOHEP(1,IHP) = I1 + NPOFF
146 JMN(I1) = MIN(JMN(I1),I)
147 JMX(I1) = MAX(JMX(I1),I)
148C...mother is in hadron list
149 ELSEIF(IORIG(I).GT.0)THEN
150 JMOHEP(1,IHP) = I1 + NHEP
151 ENDIF
152 IF(IDCAY(I).EQ.0)THEN
153 ISTHEP(IHP) = 1
154 JDAHEP(1,IHP)=0
155 JDAHEP(2,IHP)=0
156 ELSE
157 ISTHEP(IHP) = 2
158 JDAHEP(1,IHP) = IDCAY(I)/IPACK + NHEP
159 JDAHEP(2,IHP) = MOD(IDCAY(I),IPACK) + NHEP
160 ENDIF
161 DO 210 J=1,5
162 210 PHEP(J,IHP) = PPTCL(J,I)
163 DO 220 J=1,4
164 220 VHEP(J,IHP) = 0.
165 250 CONTINUE
166 NHEP = NHEP + NPTCL
167C...fill in missing daughter info for partons
168 DO 270 I=1,NJSET
169 IF(JMX(I).NE.0)THEN
170 JDAHEP(1,I+NPOFF) = JMN(I) + NPOFF + NJSET
171 JDAHEP(2,I+NPOFF) = JMX(I) + NPOFF + NJSET
172 ENDIF
173 270 CONTINUE
174C
175C...Conversion from standard to ISAJET
176C
177 ELSEIF(MCONV.EQ.2)THEN
178 IEVT = NEVHEP
179C... missing information
180 IDENTW = 0
181 NPAIR = 0
182 DO 330 I=1,5
183 QWJET(I) = 0.
184 DO 330 J=1,4
185 PPAIR(I,J) = 0.
186 330 CONTINUE
187 DO 340 I=1,4
188 IDPAIR(I) = 0
189 340 JPAIR(I) = 0
190C...zero counters
191 IJ1 = 0
192 IJ2 = 0
193 IJ3 = 0
194 IP = 0
195 IPT = 0
196 DO 500 I=1,NHEP
197C...initial jets
198C... jets
199 IF(ISTHEP(I).EQ.11)THEN
200 IJ1 = IJ1 + 1
201 IDJETS(IJ1) = ITRANS(IDHEP(I),2)
202 DO 410 J=1,5
203 410 PJETS(J,IJ1) = PHEP(J,I)
204C... W
205 ELSEIF(ISTHEP(I).EQ.12)THEN
206 IJ2 = IJ2 + 1
207 IDENTW = ITRANS(IDHEP(I),2)
208 DO 420 J=1,5
209 420 QWJET(J) = PHEP(J,I)
210C... pairs
211 ELSEIF(ISTHEP(I).EQ.13)THEN
212 IJ3 = IJ3 + 1
213 IDPAIR(IJ3) = ITRANS(IDHEP(I),2)
214 JPAIR(IJ3) = JMOHEP(2,I)
215 DO 430 J=1,5
216 430 PPAIR(J,IJ3) = PHEP(J,I)
217C...partons
218 ELSEIF(ISTHEP(I).EQ.21 .OR. ISTHEP(I).EQ.22)THEN
219 IP = IP + 1
220 JTYPE(IP) = ITRANS(IDHEP(I),2)
221 DO 440 J=1,5
222 440 PJSET(J,IP) = PHEP(J,I)
223C... temporary storage until have counts
224 JPMO(1,IP) = JMOHEP(1,I)
225 JPMO(2,IP) = JMOHEP(2,I)
226 JPDA(1,IP) = JDAHEP(1,I)
227 JPDA(2,IP) = JDAHEP(2,I)
228C...hadrons
229 ELSE
230 IPT = IPT + 1
231 IDENT(IPT) = ITRANS(IDHEP(I),2)
232 DO 450 J=1,5
233 450 PPTCL(J,IPT) = PHEP(J,I)
234C... temporary storage until have counts
235 JTMO(1,IPT) = JMOHEP(1,I)
236 JTMO(2,IPT) = JMOHEP(2,I)
237 JTDA(1,IPT) = JDAHEP(1,I)
238 JTDA(2,IPT) = JDAHEP(2,I)
239 ENDIF
240 500 CONTINUE
241C...completed counts
242 NJET = IJ1
243 NPAIR = IJ3
244 NJSET = IP
245 NPTCL = IPT
246C...get mother/daughter information
247 NSUM1 = NJET + IJ2 + NPAIR
248 NSUM2 = NSUM1 + NJSET
249 DO 520 I=1,NJSET
250 IF(JPDA(1,I).EQ.0)THEN
251 JDCAY(I) = 0
252 ELSEIF(JPDA(1,I).GT.NSUM2)THEN
253 JDCAY(I) = 0
254 ELSE
255 JDCAY(I) = JPACK*(JPDA(1,I)-NSUM1) + JPDA(2,I)-NSUM1
256 ENDIF
257 IF(JPMO(1,I).LE.NSUM1)THEN
258 JORIG(I) = JPACK*JPMO(2,I)
259 ELSE
260 JORIG(I) = JPACK*JPMO(2,I) + JPMO(1,I)-NSUM1
261 ENDIF
262 520 CONTINUE
263 DO 550 I=1,NPTCL
264 IF(JTDA(1,I).EQ.0)THEN
265 IDCAY(I) = 0
266 ELSE
267 IDCAY(I) = IPACK*(JTDA(1,I)-NSUM2) + JTDA(2,I)-NSUM2
268 ENDIF
269 IF(JTMO(1,I).LE.NSUM1)THEN
270 IORIG(I) = JTMO(2,I)*IPACK + 0
271 ELSEIF(JTMO(1,I).LE.NSUM2)THEN
272 IORIG(I) = -(JTMO(2,I)*IPACK + JTMO(1,I)-NSUM1)
273 ELSE
274 IORIG(I) = JTMO(2,I)*IPACK + JTMO(1,I)-NSUM2
275 ENDIF
276 550 CONTINUE
277 ENDIF
278 RETURN
279 END