| Last change
 on this file since 3632 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 | 
      
      
| Rev | Line |  | 
|---|
| [2403] | 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.