]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA/jetset/luhepc.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / PYTHIA / jetset / luhepc.F
CommitLineData
fe4da5cc 1
2C*********************************************************************
3
4 SUBROUTINE LUHEPC(MCONV)
5
6C...Purpose: to convert JETSET event record contents to or from
7C...the standard event record commonblock.
8C...Note that HEPEVT is in double precision according to LEP 2 standard.
9 PARAMETER (NMXHEP=2000)
10 COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
11 &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
12 DOUBLE PRECISION PHEP,VHEP
13 COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
14 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
16 SAVE /HEPEVT/
17 SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
18
19C...Conversion from JETSET to standard, the easy part.
20 IF(MCONV.EQ.1) THEN
21 NEVHEP=0
22 IF(N.GT.NMXHEP) CALL LUERRM(8,
23 & '(LUHEPC:) no more space in /HEPEVT/')
24 NHEP=MIN(N,NMXHEP)
25 DO 140 I=1,NHEP
26 ISTHEP(I)=0
27 IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1
28 IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2
29 IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3
30 IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1)
31 IDHEP(I)=K(I,2)
32 JMOHEP(1,I)=K(I,3)
33 JMOHEP(2,I)=0
34 IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN
35 JDAHEP(1,I)=K(I,4)
36 JDAHEP(2,I)=K(I,5)
37 ELSE
38 JDAHEP(1,I)=0
39 JDAHEP(2,I)=0
40 ENDIF
41 DO 100 J=1,5
42 PHEP(J,I)=P(I,J)
43 100 CONTINUE
44 DO 110 J=1,4
45 VHEP(J,I)=V(I,J)
46 110 CONTINUE
47
48C...Check if new event (from pileup).
49 IF(I.EQ.1) THEN
50 INEW=1
51 ELSE
52 IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I
53 ENDIF
54
55C...Fill in missing mother information.
56 IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN
57 IMO1=I-2
58 IF(I.GE.INEW+3.AND.K(I-1,1).EQ.21.AND.K(I-1,3).EQ.0)
59 & IMO1=IMO1-1
60 JMOHEP(1,I)=IMO1
61 JMOHEP(2,I)=IMO1+1
62 ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN
63 I1=K(I,3)-1
64 120 I1=I1+1
65 IF(I1.GE.I) CALL LUERRM(8,
66 & '(LUHEPC:) translation of inconsistent event history')
67 IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 120
68 KC=LUCOMP(K(I1,2))
69 IF(I1.LT.I.AND.KC.EQ.0) GOTO 120
70 IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 120
71 JMOHEP(2,I)=I1
72 ELSEIF(K(I,2).EQ.94) THEN
73 NJET=2
74 IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3
75 IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4
76 JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5))
77 IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)=
78 & MOD(K(I+1,4)/MSTU(5),MSTU(5))
79 ENDIF
80
81C...Fill in missing daughter information.
82 IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN
83 DO 130 I1=JDAHEP(1,I),JDAHEP(2,I)
84 I2=MOD(K(I1,4)/MSTU(5),MSTU(5))
85 JDAHEP(1,I2)=I
86 130 CONTINUE
87 ENDIF
88 IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 140
89 I1=JMOHEP(1,I)
90 IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 140
91 IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 140
92 IF(JDAHEP(1,I1).EQ.0) THEN
93 JDAHEP(1,I1)=I
94 ELSE
95 JDAHEP(2,I1)=I
96 ENDIF
97 140 CONTINUE
98 DO 150 I=1,NHEP
99 IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 150
100 IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I)
101 150 CONTINUE
102
103C...Conversion from standard to JETSET, the easy part.
104 ELSE
105 IF(NHEP.GT.MSTU(4)) CALL LUERRM(8,
106 & '(LUHEPC:) no more space in /LUJETS/')
107 N=MIN(NHEP,MSTU(4))
108 NKQ=0
109 KQSUM=0
110 DO 180 I=1,N
111 K(I,1)=0
112 IF(ISTHEP(I).EQ.1) K(I,1)=1
113 IF(ISTHEP(I).EQ.2) K(I,1)=11
114 IF(ISTHEP(I).EQ.3) K(I,1)=21
115 K(I,2)=IDHEP(I)
116 K(I,3)=JMOHEP(1,I)
117 K(I,4)=JDAHEP(1,I)
118 K(I,5)=JDAHEP(2,I)
119 DO 160 J=1,5
120 P(I,J)=PHEP(J,I)
121 160 CONTINUE
122 DO 170 J=1,4
123 V(I,J)=VHEP(J,I)
124 170 CONTINUE
125 V(I,5)=0.
126 IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN
127 I1=JDAHEP(1,I)
128 IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))*
129 & PHEP(5,I)/PHEP(4,I)
130 ENDIF
131
132C...Fill in missing information on colour connection in jet systems.
133 IF(ISTHEP(I).EQ.1) THEN
134 KC=LUCOMP(K(I,2))
135 KQ=0
136 IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
137 IF(KQ.NE.0) NKQ=NKQ+1
138 IF(KQ.NE.2) KQSUM=KQSUM+KQ
139 IF(KQ.NE.0.AND.KQSUM.NE.0) THEN
140 K(I,1)=2
141 ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN
142 IF(K(I+1,2).EQ.21) K(I,1)=2
143 ENDIF
144 ENDIF
145 180 CONTINUE
146 IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL LUERRM(8,
147 & '(LUHEPC:) input parton configuration not colour singlet')
148 ENDIF
149
150 END