5 * Revision 1.1.1.1 1996/03/06 15:37:36 mclareni
6 * Add geane321 source directories
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.49 by S.Giani
12 SUBROUTINE TRS1S2 (PD1,RD1,PD2,RD2,H,CH,IERR,SP1,SP2
15 C *** TRANSFORMS ERROR MATRIX
16 C FROM VARIABLES (1/P,V1',W1',V1,W1)
17 C TO VARIABLES (1/P,V2',W2',V2,W2)
19 C Authors: A. Haas and W. Wittek
22 C *** PD1(3) 1/P,V1',W1' INPUT
23 C PD2(3) 1/P,V2',W2' OUTPUT
24 C H(3) MAGNETIC FIELD INPUT
25 C RD1(15) ERROR MATRIX IN 1/P,V1',W1',V1,W1 INPUT (TRIANGLE)
26 C RD2(15) ERROR MATRIX IN 1/P,V2',W2',V2,W2 OUTPUT (TRIANGLE)
27 C CH CHARGE OF PARTICLE INPUT
28 C CHARGE AND MAGNETIC FIELD ARE NEEDED
29 C FOR CORRELATION TERMS (V2',V1),(V2',W1),(W2',V1),(W2',W1)
30 C THESE CORRELATION TERMS APPEAR BECAUSE RD1 IS ASSUMED
31 C TO BE THE ERROR MATRIX FOR FIXED U1
32 C AND RD2 FOR FIXED U2
33 C SP1 SIGN OF U1-COMPONENT OF PARTICLE MOMENTUM INPUT
34 C SP2 SIGN OF U2-COMPONENT OF PARTICLE MOMENTUM OUTPUT
35 C DJ1(3) UNIT VECTOR IN V1-DIRECTION
36 C DK1(3) UNIT VECTOR IN W1-DIRECTION OF SYSTEM 1
37 C DJ2(3) UNIT VECTOR IN V2-DIRECTION
38 C DK2(3) UNIT VECTOR IN W2-DIRECTION OF SYSTEM 2
40 C IERR = 0 TRANSFORMATION OK
41 C = 1 MOMENTUM PERPENDICULAR TO U2-DIRECTION (V2',W2' NOT DEFIN
42 C = 2 MOMENTUM PERPENDICULAR TO X-AXIS
45 #if !defined(CERNLIB_SINGLE)
46 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
47 REAL PD1,PD2,RD1,RD2,H,CH,SP1,SP2,DJ1,DK1,DJ2,DK2
49 #include "geant321/trcom3.inc"
50 DIMENSION PD1(3),PD2(3),RD1(15),RD2(15),H(3),DJ1(3),DK1(3)
51 +,DJ2(3),DK2(3),UN(3),VN(3),DI1(3),DI2(3),TVW1(3),TVW2(3)
53 #if defined(CERNLIB_SINGLE)
54 DATA CFACT8 / 2.997925 E-4 /
56 #if !defined(CERNLIB_SINGLE)
57 DATA CFACT8 / 2.997925 D-4 /
62 TVW1(1)=1./SQRT(1.+PD1(2)**2+PD1(3)**2)
63 IF(SP1.LT.0.) TVW1(1)=-TVW1(1)
64 TVW1(2)=PD1(2)*TVW1(1)
65 TVW1(3)=PD1(3)*TVW1(1)
67 DI1(1)=DJ1(2)*DK1(3)-DJ1(3)*DK1(2)
68 DI1(2)=DJ1(3)*DK1(1)-DJ1(1)*DK1(3)
69 DI1(3)=DJ1(1)*DK1(2)-DJ1(2)*DK1(1)
72 TN(I)=TVW1(1)*DI1(I)+TVW1(2)*DJ1(I)+TVW1(3)*DK1(I)
75 DI2(1)=DJ2(2)*DK2(3)-DJ2(3)*DK2(2)
76 DI2(2)=DJ2(3)*DK2(1)-DJ2(1)*DK2(3)
77 DI2(3)=DJ2(1)*DK2(2)-DJ2(2)*DK2(1)
79 TVW2(1)=TN(1)*DI2(1)+TN(2)*DI2(2)+TN(3)*DI2(3)
80 TVW2(2)=TN(1)*DJ2(1)+TN(2)*DJ2(2)+TN(3)*DJ2(3)
81 TVW2(3)=TN(1)*DK2(1)+TN(2)*DK2(2)+TN(3)*DK2(3)
83 IF(TVW2(1).EQ.0.) GO TO 901
86 IF(TVW2(1).LT.0.) SP2=-1.
91 COSL=SQRT(ABS(1.-TN(3)**2))
92 IF(COSL.EQ.0.) GO TO 902
102 UJ1=UN(1)*DJ1(1)+UN(2)*DJ1(2)+UN(3)*DJ1(3)
103 UK1=UN(1)*DK1(1)+UN(2)*DK1(2)+UN(3)*DK1(3)
104 VJ1=VN(1)*DJ1(1)+VN(2)*DJ1(2)+VN(3)*DJ1(3)
105 VK1=VN(1)*DK1(1)+VN(2)*DK1(2)+VN(3)*DK1(3)
107 UJ2=UN(1)*DJ2(1)+UN(2)*DJ2(2)+UN(3)*DJ2(3)
108 UK2=UN(1)*DK2(1)+UN(2)*DK2(2)+UN(3)*DK2(3)
109 VJ2=VN(1)*DJ2(1)+VN(2)*DJ2(2)+VN(3)*DJ2(3)
110 VK2=VN(1)*DK2(1)+VN(2)*DK2(2)+VN(3)*DK2(3)
123 HA=SQRT(H(1)**2+H(2)**2+H(3)**2)
125 IF(HAM.EQ.0.) GO TO 6
130 SJ1I2=DJ1(1)*DI2(1)+DJ1(2)*DI2(2)+DJ1(3)*DI2(3)
131 SK1I2=DK1(1)*DI2(1)+DK1(2)*DI2(2)+DK1(3)*DI2(3)
132 SK2U=DK2(1)*UN(1)+DK2(2)*UN(2)+DK2(3)*UN(3)
133 SK2V=DK2(1)*VN(1)+DK2(2)*VN(2)+DK2(3)*VN(3)
134 SJ2U=DJ2(1)*UN(1)+DJ2(2)*UN(2)+DJ2(3)*UN(3)
135 SJ2V=DJ2(1)*VN(1)+DJ2(2)*VN(2)+DJ2(3)*VN(3)
137 SINZ=-(H(1)*UN(1)+H(2)*UN(2)+H(3)*UN(3))*HM
138 COSZ= (H(1)*VN(1)+H(2)*VN(2)+H(3)*VN(3))*HM
139 A(2,4)=-TT*SJ1I2*(SK2U*SINZ-SK2V*COSZ)
140 A(2,5)=-TT*SK1I2*(SK2U*SINZ-SK2V*COSZ)
141 A(3,4)= TT*SJ1I2*(SJ2U*SINZ-SJ2V*COSZ)
142 A(3,5)= TT*SK1I2*(SJ2U*SINZ-SJ2V*COSZ)
145 A(4,4)=TR*(UJ1*VK2-VJ1*UK2)
146 A(4,5)=TR*(UK1*VK2-VK1*UK2)
147 A(5,4)=TR*(VJ1*UJ2-UJ1*VJ2)
148 A(5,5)=TR*(VK1*UJ2-UK1*VJ2)