ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitCommon/Ctvmft/src/dinv.F
Revision: 1.1
Committed: Wed Sep 17 04:01:49 2008 UTC (16 years, 7 months ago) by loizides
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, V07-05-00, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, ConvRejection-10-06-09, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, Mit_011a, Mit_011, Mit_010a, Mit_010, Mit_009c, Mit_009b, Mit_009a, Mit_009, Mit_008, Mit_008pre2, Mit_008pre1, Mit_006b, Mit_006a, Mit_006, Mit_005, Mit_004, HEAD
Branch point for: Mit_025c_branch
Log Message:
Moved MitVertex contents to MitCommon. MitVertex therefore is obsolute and should not be touched anymore.

File Contents

# User Rev Content
1 loizides 1.1 c $Id:$
2    
3     * Inital version of CMS port of CTVMFT (CDF vertex fitter).
4    
5     SUBROUTINE DINV(N,A,IDIM,R,IFAIL)
6     REAL R(N),T1,T2,T3
7     DOUBLE PRECISION A(IDIM,N),DET,TEMP,S,
8     $ C11,C12,C13,C21,C22,C23,C31,C32,C33
9     CHARACTER*6 NAME
10     DATA NAME/'DINV'/,KPRNT/0/
11     C
12     C ******************************************************************
13     C
14     C REPLACES A BY ITS INVERSE.
15     C
16     C (PARAMETERS AS FOR DEQINV.)
17     C
18     C CALLS ... DFACT, DFINV, F010PR, ABEND.
19     C
20     C ******************************************************************
21     C
22     C TEST FOR PARAMETER ERRORS.
23     C
24     IF((N.LT.1).OR.(N.GT.IDIM)) GO TO 7
25     C
26     C TEST FOR N.LE.3.
27     C
28     IF(N.GT.3) GO TO 6
29     IFAIL=0
30     IF(N.LT.3) GO TO 4
31     C
32     C N=3 CASE.
33     C
34     C COMPUTE COFACTORS.
35     C11=A(2,2)*A(3,3)-A(2,3)*A(3,2)
36     C12=A(2,3)*A(3,1)-A(2,1)*A(3,3)
37     C13=A(2,1)*A(3,2)-A(2,2)*A(3,1)
38     C21=A(3,2)*A(1,3)-A(3,3)*A(1,2)
39     C22=A(3,3)*A(1,1)-A(3,1)*A(1,3)
40     C23=A(3,1)*A(1,2)-A(3,2)*A(1,1)
41     C31=A(1,2)*A(2,3)-A(1,3)*A(2,2)
42     C32=A(1,3)*A(2,1)-A(1,1)*A(2,3)
43     C33=A(1,1)*A(2,2)-A(1,2)*A(2,1)
44     T1=ABS(SNGL(A(1,1)))
45     T2=ABS(SNGL(A(2,1)))
46     T3=ABS(SNGL(A(3,1)))
47     C
48     C (SET TEMP=PIVOT AND DET=PIVOT*DET.)
49     IF(T1.GE.T2) GO TO 1
50     IF(T3.GE.T2) GO TO 2
51     C (PIVOT IS A21)
52     TEMP=A(2,1)
53     DET=C13*C32-C12*C33
54     GO TO 3
55     1 IF(T3.GE.T1) GO TO 2
56     C (PIVOT IS A11)
57     TEMP=A(1,1)
58     DET=C22*C33-C23*C32
59     GO TO 3
60     C (PIVOT IS A31)
61     2 TEMP=A(3,1)
62     DET=C23*C12-C22*C13
63     C
64     C SET ELEMENTS OF INVERSE IN A.
65     3 IF(DET.EQ.0D0) GO TO 8
66     S=TEMP/DET
67     A(1,1)=S*C11
68     A(1,2)=S*C21
69     A(1,3)=S*C31
70     A(2,1)=S*C12
71     A(2,2)=S*C22
72     A(2,3)=S*C32
73     A(3,1)=S*C13
74     A(3,2)=S*C23
75     A(3,3)=S*C33
76     RETURN
77     C
78     4 IF(N.LT.2) GO TO 5
79     C
80     C N=2 CASE BY CRAMERS RULE.
81     C
82     DET=A(1,1)*A(2,2)-A(1,2)*A(2,1)
83     IF(DET.EQ.0D0) GO TO 8
84     S=1D0/DET
85     C11 =S*A(2,2)
86     A(1,2)=-S*A(1,2)
87     A(2,1)=-S*A(2,1)
88     A(2,2)=S*A(1,1)
89     A(1,1)=C11
90     RETURN
91     C
92     C N=1 CASE.
93     C
94     5 IF(A(1,1).EQ.0D0) GO TO 8
95     A(1,1)=1D0/A(1,1)
96     RETURN
97     C
98     C N.GT.3 CASES. FACTORIZE MATRIX AND INVERT.
99     C
100     6 CALL DFACT(N,A,IDIM,R,IFAIL,DET,JFAIL)
101     IF(IFAIL.NE.0) RETURN
102     CALL DFINV(N,A,IDIM,R)
103     RETURN
104     C
105     C ERROR EXITS.
106     C
107     7 IFAIL=+1
108     *** CALL F010PR(NAME,N,IDIM,K,KPRNT)
109     RETURN
110     C
111     8 IFAIL=-1
112     RETURN
113     C
114     END