ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitCommon/Ctvmft/src/mydeqn.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     * Revision 1.1 2004/10/08 01:32:56 paus
6     * Include fast version of vertex fit.
7     *
8     * Revision 1.1 2004/03/09 03:16:45 paus
9     * *** empty log message ***
10     *
11     * Revision 1.1 2001/04/26 23:00:22 murat
12     * - port CTVMFT (starting from Craig's interface)
13     * - add first definition of e+e- conversion
14    
15     SUBROUTINE MYDEQN(N,A,IDIM,R,IFAIL,K,B)
16     REAL R(N),T1,T2,T3
17     DOUBLE PRECISION A(IDIM,N),B(IDIM,K),DET,S,TEMP,
18     $ B1,Y1,Y2,L11,L21,L22,L31,L32,L33,U12,U13,U23
19     c
20     integer n, idim, ifail, k, m1, m2, m3, i, j, jfail, kprnt
21     c
22     CHARACTER*6 NAME
23     DATA NAME/'DEQN'/,KPRNT/1/
24     C
25     C ******************************************************************
26     C
27     C REPLACES B BY THE SOLUTION X OF A*X=B, AFTER WHICH A IS UNDEFINED.
28     C
29     C (PARAMETERS AS FOR DEQINV.)
30     C
31     C CALLS ... DFACT, DFEQN
32     C
33     C ******************************************************************
34     C
35     C TEST FOR PARAMETER ERRORS.
36     C
37     IF((N.LT.1).OR.(N.GT.IDIM).OR.(K.LT.1)) GO TO 11
38     C
39     C TEST FOR N.LE.3.
40     C
41     IF(N.GT.3) GO TO 10
42     IFAIL=0
43     IF(N.LT.3) GO TO 6
44     C
45     C N=3 CASE.
46     C
47     C FACTORIZE MATRIX A=L*U.
48     C (FIRST PIVOT SEARCH)
49     T1=ABS(SNGL(A(1,1)))
50     T2=ABS(SNGL(A(2,1)))
51     T3=ABS(SNGL(A(3,1)))
52     IF(T1.GE.T2) GO TO 1
53     IF(T3.GE.T2) GO TO 2
54     C (PIVOT IS A21)
55     M1=2
56     M2=1
57     M3=3
58     GO TO 3
59     1 IF(T3.GE.T1) GO TO 2
60     C (PIVOT IS A11)
61     M1=1
62     M2=2
63     M3=3
64     GO TO 3
65     C (PIVOT IS A31)
66     2 M1=3
67     M2=2
68     M3=1
69     3 TEMP=A(M1,1)
70     IF(TEMP.EQ.0D0) GO TO 10
71     L11=1D0/TEMP
72     U12=L11*A(M1,2)
73     U13=L11*A(M1,3)
74     L22=A(M2,2)-A(M2,1)*U12
75     L32=A(M3,2)-A(M3,1)*U12
76     C (SECOND PIVOT SEARCH)
77     IF( ABS(SNGL(L22)) .GE. ABS(SNGL(L32)) ) GO TO 4
78     I=M2
79     M2=M3
80     M3=I
81     TEMP=L22
82     L22=L32
83     L32=TEMP
84     4 L21=A(M2,1)
85     L31=A(M3,1)
86     IF(L22.EQ.0D0) GO TO 10
87     L22=1D0/L22
88     U23=L22*(A(M2,3)-L21*U13)
89     TEMP=A(M3,3)-L31*U13-L32*U23
90     IF(TEMP.EQ.0D0) GO TO 10
91     L33=1D0/TEMP
92     C
93     C SOLVE L*Y=B AND U*X=Y.
94     DO 5 J=1,K
95     Y1=L11*B(M1,J)
96     Y2=L22*(B(M2,J)-L21*Y1)
97     B(3,J)=L33*(B(M3,J)-L31*Y1-L32*Y2)
98     B(2,J)=Y2-U23*B(3,J)
99     B(1,J)=Y1-U12*B(2,J)-U13*B(3,J)
100     5 CONTINUE
101     RETURN
102     C
103     6 IF(N.LT.2) GO TO 8
104     C
105     C N=2 CASE BY CRAMERS RULE.
106     C
107     DET=A(1,1)*A(2,2)-A(1,2)*A(2,1)
108     IF(DET.EQ.0D0) GO TO 12
109     S=1D0/DET
110     DO 7 J=1,K
111     B1=B(1,J)
112     B(1,J)=S*(A(2,2)*B1-A(1,2)*B(2,J))
113     B(2,J)=S*(-A(2,1)*B1+A(1,1)*B(2,J))
114     7 CONTINUE
115     RETURN
116     C
117     C N=1 CASE.
118     C
119     8 IF(A(1,1).EQ.0D0) GO TO 12
120     S=1D0/A(1,1)
121     DO 9 J=1,K
122     B(1,J)=S*B(1,J)
123     9 CONTINUE
124     RETURN
125     C
126     C N.GT.3 CASES. FACTORIZE MATRIX AND SOLVE SYSTEM.
127     C
128     10 CALL MYDFACT(N,A,IDIM,R,IFAIL,DET,JFAIL)
129     IF(IFAIL.NE.0) RETURN
130     CALL MYDFEQN(N,A,IDIM,R,K,B)
131     RETURN
132     C
133     C ERROR EXITS.
134     C
135     11 IFAIL=+1
136     c$$$ CALL F010PR(NAME,N,IDIM,K,KPRNT)
137     RETURN
138     C
139     12 IFAIL=-1
140     RETURN
141     C
142     END