*********************************************************************** c SUBROUTINE STARTDIGI c c last modified on: 18/02/2014 by I. Koenig c *********************************************************************** IMPLICIT NONE #include "geant321/gcflag.inc" #include "starttuple.inc" #include "user.inc" INTEGER NHDIM, NHMAX, NVDIM PARAMETER (NHDIM=10,NHMAX=1500,NVDIM=1) INTEGER ITRACK(NHMAX), NUMVS(NVDIM), NUMBV(NVDIM,NHMAX) INTEGER NHITS, NTUPID REAL HITS(NHDIM,NHMAX) CHARACTER*4 IUDET INTEGER I, L INTEGER CUR_TR NTRK = 0 IUDET = 'VSTD' DO I=1,NMAXCELL ! loop over start diamonds NUMVS(1) = I CALL GFHITS('STAR',IUDET,NVDIM,NHDIM,NHMAX,0,NUMVS, & ITRACK,NUMBV,HITS,NHITS) IF (NHITS.GT.NHMAX) THEN ! overflow WRITE(6,*) 'ERROR: overflow in emcdigi.F (nHits>', & NHMAX,') in START',I RETURN ENDIF DO L=1,NHITS ! loop over hits IF (HITS(7,L).EQ.0.0 .OR. HITS(9,L).EQ.1) THEN ! if E=0 or new volume entered CUR_TR = HITS(6,L) ! save current track IF (NTRK.LT.MAXTRKSTART) THEN NTRK = NTRK + 1 ! nb. of tracks STARTTRK(NTRK) = CUR_TR ! track number STARTDET(NTRK) = I ! cell number STARTE(NTRK) = HITS(7,L)*1.0e3 ! energy loss (in MeV) STARTX(NTRK) = LUNIT*HITS(1,L) ! x pos on entrance (in mm) STARTY(NTRK) = LUNIT*HITS(2,L) ! y pos on entrance (in mm) STARTTOF(NTRK) = HITS(4,L)*1.0e9 ! tof on entrance (in ns) STARTMOM(NTRK) = HITS(8,L)*1.0e3 ! momentum (in MeV/c) STARTLEN(NTRK) = LUNIT*HITS(10,L) ! track length (in mm) ELSE WRITE(6,*) 'ERROR: too many hits (>', & MAXTRKSTART,') in START',I RETURN ENDIF ELSE IF (CUR_TR.EQ.HITS(6,L)) THEN ! still same track? STARTE(NTRK) = HITS(7,L)*1.0e3 ! total energy loss (in MeV) ENDIF ENDDO ! end hit loop ENDDO ! end cell loop IF(IROOT.EQ.1) THEN CALL FILLSTART ENDIF RETURN END