| 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
 | 
|---|