1 | *
|
---|
2 | * $Id: mnmnos.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:30 mclareni
|
---|
6 | * Minuit
|
---|
7 | *
|
---|
8 | *
|
---|
9 | #include "minuit/pilot.h"
|
---|
10 | SUBROUTINE MNMNOS(FCN,FUTIL)
|
---|
11 | #include "minuit/d506dp.inc"
|
---|
12 | CC Performs a MINOS error analysis on those parameters for
|
---|
13 | CC which it is requested on the MINOS command by calling
|
---|
14 | CC MNMNOT for each parameter requested.
|
---|
15 | #include "minuit/d506cm.inc"
|
---|
16 | EXTERNAL FCN,FUTIL
|
---|
17 | IF (NPAR .LE. 0) GO TO 700
|
---|
18 | NGOOD = 0
|
---|
19 | NBAD = 0
|
---|
20 | NFCNMI = NFCN
|
---|
21 | C . loop over parameters requested
|
---|
22 | DO 570 KNT= 1, NPAR
|
---|
23 | IF (INT(WORD7(2)) .EQ. 0) THEN
|
---|
24 | ILAX = NEXOFI(KNT)
|
---|
25 | ELSE
|
---|
26 | IF (KNT .GE. 7) GO TO 580
|
---|
27 | ILAX = INT(WORD7(KNT+1))
|
---|
28 | IF (ILAX .EQ. 0) GO TO 580
|
---|
29 | IF (ILAX .GT. 0 .AND. ILAX .LE. NU) THEN
|
---|
30 | IF (NIOFEX(ILAX) .GT. 0) GO TO 565
|
---|
31 | ENDIF
|
---|
32 | WRITE (ISYSWR,564) ILAX
|
---|
33 | 564 FORMAT (' PARAMETER NUMBER ',I5,' NOT VARIABLE. IGNORED.')
|
---|
34 | GO TO 570
|
---|
35 | ENDIF
|
---|
36 | 565 CONTINUE
|
---|
37 | C calculate one pair of M E's
|
---|
38 | ILAX2 = 0
|
---|
39 | CALL MNMNOT(FCN,ILAX,ILAX2,VAL2PL,VAL2MI,FUTIL)
|
---|
40 | IF (LNEWMN) GO TO 650
|
---|
41 | C update NGOOD and NBAD
|
---|
42 | IIN = NIOFEX(ILAX)
|
---|
43 | IF (ERP(IIN) .GT. ZERO) THEN
|
---|
44 | NGOOD=NGOOD+1
|
---|
45 | ELSE
|
---|
46 | NBAD=NBAD+1
|
---|
47 | ENDIF
|
---|
48 | IF (ERN(IIN) .LT. ZERO) THEN
|
---|
49 | NGOOD=NGOOD+1
|
---|
50 | ELSE
|
---|
51 | NBAD=NBAD+1
|
---|
52 | ENDIF
|
---|
53 | 570 CONTINUE
|
---|
54 | C end of loop . . . . . . .
|
---|
55 | 580 CONTINUE
|
---|
56 | C . . . . printout final values .
|
---|
57 | CFROM = 'MINOS '
|
---|
58 | NFCNFR = NFCNMI
|
---|
59 | CSTATU= 'UNCHANGED '
|
---|
60 | IF (NGOOD.EQ.0.AND.NBAD.EQ.0) GO TO 700
|
---|
61 | IF (NGOOD.GT.0.AND.NBAD.EQ.0) CSTATU='SUCCESSFUL'
|
---|
62 | IF (NGOOD.EQ.0.AND.NBAD.GT.0) CSTATU='FAILURE '
|
---|
63 | IF (NGOOD.GT.0.AND.NBAD.GT.0) CSTATU='PROBLEMS '
|
---|
64 | IF (ISW(5) .GE. 0) CALL MNPRIN(4,AMIN)
|
---|
65 | IF (ISW(5) .GE. 2) CALL MNMATU(0)
|
---|
66 | GO TO 900
|
---|
67 | C . . . new minimum found . . . .
|
---|
68 | 650 CONTINUE
|
---|
69 | CFROM = 'MINOS '
|
---|
70 | NFCNFR = NFCNMI
|
---|
71 | CSTATU= 'NEW MINIMU'
|
---|
72 | IF (ISW(5) .GE. 0) CALL MNPRIN(4,AMIN)
|
---|
73 | WRITE (ISYSWR,675)
|
---|
74 | 675 FORMAT(/50H NEW MINIMUM FOUND. GO BACK TO MINIMIZATION STEP./1H ,
|
---|
75 | +60(1H=)/60X,1HV/60X,1HV/60X,1HV/57X,7HVVVVVVV/58X,5HVVVVV/59X,
|
---|
76 | +3HVVV/60X,1HV//)
|
---|
77 | GO TO 900
|
---|
78 | 700 WRITE (ISYSWR,'(A)') ' THERE ARE NO MINOS ERRORS TO CALCULATE.'
|
---|
79 | 900 RETURN
|
---|
80 | END
|
---|