]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gtrak/gtnino.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gtrak / gtnino.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:44  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/04 01/11/94  16.25.59  by  S.Ravndal
11 *-- Author :
12       SUBROUTINE GTNINO
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Tracking routine for "GEANTINO" type tracks              *
17 C.    *                                                                *
18 C.    *    ==>Called by : GTRACK                                       *
19 C.    *       Author    R.Brun, F.Bruyant                              *
20 C.    *                                                                *
21 C.    ******************************************************************
22 C.
23 #include "geant321/gconsp.inc"
24 #include "geant321/gctmed.inc"
25 #include "geant321/gctrak.inc"
26 #if defined(CERNLIB_DEBUG)
27 #include "geant321/gcunit.inc"
28 #endif
29 #if !defined(CERNLIB_SINGLE)
30       PARAMETER (EPSMAC=1.E-6)
31 #endif
32 #if defined(CERNLIB_SINGLE)
33       PARAMETER (EPSMAC=1.E-11)
34 #endif
35 C.
36 C.    ------------------------------------------------------------------
37 C.
38       STEP = STEMAX
39       IPROC = 103
40       CALL GTNEXT
41       IF (IGNEXT.NE.0) THEN
42          STEP = SNEXT + PREC
43          IPROC=0
44          INWVOL= 2
45          NMEC =  1
46          LMEC(1)=1
47 *
48 * *** Linear transport
49 *
50          DO 10 I = 1,3
51             VECTMP  = VECT(I) +STEP*VECT(I+3)
52             IF(VECTMP.EQ.VECT(I)) THEN
53 *
54 * *** Correct for machine precision
55 *
56                IF(VECT(I+3).NE.0.) THEN
57                   VECTMP = VECT(I)+ABS(VECT(I))*SIGN(1.,VECT(I+3))*
58      +            EPSMAC
59 *                 IF(NMEC.GT.0) THEN
60 *                    IF(LMEC(NMEC).EQ.32) NMEC=NMEC-1
61 *                 ENDIF
62 *                 NMEC=NMEC+1
63 *                 LMEC(NMEC)=32
64 #if defined(CERNLIB_DEBUG)
65                   WRITE(CHMAIL, 10000)
66                   CALL GMAIL(0,0)
67                   WRITE(CHMAIL, 10100) GEKIN, NUMED, STEP, SNEXT
68                   CALL GMAIL(0,0)
69 10000 FORMAT(' Boundary correction in GTNINO: ',
70      +       '    GEKIN      NUMED       STEP      SNEXT')
71 10100 FORMAT(31X,E10.3,1X,I10,1X,E10.3,1X,E10.3,1X)
72 #endif
73                ENDIF
74             ENDIF
75             VECT(I) = VECTMP
76    10    CONTINUE
77       ELSE
78          DO 20 I = 1,3
79             VECT(I)  = VECT(I) +STEP*VECT(I+3)
80    20    CONTINUE
81       ENDIF
82       SLENG = SLENG +STEP
83 *
84 * *** Update time of flight
85 *
86       TOFG = TOFG +STEP/CLIGHT
87 *
88       IF(IPROC.NE.0) THEN
89          NMEC=NMEC+1
90          LMEC(NMEC)=IPROC
91       ENDIF
92       END