]>
Commit | Line | Data |
---|---|---|
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 : | |
12 | C | |
13 | SUBROUTINE TRSPSC(PS,RS,PC,RC,H,CH,IERR,SPX) | |
14 | C | |
15 | C *** TRANSFORMS ERROR MATRIX | |
16 | C FROM SPLINE VARIABLES (1/P,Y',Z',Y,Z) | |
17 | C TO SC VARIABLES (1/P,LAMBDA,PHI,YT,ZT) | |
18 | C | |
19 | C Authors: A. Haas and W. Wittek | |
20 | C | |
21 | C | |
22 | C *** PS(3) 1/P,Y',Z' INPUT | |
23 | C PC(3) 1/P,LAMBDA,PHI OUTPUT | |
24 | C H(3) MAGNETIC FIELD INPUT | |
25 | C RS(15) ERROR MATRIX IN SPLINE VARIABLES INPUT (TRIANGLE) | |
26 | C RC(15) ERROR MATRIX IN SC VARIABLES OUTPUT (TRIANGLE) | |
27 | C CH CHARGE OF PARTICLE INPUT | |
28 | C CHARGE AND MAGNETIC FIELD ARE NEEDED | |
29 | C FOR CORRELATION TERMS (LAMBDA,Y),(LAMBDA,Z),(PHI,Y),(PHI,Z) | |
30 | C THESE CORRELATION TERMS APPEAR BECAUSE RC IS ASSUMED | |
31 | C TO BE THE ERROR MATRIX FOR FIXED S (PATH LENGTH) | |
32 | C AND RS FOR FIXED X | |
33 | C | |
34 | C IERR NOT USED | |
35 | C SPX SIGN OF X-COMPONENT OF PARTICLE MOMENTUM INPUT | |
36 | C | |
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) | |
44 | C | |
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 | |
51 | C | |
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) | |
58 | C | |
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)) | |
63 | C | |
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 | |
69 | C | |
70 | VN(1)=-TN(3)*UN(2) | |
71 | VN(2)=TN(3)*UN(1) | |
72 | VN(3)=COSL | |
73 | C | |
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 | |
83 | C | |
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 | |
90 | C | |
91 | Q=-HAM*CFACT8 | |
92 | C | |
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 | |
99 | C | |
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) | |
107 | C | |
108 | CALL SSMT5T(A,S,S) | |
109 | C | |
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 |