]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/erpremc/trptsd.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / erpremc / trptsd.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 :
12 SUBROUTINE TRPTSD(PD,RD,PC,RC,H,CH,IERR,SPU,DJ,DK)
13*
14***************************************************************************
15C
16C *** TRANSFORMS ERROR MATRIX
17C FROM VARIABLES (1/Pt,V',W',V,W)
18C FROM VARIABLES (1/P, V',W',V,W)
19C
20C
21#if !defined(CERNLIB_SINGLE)
22 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
23 REAL PD,PC,H,RC,RD,CH,DJ,DK,SPU
24#endif
25#include "geant321/trcom3.inc"
26 DIMENSION PD(3),PC(3),H(3),RC(15),RD(15),DJ(3),DK(3)
27 DIMENSION UN(3),VN(3),DI(3),TVW(3)
28C
29#if defined(CERNLIB_SINGLE)
30 DATA CFACT8 / 2.997925 E-4 /
31#endif
32#if !defined(CERNLIB_SINGLE)
33 DATA CFACT8 / 2.997925 D-4 /
34#endif
35*
36**_____________________________________________________________________
37*
38 IERR=0
39 TVW(1)=1./SQRT(1.+PD(2)**2+PD(3)**2)
40 IF(SPU.LT.0.) TVW(1)=-TVW(1)
41 TVW(2)=PD(2)*TVW(1)
42 TVW(3)=PD(3)*TVW(1)
43C
44 DI(1)=DJ(2)*DK(3)-DJ(3)*DK(2)
45 DI(2)=DJ(3)*DK(1)-DJ(1)*DK(3)
46 DI(3)=DJ(1)*DK(2)-DJ(2)*DK(1)
47C
48 DO 5 I=1,3
49 TN(I)=TVW(1)*DI(I)+TVW(2)*DJ(I)+TVW(3)*DK(I)
50 5 CONTINUE
51C
52 COSL=SQRT(ABS(1.-TN(3)**2))
53 IF (COSL .LT. 1.E-30) COSL = 1.E-30
54 COSL1=1./COSL
55 SINL = TN(3)
56*
57 PC(1)=PD(1)*COSL
58 PC(2)=PD(2)
59 PC(3)=PD(3)
60 PM=PC(1)
61*
62 IF (ABS (TN(1)) .LT. 1.E-30) TN(1) = 1.E-30
63C
64 UN(1)=-TN(2)*COSL1
65 UN(2)=TN(1)*COSL1
66 UN(3)=0.
67C
68 VN(1)=-TN(3)*UN(2)
69 VN(2)=TN(3)*UN(1)
70 VN(3)=COSL
71
72C
73 UJ=UN(1)*DJ(1)+UN(2)*DJ(2)+UN(3)*DJ(3)
74 UK=UN(1)*DK(1)+UN(2)*DK(2)+UN(3)*DK(3)
75 VJ=VN(1)*DJ(1)+VN(2)*DJ(2)+VN(3)*DJ(3)
76 VK=VN(1)*DK(1)+VN(2)*DK(2)+VN(3)*DK(3)
77C
78 J=0
79 DO 10 I=1,5
80 DO 4 K=I,5
81 J=J+1
82 A(I,K)=0.
83 A(K,I)=0.
84 S(J)=RD(J)
85 4 CONTINUE
86 10 CONTINUE
87C
88 IF(CH.EQ.0.) GO TO 6
89 HA=SQRT(H(1)**2+H(2)**2+H(3)**2)
90 HAM=HA*PM
91 IF(HAM.EQ.0.) GO TO 6
92 HM=CH/HA
93C
94 Q=-HAM*CFACT8
95C
96 SINZ=-(H(1)*UN(1)+H(2)*UN(2)+H(3)*UN(3))*HM
97 COSZ= (H(1)*VN(1)+H(2)*VN(2)+H(3)*VN(3))*HM
98 A(1,4)=Q*TVW(2)*SINZ*(SINL*PD(1))
99 A(1,5)=Q*TVW(3)*SINZ*(SINL*PD(1))
100C
1016 continue
102 A(1,1) = COSL
103 A(2,2) = 1.
104 A(3,3) = 1.
105 A(4,4) = 1.
106 A(5,5) = 1.
107*
108 A(1,2)=-TVW(1)*VJ*(SINL*PD(1))
109 A(1,3)=-TVW(1)*VK*(SINL*PD(1))
110C
111 CALL SSMT5T(A,S,S)
112C
113 DO J=1,15
114 RC(J)=S(J)
115 ENDDO
116*
117 END