* * $Id$ * * $Log$ * Revision 1.1 2000/06/19 20:00:38 eugenio * Initial revision * * Revision 1.2 1995/05/30 13:16:05 zfiles * Print out "death by ?" if killed by CLEOG. * * Revision 1.1.1.1 1994/10/08 02:21:27 zfiles * first version of qqlib in CVS * * #include "sys/CLEO_machine.h" #include "pilot.h" *CMZ : 1.04/00 22/09/94 00.24.00 by Paul Avery *CMZ : 1.01/00 12/10/90 09.57.51 by Paul Avery *CMZ : 1.00/00 26/07/90 13.29.10 by Paul Avery *-- Author : SUBROUTINE DMPMCC(NEVT, LOUT) C --------------------------------------------------------------------- C DMPMCC dumps the decay history of an event from the C production of the primary particles to the final stable C daughter particles C C NEVT integer variable(read) C Event number C C LOUT integer variable (read) C FORTRAN unit number to write the output. C --------------------------------------------------------------------- #if defined(CLEO_TYPECHEK) IMPLICIT NONE #endif #include "seq/clinc/qqpars.inc" #include "seq/clinc/qqtrak.inc" #include "seq/clinc/qqvrtx.inc" #include "seq/clinc/qqevnt.inc" #include "seq/clinc/qqbfld.inc" #include "seq/clinc/qqbmst.inc" #include "qqlib/seq/qqcntl.inc" #include "seq/clinc/qqfile.inc" #include "seq/clinc/qqprop.inc" C C Calling arguments INTEGER NEVT, LOUT C C Local variables INTEGER I, J, L, NOUT, INP, IT, ICHR, ITYP1, ITYP2, IMECH CHARACTER*140 STRNG INTEGER MXDETH PARAMETER ( MXDETH = 35 ) CHARACTER*14 DEATH(MXDETH), DMECH, VMECH DATA DEATH / $ 'DECAY', 'GEANT2', 'GEANT3', 'GEANT4', 'DECAY', $ 'PAIR PROD', 'COMP SCAT', 'PHOTOELEC', 'BREM', 'DELTA RAY', $ 'E+ ANNI', 'HADR INTER', 'HADR ELAS COHE', 'NUCL EVAP', $ 'NUCL FISS', $ 'NUCL ABSORP', 'P- ANNI', 'NTRON CAPTURE', 'HADR ELAS INCO', $ 'HADR INEL SCAT', $ 'MU-NUCL INTER', 'LARGE TOF', 'NUCL PHO-FISS', 'GEANT24', $ 'RAYLEIGH EFF', $ 'GEANT26', 'GEANT27', 'GEANT28', 'GEANT29', 'E TOO LOW', $ 'LONG PATH LENG', 'TOO MANY STEPS', 'TOO MANY POINTS', $ 'ESCAPED CLEO', $ 'E LOW + DECAY'/ C --------------------------------------------------------------------- C Wwrite out info for event WRITE(LOUT,1000) 1000 FORMAT(/100('*')) C Track information WRITE(LOUT,1050)IRUNQQ, IEVTQQ 1050 FORMAT(T38,' Decay history for run, event',2I7) WRITE(LOUT,1040) NTRKMC, NTRKQQ, NSTBMC, NSTBQQ, NCHGMC, NCHGQQ, * NVRTX, ECM, P4CMQQ, XANGQQ 1040 FORMAT( * ' NTRKMC = ',I3,' # MC tracks'/ * ' NTRKQQ = ',I3,' # MC tracks generated by QQ'/ * ' NSTBMC = ',I3,' # stable MC tracks'/ * ' NSTBQQ = ',I3,' # stable MC tracks generated by QQ'/ * ' NCHGMC = ',I3,' # charged, stable MC tracks'/ * ' NCHGQQ = ',I3,' # charged, stable MC tracks generated by QQ'/ * ' NVRTX = ',I3,' # Vertices'/ * ' ECM = ', F10.5,' e+e- invariant mass'/ * ' P4CMQQ = ',4F10.5,' CM 4-vector'/ * ' XANGQQ = ', F10.5,' crossing angle'/ * ) IF(NTRKMC.EQ.NTRKQQ) THEN WRITE(LOUT,1051) ELSE WRITE(LOUT,1052) ENDIF 1051 FORMAT(T12,'Stbl',T35,'Decay',T44,'Num',T51,'First', * T59,'Prod',T67,'Decay',T76,'Stbl', * /T7,'Type',T12,'Type',T18,'Name',T27,'Parent',T35,'Chanl', * T43,'Dautrs',T51,'Dautr',T59,'Vertx',T67, * 'Vertx',T76,'List',T84,'Px',T94,'Py',T104,'Pz',T114,'E') 1052 FORMAT(T12,'Stbl',T35,'Decay',T44,'Num',T51,'First', * T59,'Prod',T67,'Decay',T76,'Stbl', * /T7,'Type',T12,'Type',T18,'Name',T27,'Parent',T35,'Chanl', * T43,'Dautrs',T51,'Dautr',T59,'Vertx',T67, * 'Vertx',T76,'List',T84,'Px',T94,'Py',T104,'Pz',T114,'E', T122, * 'Death by' ) C Normal particle .... ITYPEV(I,1) .GE. 0 C Quark .............. ITYPEV(I,1) .LT. 0 DO 100 I=1,NTRKMC ITYP1 = ITYPEV(I,1) ITYP2 = ITYPEV(I,2) IMECH = IDKMEC(I) IF ( IMECH.GE.0 .AND. IMECH.LE.MXDETH ) THEN DMECH = DEATH(IMECH) ELSE DMECH = '*** UNKNOWN ***' END IF IF(NTRKMC.EQ.NTRKQQ) THEN WRITE(LOUT,1053)I, ITYP1, ITYP2, PNAME(ITYP1), IPRNTV(I), * IDECSV(I), NDAUTV(I), IDAUTV(I), IVPROD(I), * IVDECA(I),ISTBMC(I), (P4QQ(L,I),L=1,4) ELSE WRITE(LOUT,1054)I, ITYP1, ITYP2, PNAME(ITYP1), IPRNTV(I), * IDECSV(I), NDAUTV(I), IDAUTV(I), IVPROD(I), * IVDECA(I),ISTBMC(I), (P4QQ(L,I),L=1,4), DMECH ENDIF 1053 FORMAT(I4,2I5,3X,A5,I7,6I8,4F10.5) 1054 FORMAT(I4,2I5,3X,A5,I7,6I8,4F10.5,1X,A14) 100 CONTINUE C Vertex information WRITE(LOUT,1060)IRUNQQ, IEVTQQ 1060 FORMAT(/,T38,' Vertex history for run, event',2I7,/) WRITE(LOUT,1061) 1061 FORMAT(T18,'Input',T26,'Output',T35,'Num' * /T10,'Type',T19,'Trk',T27,'Trk',T35,'Trks', * T44,'R',T55,'Vx',T66,'Vy',T77,'Vz',T86,'T(ns)') DO 200 I=1,NVRTX INP = ITRKIN(I) IF (INP .EQ. 0) THEN STRNG = 'GOD ' // ' ==> ' ELSE STRNG = PNAME(ITYPEV(INP,1)) // ' ==> ' ENDIF C Write string containing ASCII info about process C Particle absorbed NOUT = NTRKOU(I) IF(NOUT .EQ. 0) THEN STRNG(11:) = '***** ABSORBED *****' C Decay into "NOUT" particles. Write names into "STRNG" ELSE IT = ITRKOU(I) - 1 DO 150 J=1,NOUT ICHR = 11 + 6*(J-1) STRNG(ICHR:ICHR+5) = PNAME(ITYPEV(IT+J,1)) 150 CONTINUE ENDIF WRITE(LOUT,1062)I, IVKODE(I), ITRKIN(I), ITRKOU(I), NTRKOU(I), * RVTX(I), (XVTX(I,L),L=1,3), TVTX(I)/1000., $ STRNG(1:50) 1062 FORMAT(I4,4I8,5F11.6,2X,A) 200 CONTINUE RETURN END