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