Last change
on this file since 4075 was 2403, checked in by cmv, 22 years ago |
Creation du module de code source de MINUIT (CERNLIB) extrait par CMV
cmv 11/06/2003
|
File size:
1.6 KB
|
Line | |
---|
1 | *
|
---|
2 | * $Id: mnpfit.F,v 1.1.1.1 2003-06-11 14:18:28 cmv Exp $
|
---|
3 | *
|
---|
4 | * $Log: not supported by cvs2svn $
|
---|
5 | * Revision 1.1.1.1 1996/03/07 14:31:31 mclareni
|
---|
6 | * Minuit
|
---|
7 | *
|
---|
8 | *
|
---|
9 | #include "minuit/pilot.h"
|
---|
10 | SUBROUTINE MNPFIT(PARX2P,PARY2P,NPAR2P,COEF2P,SDEV2P)
|
---|
11 | #include "minuit/d506dp.inc"
|
---|
12 | C
|
---|
13 | C to fit a parabola to npar2p points
|
---|
14 | C
|
---|
15 | C npar2p no. of points
|
---|
16 | C parx2p(i) x value of point i
|
---|
17 | C pary2p(i) y value of point i
|
---|
18 | C
|
---|
19 | C coef2p(1...3) coefficients of the fitted parabola
|
---|
20 | C y=coef2p(1) + coef2p(2)*x + coef2p(3)*x**2
|
---|
21 | C sdev2p= variance
|
---|
22 | C method : chi**2 = min equation solved explicitly
|
---|
23 | DIMENSION PARX2P(NPAR2P),PARY2P(NPAR2P),COEF2P(NPAR2P)
|
---|
24 | DIMENSION CZ(3)
|
---|
25 | C
|
---|
26 | DO 3 I=1,3
|
---|
27 | 3 CZ(I)=0.
|
---|
28 | SDEV2P=0.
|
---|
29 | IF(NPAR2P.LT.3) GO TO 10
|
---|
30 | F=NPAR2P
|
---|
31 | C--- center x values for reasons of machine precision
|
---|
32 | XM=0.
|
---|
33 | DO 2 I=1,NPAR2P
|
---|
34 | 2 XM=XM+PARX2P(I)
|
---|
35 | XM=XM/F
|
---|
36 | X2=0.
|
---|
37 | X3=0.
|
---|
38 | X4=0.
|
---|
39 | Y=0.
|
---|
40 | Y2=0.
|
---|
41 | XY=0.
|
---|
42 | X2Y=0.
|
---|
43 | DO 1 I=1,NPAR2P
|
---|
44 | S=PARX2P(I)-XM
|
---|
45 | T=PARY2P(I)
|
---|
46 | S2=S*S
|
---|
47 | X2=X2+S2
|
---|
48 | X3=X3+S*S2
|
---|
49 | X4=X4+S2*S2
|
---|
50 | Y=Y+T
|
---|
51 | Y2=Y2+T*T
|
---|
52 | XY=XY+S*T
|
---|
53 | X2Y=X2Y+S2*T
|
---|
54 | 1 CONTINUE
|
---|
55 | A=(F*X4-X2**2)*X2-F*X3**2
|
---|
56 | IF(A.EQ.0.) GOTO 10
|
---|
57 | CZ(3)=(X2*(F*X2Y-X2*Y)-F*X3*XY)/A
|
---|
58 | CZ(2)=(XY-X3*CZ(3))/X2
|
---|
59 | CZ(1)=(Y-X2*CZ(3))/F
|
---|
60 | IF(NPAR2P.EQ.3) GOTO 6
|
---|
61 | SDEV2P=Y2-(CZ(1)*Y+CZ(2)*XY+CZ(3)*X2Y)
|
---|
62 | IF(SDEV2P.LT.0.) SDEV2P=0.
|
---|
63 | SDEV2P=SDEV2P/(F-3.)
|
---|
64 | 6 CZ(1)=CZ(1)+XM*(XM*CZ(3)-CZ(2))
|
---|
65 | CZ(2)=CZ(2)-2.*XM*CZ(3)
|
---|
66 | 10 CONTINUE
|
---|
67 | DO 11 I=1,3
|
---|
68 | 11 COEF2P(I)=CZ(I)
|
---|
69 | RETURN
|
---|
70 | END
|
---|
Note:
See
TracBrowser
for help on using the repository browser.