]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/erpremc/trspsc.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / erpremc / trspsc.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/03/06 15:37:36 mclareni
6* Add geane321 source directories
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.49 by S.Giani
11*-- Author :
12C
13 SUBROUTINE TRSPSC(PS,RS,PC,RC,H,CH,IERR,SPX)
14C
15C *** TRANSFORMS ERROR MATRIX
16C FROM SPLINE VARIABLES (1/P,Y',Z',Y,Z)
17C TO SC VARIABLES (1/P,LAMBDA,PHI,YT,ZT)
18C
19C Authors: A. Haas and W. Wittek
20C
21C
22C *** PS(3) 1/P,Y',Z' INPUT
23C PC(3) 1/P,LAMBDA,PHI OUTPUT
24C H(3) MAGNETIC FIELD INPUT
25C RS(15) ERROR MATRIX IN SPLINE VARIABLES INPUT (TRIANGLE)
26C RC(15) ERROR MATRIX IN SC VARIABLES OUTPUT (TRIANGLE)
27C CH CHARGE OF PARTICLE INPUT
28C CHARGE AND MAGNETIC FIELD ARE NEEDED
29C FOR CORRELATION TERMS (LAMBDA,Y),(LAMBDA,Z),(PHI,Y),(PHI,Z)
30C THESE CORRELATION TERMS APPEAR BECAUSE RC IS ASSUMED
31C TO BE THE ERROR MATRIX FOR FIXED S (PATH LENGTH)
32C AND RS FOR FIXED X
33C
34C IERR NOT USED
35C SPX SIGN OF X-COMPONENT OF PARTICLE MOMENTUM INPUT
36C
37#if !defined(CERNLIB_SINGLE)
38 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
39 REAL PS,PC,H,RC,RS,CH,SPX
40#endif
41#include "geant321/trcom3.inc"
42 DIMENSION PS(3),PC(3),H(3),RC(15),RS(15)
43 DIMENSION UN(3),VN(3)
44C
45#if defined(CERNLIB_SINGLE)
46 DATA CFACT8 / 2.997925 E-4 /
47#endif
48#if !defined(CERNLIB_SINGLE)
49 DATA CFACT8 / 2.997925 D-4 /
50#endif
51C
52 IERR=0
53 PM=PS(1)
54 TN(1)=1./SQRT(1.+PS(2)**2+PS(3)**2)
55 IF(SPX.LT.0.) TN(1)=-TN(1)
56 TN(2)=PS(2)*TN(1)
57 TN(3)=PS(3)*TN(1)
58C
59 PC(1)=PS(1)
60 PC(2)=ASIN(TN(3))
61 IF (ABS (TN(1)) .LT. 1.E-30) TN(1) = 1.E-30
62 PC(3) = ATAN2 (TN(2),TN(1))
63C
64 COSL=SQRT(ABS(1.-TN(3)**2))
65 IF (COSL .LT. 1.E-30) COSL = 1.E-30
66 COSL1=1./COSL
67 UN(1)=-TN(2)*COSL1
68 UN(2)=TN(1)*COSL1
69C
70 VN(1)=-TN(3)*UN(2)
71 VN(2)=TN(3)*UN(1)
72 VN(3)=COSL
73C
74 J=0
75 DO 10 I=1,5
76 DO 4 K=I,5
77 J=J+1
78 A(I,K)=0.
79 A(K,I)=0.
80 S(J)=RS(J)
81 4 CONTINUE
82 10 CONTINUE
83C
84 IF(CH.EQ.0.) GO TO 6
85
86 HA=SQRT(H(1)**2+H(2)**2+H(3)**2)
87 HAM=HA*PM
88 IF(HAM.EQ.0.) GO TO 6
89 HM=CH/HA
90C
91 Q=-HAM*CFACT8
92C
93 SINZ=-(H(1)*UN(1)+H(2)*UN(2) )*HM
94 COSZ= (H(1)*VN(1)+H(2)*VN(2)+H(3)*VN(3))*HM
95 A(2,4)=-Q*TN(2)*SINZ
96 A(2,5)=-Q*TN(3)*SINZ
97 A(3,4)=-Q*TN(2)*COSZ*COSL1
98 A(3,5)=-Q*TN(3)*COSZ*COSL1
99C
100 6 A(1,1)=1.
101 A(2,2)=TN(1)*VN(2)
102 A(2,3)=TN(1)*VN(3)
103 A(3,2)=TN(1)*UN(2)*COSL1
104 A(4,4)=UN(2)
105 A(5,4)=VN(2)
106 A(5,5)=VN(3)
107C
108 CALL SSMT5T(A,S,S)
109C
110 J=0
111 DO 25 I=1,5
112 DO 20 K=I,5
113 J=J+1
114 RC(J)=S(J)
115 20 CONTINUE
116 25 CONTINUE
117*
118* *** ERROR EXITS
119*
120 END