source: Sophya/trunk/SophyaExt/CodeMinuit/code/mncuve.F@ 3586

Last change on this file since 3586 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: mncuve.F,v 1.1.1.1 2003-06-11 14:18:26 cmv Exp $
3*
4* $Log: not supported by cvs2svn $
5* Revision 1.1.1.1 1996/03/07 14:31:29 mclareni
6* Minuit
7*
8*
9#include "minuit/pilot.h"
10 SUBROUTINE MNCUVE(FCN,FUTIL)
11#include "minuit/d506dp.inc"
12CC Makes sure that the current point is a local
13CC minimum and that the error matrix exists,
14CC or at least something good enough for MINOS and MNCONT
15CC
16#include "minuit/d506cm.inc"
17 EXTERNAL FCN,FUTIL
18 IF (ISW(4) .LT. 1) THEN
19 WRITE (ISYSWR,'(/A,A)')
20 + ' FUNCTION MUST BE MINIMIZED BEFORE CALLING ',CFROM
21 APSI = EPSI
22 CALL MNMIGR(FCN,FUTIL)
23 ENDIF
24 IF (ISW(2) .LT. 3) THEN
25 CALL MNHESS(FCN,FUTIL)
26 IF (ISW(2) .LT. 1) THEN
27 CALL MNWARN('W',CFROM,'NO ERROR MATRIX. WILL IMPROVISE.')
28 DO 555 I=1,NPAR
29 NDEX = I*(I-1)/2
30 DO 554 J=1,I-1
31 NDEX = NDEX + 1
32 554 VHMAT(NDEX) = 0.
33 NDEX = NDEX + 1
34 IF (G2(I) .LE. ZERO) THEN
35 WINT = WERR(I)
36 IEXT = NEXOFI(I)
37 IF (NVARL(IEXT) .GT. 1) THEN
38 CALL MNDXDI(X(I),I,DXDI)
39 IF (ABS(DXDI) .LT. .001) THEN
40 WINT = .01
41 ELSE
42 WINT = WINT/ABS(DXDI)
43 ENDIF
44 ENDIF
45 G2(I) = UP/WINT**2
46 ENDIF
47 VHMAT(NDEX) = 2./G2(I)
48 555 CONTINUE
49 ISW(2) = 1
50 DCOVAR = 1.
51 ELSE
52 CALL MNWERR
53 ENDIF
54 ENDIF
55 RETURN
56 END
Note: See TracBrowser for help on using the repository browser.