]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gtrak/ghelx3.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gtrak / ghelx3.F
CommitLineData
fe4da5cc 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)
13C.
14C. ******************************************************************
15C. * *
16C. * Tracking routine in a constant field oriented *
17C. * along axis 3 *
18C. * Tracking is performed with a conventional *
19C. * helix step method *
20C. * *
21C. * ==>Called by : <USER>, GUSWIM *
22C. * Authors R.Brun, M.Hansroul ********* *
23C * Rewritten V.Perevoztchikov
24C. * *
25C. ******************************************************************
26C.
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)
31C.
32C. ------------------------------------------------------------------
33C.
34C units are kgauss,centimeters,gev/c
35C
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
73C
74 999 END