2 C*********************************************************************
4 SUBROUTINE LULIST(MLIST)
6 C...Purpose: to give program heading, or list an event, or particle
7 C...data, or current parameter values.
8 COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
9 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
11 COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
12 SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
13 CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
15 DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
17 C...Initialization printout: version number and date of last change.
18 IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
24 C...List event data, including additional lines after N.
25 IF(MLIST.GE.1.AND.MLIST.LE.3) THEN
26 IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
27 IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
28 IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
33 IF(MSTU(2).GT.0) IMAX=MSTU(2)
34 DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
35 IF((I.GT.IMAX.AND.I.LE.N).OR.K(I,1).LT.0) GOTO 120
37 C...Get particle name, pad it and check it is not too long.
38 CALL LUNAME(K(I,2),CHAP)
41 IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
45 IF(MDL.EQ.2.OR.MDL.GE.8) THEN
47 IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
50 IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
52 CHAC=CHDL(MDL)(1:2*LDL)//' '
54 CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
55 & CHDL(MDL)(LDL+1:2*LDL)//' '
56 IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
60 C...Add information on string connection.
61 IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
65 IF(KC.NE.0) KCC=KCHG(KC,2)
66 IF(IABS(K(I,2)).EQ.39) THEN
67 IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
68 ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
70 IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
71 ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
72 IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
75 IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
79 C...Write data for particle/jet.
80 IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999.) THEN
81 WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3),
83 ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999.) THEN
84 WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
86 ELSEIF(MLIST.EQ.1) THEN
87 WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
89 ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
91 WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3),
92 & K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
93 & K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
96 WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),(P(I,J2),J2=1,5)
98 IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5)
100 C...Insert extra separator lines specified by user.
101 IF(MSTU(70).GE.1) THEN
103 DO 110 J=1,MIN(10,MSTU(70))
104 IF(I.EQ.MSTU(70+J)) ISEP=1
106 IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000)
107 IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100)
111 C...Sum of charges and momenta.
115 IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999.) THEN
116 WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5)
117 ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999.) THEN
118 WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5)
119 ELSEIF(MLIST.EQ.1) THEN
120 WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5)
122 WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5)
125 C...Give simple list of KF codes defined in program.
126 ELSEIF(MLIST.EQ.11) THEN
130 CALL LUNAME(-KF,CHAN)
131 IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP
132 IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
136 DO 150 KFLB=1,KFLA-(3-KFLS)/2
137 KF=1000*KFLA+100*KFLB+KFLS
139 CALL LUNAME(-KF,CHAN)
140 WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
146 WRITE(MSTU(11),6700) KF,CHAP
149 WRITE(MSTU(11),6700) KF,CHAP
152 IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
155 IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
159 KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
161 CALL LUNAME(-KF,CHAN)
162 WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
164 KF=10000*KFLR+110*KFLB+KFLS
166 WRITE(MSTU(11),6700) KF,CHAP
171 WRITE(MSTU(11),6700) KF,CHAP
174 WRITE(MSTU(11),6700) KF,CHAP
180 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC)) GOTO 210
181 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 210
182 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
183 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
185 CALL LUNAME(-KF,CHAN)
186 WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
192 C...List parton/particle data table. Check whether to be listed.
193 ELSEIF(MLIST.EQ.12) THEN
198 IF(MSTU(2).NE.0) KFMAX=MSTU(2)
199 DO 270 KF=MAX(1,MSTU(1)),KFMAX
202 IF(MSTU(14).EQ.0.AND.KF.GT.100.AND.KC.LE.100) GOTO 270
203 IF(MSTU(14).GT.0.AND.KF.GT.100.AND.MAX(MOD(KF/1000,10),
204 & MOD(KF/100,10)).GT.MSTU(14)) GOTO 270
205 IF(MSTU(14).GT.0.AND.KF.GT.100.AND.KC.EQ.90) GOTO 270
207 C...Find particle name and mass. Print information.
209 IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 270
210 CALL LUNAME(-KF,CHAN)
212 WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,KCHG(KC,1),KCHG(KC,2),
213 & KCHG(KC,3),PM,PMAS(KC,2),PMAS(KC,3),PMAS(KC,4),MDCY(KC,1)
215 C...Particle decay: channel number, branching ration, matrix element,
217 IF(KF.GT.100.AND.KC.LE.100) GOTO 270
218 DO 260 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
220 CALL LUNAME(KFDP(IDC,J),CHAD(J))
222 WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
228 C...List parameter value table.
229 ELSEIF(MLIST.EQ.13) THEN
232 WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
236 C...Format statements for output on unit MSTU(11) (by default 6).
237 5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
238 &5X,'KF orig p_x p_y p_z E m'/)
239 5200 FORMAT(///28X,'Event listing (standard)'//4X,'I particle/jet',
240 &' K(I,1) K(I,2) K(I,3) K(I,4) K(I,5) P(I,1)',
241 &' P(I,2) P(I,3) P(I,4) P(I,5)'/)
242 5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I particle/j',
243 &'et K(I,1) K(I,2) K(I,3) K(I,4) K(I,5) P(I,1)',
244 &' P(I,2) P(I,3) P(I,4) P(I,5)'/73X,
245 &'V(I,1) V(I,2) V(I,3) V(I,4) V(I,5)'/)
246 5400 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.3)
247 5500 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.2)
248 5600 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.1)
249 5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I1,2I4),5F13.5)
250 5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I9),5F13.5)
251 5900 FORMAT(66X,5(1X,F12.3))
252 6000 FORMAT(1X,78('='))
253 6100 FORMAT(1X,130('='))
254 6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
255 6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
256 6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
257 6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
259 6600 FORMAT(///20X,'List of KF codes in program'/)
260 6700 FORMAT(4X,I6,4X,A16,6X,I6,4X,A16)
261 6800 FORMAT(///30X,'Particle/parton data table'//5X,'KF',5X,'KC',4X,
262 &'particle',8X,'antiparticle',6X,'chg col anti',8X,'mass',7X,
263 &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
264 &1X,'ME',3X,'Br.rat.',4X,'decay products')
265 6900 FORMAT(/1X,I6,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
267 7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F8.5,4X,5A16)
268 7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
269 &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
270 7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)