]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gkine/gskine.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gkine / gskine.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.2  1998/02/10 16:04:19  japost
6 *   Comments are correctly redistributed.
7 *
8 * Revision 1.1.1.1  1995/10/24 10:21:19  cernlib
9 * Geant
10 *
11 *
12 #include "geant321/pilot.h"
13 *CMZ :  3.21/02 28/03/94  01.30.59  by  S.Giani
14 *-- Author :
15       SUBROUTINE GSKINE(PLAB,IPART,NV,BUF,NWBUF,NT)
16 C.
17 C.    ******************************************************************
18 C.    *                                                                *
19 C     *       Store kinematics of track NT into data structure         *
20 C     *       Track is coming from vertex NV                           *
21 C.    *                                                                *
22 C.    *                                                                *
23 C.    * In detail:                                                     *
24 C.    *                                                                *
25 C.    *  Stores long life track parameters.                            *
26 C.    *                                                                *
27 C.    *  Input:                                                        *
28 C.    *    PLAB      components of momentum                            *
29 C.    *    IPART     type of particle (see GSPART)                     *
30 C.    *    NV        vertex number origin of track                     *
31 C.    *    UBUF      array of NUBUF floating point user parameters     *
32 C.    *    NUBUF                                                       *
33 C.    *                                                                *
34 C.    *  Output:                                                       *
35 C.    *    NT        track number (if=0 error).                        *
36 C.    *                                                                *
37 C.    *    ==>Called by : <USER>, GUKINE,GUSTEP                        *
38 C.    *       Authors    R.Brun, F.Carena, M.Hansroul  *********       *
39 C.    *                                                                *
40 C.    ******************************************************************
41 C.
42 #include "geant321/gcbank.inc"
43 #include "geant321/gcnum.inc"
44 #include "geant321/gcpush.inc"
45       DIMENSION PLAB(3),BUF(1)
46       SAVE JV
47 C.
48 C.    ------------------------------------------------------------------
49 C.
50       IF(NV.LE.0)GO TO 10
51       IF(NV.GT.NVERTX)GO TO 90
52       JV = LQ(JVERTX- NV)
53       IF(JV.LE.0)GO TO 90
54 C
55    10 NT     = NTRACK + 1
56       IF (JKINE.EQ.0)THEN
57          CALL MZBOOK(IXDIV,JKINE,JKINE,1,'KINE',NCKINE,NCKINE,1,2,0)
58          IQ(JKINE-5)=0
59       ENDIF
60       IF(NT.GT.IQ(JKINE-2)) CALL MZPUSH(IXDIV,JKINE,NPKINE,0,'I')
61 C
62       CALL MZBOOK(IXDIV,JK,JKINE,-NT,'KINE',1,1,8,3,0)
63 C
64       IF (JPART.LE.0) GO TO 90
65       IF (IPART.GT.IQ(JPART-2)) GO TO 90
66       JPA = LQ(JPART- IPART)
67       IF (JPA.LE.0) GO TO 90
68       P2     = PLAB(1)**2 + PLAB(2)**2 + PLAB(3)**2
69       AMASS = Q(JPA + 7)
70       E      = SQRT(P2 + AMASS*AMASS)
71 C
72 C            Store kinematics in JKINE
73 C
74       Q(JK + 1) = PLAB(1)
75       Q(JK + 2) = PLAB(2)
76       Q(JK + 3) = PLAB(3)
77       Q(JK + 4) = E
78       Q(JK + 5) = IPART
79       Q(JK + 6) = NV
80 C
81 C            Copy user words
82 C
83       IF(NWBUF.GT.0)THEN
84          CALL MZBOOK(IXDIV,JUK,JK,-1,'KINU',0,0,NWBUF,3,0)
85          IQ(JUK-5)=NT
86 C
87          DO 15 I=1,NWBUF
88             Q(JUK+I)=BUF(I)
89    15    CONTINUE
90       ENDIF
91 C
92 C
93 C            Connect track NT to vertex NV
94 C
95       IF(NV.GT.0)THEN
96          JV = LQ(JVERTX- NV)
97          NTG = Q(JV + 7)
98          NFREE=IQ(JV-1)-7-NTG
99          IF(NFREE.LE.0)CALL MZPUSH(IXDIV,JV,0,2,'I')
100          Q(JV + NTG + 8) = NT
101          Q(JV + 7) = NTG + 1
102       ENDIF
103 C
104       NTRACK = NT
105       IQ(JKINE+1)=NTRACK
106       GO TO 99
107 C
108 C            Error
109 C
110   90  NT     = 0
111   99  RETURN
112       END