This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / erpremc / trscsd.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/03/06 15:37:35  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 TRSCSD(PC,RC,PD,RD,H,CH,IERR,SPU,DJ,DK)
14 C
15 C *** TRANSFORMS ERROR MATRIX
16 C     FROM   SC   VARIABLES (1/P,LAMBDA,PHI,YT,ZT)
17 C      TO         VARIABLES (1/P,V',W',V,W)
18 C
19 C     Authors: A. Haas and W. Wittek
20 C
21 C
22 C *** PC(3)     1/P,LAMBDA,PHI                          INPUT
23 C     PD(3)     1/P,V',W'                              OUTPUT
24 C     H(3)      MAGNETIC FIELD                          INPUT
25 C     RC(15)    ERROR MATRIX IN   SC   VARIABLES        INPUT     (TRIANGLE)
26 C     RD(15)    ERROR MATRIX IN 1/P,V',W',V,W          OUTPUT     (TRIANGLE)
27 C     CH        CHARGE OF PARTICLE                      INPUT
28 C               CHARGE AND MAGNETIC FIELD ARE NEEDED
29 C               FOR CORRELATION TERMS (V',YT),(V',ZT),(W',YT),(W',ZT)
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 RD FOR FIXED U
33 C     DJ(3)     UNIT VECTOR IN V-DIRECTION
34 C     DK(3)     UNIT VECTOR IN W-DIRECTION    OF DETECTOR SYSTEM
35 C
36 C     IERR  =   1       PARTICLE MOVES PERPENDICULAR TO U-AXIS
37 C                      ( V',W' ARE NOT DEFINED )
38 C     SPU       SIGN OF U-COMPONENT OF PARTICLE MOMENTUM   OUTPUT
39 C
40 #if !defined(CERNLIB_SINGLE)
41       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42       REAL  PC,PD,H,RC,RD,CH,DJ,DK,SPU
43 #endif
44 #include "geant321/trcom3.inc"
45       DIMENSION PC(3),PD(3),H(3),RC(15),RD(15),DJ(3),DK(3)
46       DIMENSION UN(3),VN(3),DI(3),TVW(3)
47 C
48 #if defined(CERNLIB_SINGLE)
49       DATA CFACT8 / 2.997925 E-4 /
50 #endif
51 #if !defined(CERNLIB_SINGLE)
52       DATA CFACT8 / 2.997925 D-4 /
53 #endif
54 C
55       IERR=0
56       PM=PC(1)
57       COSL=COS(PC(2))
58       SINP=SIN(PC(3))
59       COSP=COS(PC(3))
60 C
61       TN(1)=COSL*COSP
62       TN(2)=COSL*SINP
63       TN(3)=SIN(PC(2))
64 C
65       DI(1)=DJ(2)*DK(3)-DJ(3)*DK(2)
66       DI(2)=DJ(3)*DK(1)-DJ(1)*DK(3)
67       DI(3)=DJ(1)*DK(2)-DJ(2)*DK(1)
68 C
69       TVW(1)=TN(1)*DI(1)+TN(2)*DI(2)+TN(3)*DI(3)
70       SPU=1.
71       IF(TVW(1).LT.0.) SPU=-1.
72       TVW(2)=TN(1)*DJ(1)+TN(2)*DJ(2)+TN(3)*DJ(3)
73       TVW(3)=TN(1)*DK(1)+TN(2)*DK(2)+TN(3)*DK(3)
74       IF(TVW(1).EQ.0.) GO TO 901
75 C
76       T1R=1./TVW(1)
77       PD(1)=PC(1)
78       PD(2)=TVW(2)*T1R
79       PD(3)=TVW(3)*T1R
80 C
81       UN(1)=-SINP
82       UN(2)=COSP
83       UN(3)=0.
84 C
85       VN(1)=-TN(3)*UN(2)
86       VN(2)=TN(3)*UN(1)
87       VN(3)=COSL
88 C
89       UJ=UN(1)*DJ(1)+UN(2)*DJ(2)+UN(3)*DJ(3)
90       UK=UN(1)*DK(1)+UN(2)*DK(2)+UN(3)*DK(3)
91       VJ=VN(1)*DJ(1)+VN(2)*DJ(2)+VN(3)*DJ(3)
92       VK=VN(1)*DK(1)+VN(2)*DK(2)+VN(3)*DK(3)
93 C
94 C
95       J=0
96  
97       DO 10 I=1,5
98          DO 5 K=I,5
99             J=J+1
100             A(I,K)=0.
101             A(K,I)=0.
102             S(J)=RC(J)
103     5    CONTINUE
104    10 CONTINUE
105 C
106       IF(CH.EQ.0.) GO TO 6
107       HA=SQRT(H(1)**2+H(2)**2+H(3)**2)
108       HAM=HA*PM
109       IF(HAM.EQ.0.) GO TO 6
110       HM=CH/HA
111       Q=-HAM*CFACT8
112 C
113 C
114       SINZ=-(H(1)*UN(1)+H(2)*UN(2)+H(3)*UN(3))*HM
115       COSZ= (H(1)*VN(1)+H(2)*VN(2)+H(3)*VN(3))*HM
116       T3R=Q*T1R**3
117       UI=UN(1)*DI(1)+UN(2)*DI(2)+UN(3)*DI(3)
118       VI=VN(1)*DI(1)+VN(2)*DI(2)+VN(3)*DI(3)
119       A(2,4)=-UI*(VK*COSZ-UK*SINZ)*T3R
120       A(2,5)=-VI*(VK*COSZ-UK*SINZ)*T3R
121       A(3,4)= UI*(VJ*COSZ-UJ*SINZ)*T3R
122       A(3,5)= VI*(VJ*COSZ-UJ*SINZ)*T3R
123 C
124     6 T2R=T1R**2
125 C
126       A(1,1)=1.
127       A(2,2)=-UK*T2R
128       A(2,3)=VK*COSL*T2R
129       A(3,2)=UJ*T2R
130       A(3,3)=-VJ*COSL*T2R
131       A(4,4)=VK*T1R
132       A(4,5)=-UK*T1R
133       A(5,4)=-VJ*T1R
134       A(5,5)=UJ*T1R
135 C
136       CALL SSMT5T(A,S,S)
137 C
138       J=0
139       DO 25 I=1,5
140          DO 20 K=I,5
141             J=J+1
142             RD(J)=S(J)
143    20    CONTINUE
144    25 CONTINUE
145 C
146       RETURN
147 C
148 C *** ERROR EXITS
149 C
150   901 IERR=1
151   910 CONTINUE
152 C
153       RETURN
154       END
155 *