| [2403] | 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
 | 
|---|