]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GEANT321/gkine/gskine.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gkine / gskine.F
diff --git a/GEANT321/gkine/gskine.F b/GEANT321/gkine/gskine.F
new file mode 100644 (file)
index 0000000..e5e3309
--- /dev/null
@@ -0,0 +1,112 @@
+*
+* $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 : <USER>, 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