*********************************************************************** c SUBROUTINE STSSTEP c c last modified on: 27/11/2015 by I. Koenig c *********************************************************************** IMPLICIT NONE #include "geant321/gcflag.inc" #include "geant321/gckine.inc" #include "geant321/gcsets.inc" #include "geant321/gctmed.inc" #include "geant321/gctrak.inc" #include "geant321/gcvolu.inc" #include "ststuple.inc" INTEGER NH PARAMETER (NH=17) REAL HITS(NH) REAL XM(3), XD(3), PM(3), PD(3) CHARACTER*4 CHSET EQUIVALENCE (IHSET,CHSET) INTEGER I, IHIT, DETNR, LAYINDEX, CELLINDEX, SUBINDEX REAL ELOS SAVE ELOS IF(CHSET.NE.'FSTS') RETURN ! are we in a forward detector ? ! IDTYPE = set number from common GCSETS DETNR = IDTYPE - 760 ! offset fixed in geometry routines ! accumulate the energy deposited by the particle IF(INWVOL.EQ.1) THEN ELOS = 0.0 ENDIF ELOS = ELOS + DESTEP SUBINDEX = 0 ! volume left or entered, or particle stopped or decayed. IF((INWVOL.EQ.2 .OR. INWVOL.EQ.1 .OR. ISTOP.GE.1) .AND. & CHARGE.NE.0) THEN DO I=1,3 XM(I) = VECT(I) PM(I) = VECT(I+3) ENDDO LAYINDEX = NUMBER(2) CELLINDEX = NUMBER(3) ! straw SUBINDEX = NUMBER(4) ! straw: 1-up, 2-down CALL GMTOD(PM,PD,2) ! transform momentum into cell ref system CALL GMTOD(XM,XD,1) ! transform coordinates into cell ref system HITS(1) = XD(1) ! x of hit in cell coordinates HITS(2) = XD(2) ! y " HITS(3) = XD(3) ! z " HITS(4) = PD(1) ! Px/P HITS(5) = PD(2) ! Py/P HITS(6) = PD(3) ! Pz/P HITS(7) = TOFG ! tof of current hit HITS(8) = SLENG ! length of current track HITS(9) = ELOS ! deposited energy HITS(10) = FLOAT(DETNR) ! module number HITS(11) = FLOAT(LAYINDEX) ! layer number HITS(12) = FLOAT(CELLINDEX) ! cell index HITS(13) = FLOAT(SUBINDEX) ! subcell HITS(14) = FLOAT(ITRA) ! track number HITS(15) = FLOAT(IPART) ! GEANT particle ID HITS(16) = VECT(7) ! total momentum of the particle HITS(17) = FLOAT(INWVOL) ! tracking flag (in common GCTRAK) CALL GSAHIT(ISET,IDET,ITRA,NUMBV,HITS,IHIT) ! store hit for stsdigi ENDIF RETURN END