]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/erpremc/trsdsc.F
Modified for new AliITSgeom code.
[u/mrichter/AliRoot.git] / GEANT321 / erpremc / trsdsc.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 TRSDSC(PD,RD,PC,RC,H,CH,IERR,SPU,DJ,DK)
14C
15C *** TRANSFORMS ERROR MATRIX
16C FROM VARIABLES (1/P,V',W',V,W)
17C TO SC VARIABLES (1/P,LAMBDA,PHI,YT,ZT)
18C
19C Authors: A. Haas and W. Wittek
20C
21C
22C *** PD(3) 1/P,V',W' INPUT
23C PC(3) 1/P,LAMBDA,PHI OUTPUT
24C H(3) MAGNETIC FIELD INPUT
25C RD(15) ERROR MATRIX IN 1/P,V',W',V,W 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,V),(LAMBDA,W),(PHI,V),(PHI,W)
30C THESE CORRELATION TERMS APPEAR BECAUSE RC IS ASSUMED
31C TO BE THE ERROR MATRIX FOR FIXED S (PATH LENGTH)
32C AND RD FOR FIXED U
33C DJ(3) UNIT VECTOR IN V-DIRECTION
34C DK(3) UNIT VECTOR IN W-DIRECTION OF DETECTOR SYSTEM
35C
36C IERR NOT USED
37C SPU SIGN OF U-COMPONENT OF PARTICLE MOMENTUM INPUT
38C
39#if !defined(CERNLIB_SINGLE)
40 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
41 REAL PD,PC,H,RC,RD,CH,DJ,DK,SPU
42#endif
43#include "geant321/trcom3.inc"
44 DIMENSION PD(3),PC(3),H(3),RC(15),RD(15),DJ(3),DK(3)
45 DIMENSION UN(3),VN(3),DI(3),TVW(3)
46C
47#if defined(CERNLIB_SINGLE)
48 DATA CFACT8 / 2.997925 E-4 /
49#endif
50#if !defined(CERNLIB_SINGLE)
51 DATA CFACT8 / 2.997925 D-4 /
52#endif
53C
54 IERR=0
55 PM=PD(1)
56 TVW(1)=1./SQRT(1.+PD(2)**2+PD(3)**2)
57 IF(SPU.LT.0.) TVW(1)=-TVW(1)
58 TVW(2)=PD(2)*TVW(1)
59 TVW(3)=PD(3)*TVW(1)
60C
61 DI(1)=DJ(2)*DK(3)-DJ(3)*DK(2)
62 DI(2)=DJ(3)*DK(1)-DJ(1)*DK(3)
63 DI(3)=DJ(1)*DK(2)-DJ(2)*DK(1)
64C
65 DO 5 I=1,3
66 TN(I)=TVW(1)*DI(I)+TVW(2)*DJ(I)+TVW(3)*DK(I)
67 5 CONTINUE
68C
69 PC(1)=PD(1)
70 PC(2)=ASIN(TN(3))
71 IF (ABS (TN(1)) .LT. 1.E-30) TN(1) = 1.E-30
72 PC(3) = ATAN2 (TN(2),TN(1))
73C
74 COSL=SQRT(ABS(1.-TN(3)**2))
75 IF (COSL .LT. 1.E-30) COSL = 1.E-30
76 COSL1=1./COSL
77 UN(1)=-TN(2)*COSL1
78 UN(2)=TN(1)*COSL1
79 UN(3)=0.
80C
81 VN(1)=-TN(3)*UN(2)
82 VN(2)=TN(3)*UN(1)
83 VN(3)=COSL
84
85C
86 UJ=UN(1)*DJ(1)+UN(2)*DJ(2)+UN(3)*DJ(3)
87 UK=UN(1)*DK(1)+UN(2)*DK(2)+UN(3)*DK(3)
88 VJ=VN(1)*DJ(1)+VN(2)*DJ(2)+VN(3)*DJ(3)
89 VK=VN(1)*DK(1)+VN(2)*DK(2)+VN(3)*DK(3)
90C
91 J=0
92 DO 10 I=1,5
93 DO 4 K=I,5
94 J=J+1
95 A(I,K)=0.
96 A(K,I)=0.
97 S(J)=RD(J)
98 4 CONTINUE
99 10 CONTINUE
100C
101 IF(CH.EQ.0.) GO TO 6
102 HA=SQRT(H(1)**2+H(2)**2+H(3)**2)
103 HAM=HA*PM
104 IF(HAM.EQ.0.) GO TO 6
105 HM=CH/HA
106C
107 Q=-HAM*CFACT8
108C
109 SINZ=-(H(1)*UN(1)+H(2)*UN(2)+H(3)*UN(3))*HM
110 COSZ= (H(1)*VN(1)+H(2)*VN(2)+H(3)*VN(3))*HM
111 A(2,4)=-Q*TVW(2)*SINZ
112 A(2,5)=-Q*TVW(3)*SINZ
113 A(3,4)=-Q*TVW(2)*COSZ*COSL1
114 A(3,5)=-Q*TVW(3)*COSZ*COSL1
115C
116 6 A(1,1)=1.
117 A(2,2)=TVW(1)*VJ
118 A(2,3)=TVW(1)*VK
119 A(3,2)=TVW(1)*UJ*COSL1
120 A(3,3)=TVW(1)*UK*COSL1
121 A(4,4)=UJ
122 A(4,5)=UK
123 A(5,4)=VJ
124 A(5,5)=VK
125C
126 CALL SSMT5T(A,S,S)
127C
128 J=0
129 DO 25 I=1,5
130 DO 20 K=I,5
131 J=J+1
132 RC(J)=S(J)
133 20 CONTINUE
134 25 CONTINUE
135C
136 RETURN
137C
138C *** ERROR EXITS
139C
140 END
141*