Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gtrak / ghelx3.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:41  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.23  by  S.Giani
11 *-- Author :
12       SUBROUTINE GHELX3 (FIELD, STEP, VECT, VOUT)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Tracking routine in a constant field oriented            *
17 C.    *       along axis 3                                             *
18 C.    *       Tracking is performed with a conventional                *
19 C.    *       helix step method                                        *
20 C.    *                                                                *
21 C.    *    ==>Called by : <USER>, GUSWIM                               *
22 C.    *       Authors    R.Brun, M.Hansroul  *********                 *
23 C     *       Rewritten  V.Perevoztchikov
24 C.    *                                                                *
25 C.    ******************************************************************
26 C.
27       DIMENSION      VECT(7),VOUT(7),HXP(3)
28       PARAMETER      (IX=1,IY=2,IZ=3,IPX=4,IPY=5,IPZ=6,IPP=7)
29       PARAMETER      (SIXTH = 1./6.)
30       PARAMETER      (EC=2.9979251E-4)
31 C.
32 C.    ------------------------------------------------------------------
33 C.
34 C       units are kgauss,centimeters,gev/c
35 C
36       VOUT(IPP) = VECT(IPP)
37       H4 = FIELD * EC
38 *
39       HXP(1) = - VECT(IPY)
40       HXP(2) = + VECT(IPX)
41  
42       HP = VECT(IPZ)
43 *
44       RHO = -H4/VECT(IPP)
45       TET = RHO * STEP
46       IF (ABS(TET).GT.0.15)     THEN
47          SINT = SIN(TET)
48          SINTT = (SINT/TET)
49          TSINT = (TET-SINT)/TET
50          COS1T = 2.*(SIN(0.5*TET))**2/TET
51       ELSE
52          TSINT = SIXTH*TET**2
53          SINTT = (1. - TSINT)
54          SINT = TET*SINTT
55          COS1T = 0.5*TET
56       ENDIF
57 *
58       F1 = STEP * SINTT
59       F2 = STEP * COS1T
60       F3 = STEP * TSINT * HP
61       F4 = -TET*COS1T
62       F5 = SINT
63       F6 = TET * COS1T * HP
64  
65       VOUT(IX) = VECT(IX) + (F1*VECT(IPX) + F2*HXP(1))
66       VOUT(IY) = VECT(IY) + (F1*VECT(IPY) + F2*HXP(2))
67       VOUT(IZ) = VECT(IZ) + (F1*VECT(IPZ) + F3)
68  
69       VOUT(IPX) = VECT(IPX) + (F4*VECT(IPX) + F5*HXP(1))
70       VOUT(IPY) = VECT(IPY) + (F4*VECT(IPY) + F5*HXP(2))
71       VOUT(IPZ) = VECT(IPZ) + (F4*VECT(IPZ) + F6)
72  
73 C
74   999 END