* * $Id$ * * $Log$ * Revision 1.2 1998/02/10 16:04:19 japost * Comments are correctly redistributed. * * Revision 1.1.1.1 1995/10/24 10:21:19 cernlib * Geant * * #include "geant321/pilot.h" *CMZ : 3.21/02 28/03/94 01.30.59 by S.Giani *-- Author : SUBROUTINE GSKINE(PLAB,IPART,NV,BUF,NWBUF,NT) C. C. ****************************************************************** C. * * C * Store kinematics of track NT into data structure * C * Track is coming from vertex NV * C. * * C. * * C. * In detail: * C. * * C. * Stores long life track parameters. * C. * * C. * Input: * C. * PLAB components of momentum * C. * IPART type of particle (see GSPART) * C. * NV vertex number origin of track * C. * UBUF array of NUBUF floating point user parameters * C. * NUBUF * C. * * C. * Output: * C. * NT track number (if=0 error). * C. * * C. * ==>Called by : , GUKINE,GUSTEP * C. * Authors R.Brun, F.Carena, M.Hansroul ********* * C. * * C. ****************************************************************** C. #include "geant321/gcbank.inc" #include "geant321/gcnum.inc" #include "geant321/gcpush.inc" DIMENSION PLAB(3),BUF(1) SAVE JV C. C. ------------------------------------------------------------------ C. IF(NV.LE.0)GO TO 10 IF(NV.GT.NVERTX)GO TO 90 JV = LQ(JVERTX- NV) IF(JV.LE.0)GO TO 90 C 10 NT = NTRACK + 1 IF (JKINE.EQ.0)THEN CALL MZBOOK(IXDIV,JKINE,JKINE,1,'KINE',NCKINE,NCKINE,1,2,0) IQ(JKINE-5)=0 ENDIF IF(NT.GT.IQ(JKINE-2)) CALL MZPUSH(IXDIV,JKINE,NPKINE,0,'I') C CALL MZBOOK(IXDIV,JK,JKINE,-NT,'KINE',1,1,8,3,0) C IF (JPART.LE.0) GO TO 90 IF (IPART.GT.IQ(JPART-2)) GO TO 90 JPA = LQ(JPART- IPART) IF (JPA.LE.0) GO TO 90 P2 = PLAB(1)**2 + PLAB(2)**2 + PLAB(3)**2 AMASS = Q(JPA + 7) E = SQRT(P2 + AMASS*AMASS) C C Store kinematics in JKINE C Q(JK + 1) = PLAB(1) Q(JK + 2) = PLAB(2) Q(JK + 3) = PLAB(3) Q(JK + 4) = E Q(JK + 5) = IPART Q(JK + 6) = NV C C Copy user words C IF(NWBUF.GT.0)THEN CALL MZBOOK(IXDIV,JUK,JK,-1,'KINU',0,0,NWBUF,3,0) IQ(JUK-5)=NT C DO 15 I=1,NWBUF Q(JUK+I)=BUF(I) 15 CONTINUE ENDIF C C C Connect track NT to vertex NV C IF(NV.GT.0)THEN JV = LQ(JVERTX- NV) NTG = Q(JV + 7) NFREE=IQ(JV-1)-7-NTG IF(NFREE.LE.0)CALL MZPUSH(IXDIV,JV,0,2,'I') Q(JV + NTG + 8) = NT Q(JV + 7) = NTG + 1 ENDIF C NTRACK = NT IQ(JKINE+1)=NTRACK GO TO 99 C C Error C 90 NT = 0 99 RETURN END