[2403] | 1 | *
|
---|
| 2 | * $Id: mnsave.F,v 1.1.1.1 2003-06-11 14:18:29 cmv Exp $
|
---|
| 3 | *
|
---|
| 4 | * $Log: not supported by cvs2svn $
|
---|
| 5 | * Revision 1.1.1.1 1996/03/07 14:31:31 mclareni
|
---|
| 6 | * Minuit
|
---|
| 7 | *
|
---|
| 8 | *
|
---|
| 9 | #include "minuit/pilot.h"
|
---|
| 10 | SUBROUTINE MNSAVE
|
---|
| 11 | #include "minuit/d506dp.inc"
|
---|
| 12 | CC Writes current parameter values and step sizes onto file ISYSSA
|
---|
| 13 | CC in format which can be reread by Minuit for restarting.
|
---|
| 14 | CC The covariance matrix is also output if it exists.
|
---|
| 15 | CC
|
---|
| 16 | #include "minuit/d506cm.inc"
|
---|
| 17 | LOGICAL LOPEN,LNAME
|
---|
| 18 | CHARACTER CGNAME*64, CFNAME*64, CANSWR*1
|
---|
| 19 | C
|
---|
| 20 | INQUIRE(UNIT=ISYSSA,OPENED=LOPEN,NAMED=LNAME,NAME=CGNAME)
|
---|
| 21 | IF (LOPEN) THEN
|
---|
| 22 | IF (.NOT.LNAME) CGNAME='UNNAMED FILE'
|
---|
| 23 | WRITE (ISYSWR,32) ISYSSA,CGNAME
|
---|
| 24 | 32 FORMAT (' CURRENT VALUES WILL BE SAVED ON UNIT',I3,': ',A/)
|
---|
| 25 | ELSE
|
---|
| 26 | C new file, open it
|
---|
| 27 | WRITE (ISYSWR,35) ISYSSA
|
---|
| 28 | 35 FORMAT (' UNIT',I3,' IS NOT OPENED.')
|
---|
| 29 | IF (ISW(6) .EQ. 1) THEN
|
---|
| 30 | WRITE (ISYSWR,'(A)') ' PLEASE GIVE FILE NAME:'
|
---|
| 31 | READ (ISYSRD,'(A)') CFNAME
|
---|
| 32 | OPEN (UNIT=ISYSSA,FILE=CFNAME,STATUS='NEW',ERR=600)
|
---|
| 33 | CGNAME = CFNAME
|
---|
| 34 | ELSE
|
---|
| 35 | GO TO 650
|
---|
| 36 | ENDIF
|
---|
| 37 | ENDIF
|
---|
| 38 | C file is now correctly opened
|
---|
| 39 | IF (ISW(6) .EQ. 1) THEN
|
---|
| 40 | WRITE (ISYSWR,37) ISYSSA
|
---|
| 41 | 37 FORMAT (' SHOULD UNIT',I3,' BE REWOUND BEFORE WRITING TO IT?' )
|
---|
| 42 | READ (ISYSRD,'(A)') CANSWR
|
---|
| 43 | IF (CANSWR.EQ.'Y' .OR. CANSWR.EQ.'y') REWIND ISYSSA
|
---|
| 44 | ENDIF
|
---|
| 45 | C and rewound if requested
|
---|
| 46 | WRITE (ISYSSA,'(10HSET TITLE )',ERR=700)
|
---|
| 47 | WRITE (ISYSSA,'(A)') CTITL
|
---|
| 48 | WRITE (ISYSSA,'(10HPARAMETERS)')
|
---|
| 49 | NLINES = 3
|
---|
| 50 | C write out parameter values
|
---|
| 51 | DO 200 I= 1, NU
|
---|
| 52 | IF (NVARL(I) .LT. 0) GO TO 200
|
---|
| 53 | NLINES = NLINES + 1
|
---|
| 54 | IINT = NIOFEX(I)
|
---|
| 55 | IF (NVARL(I) .GT. 1) GO TO 100
|
---|
| 56 | C parameter without limits
|
---|
| 57 | WRITE (ISYSSA,1001) I,CPNAM(I),U(I),WERR(IINT)
|
---|
| 58 | GO TO 200
|
---|
| 59 | C parameter with limits
|
---|
| 60 | 100 CONTINUE
|
---|
| 61 | WRITE (ISYSSA,1001) I,CPNAM(I),U(I),WERR(IINT),ALIM(I),BLIM(I)
|
---|
| 62 | 1001 FORMAT (1X,I5,1H',A10,1H',4E13.5)
|
---|
| 63 | 200 CONTINUE
|
---|
| 64 | WRITE (ISYSSA,'(A)') ' '
|
---|
| 65 | NLINES = NLINES + 1
|
---|
| 66 | C write out covariance matrix, if any
|
---|
| 67 | IF (ISW(2) .LT. 1) GO TO 750
|
---|
| 68 | WRITE (ISYSSA,1003,ERR=700) NPAR
|
---|
| 69 | 1003 FORMAT ('SET COVARIANCE',I6)
|
---|
| 70 | NPAR2 = NPAR*(NPAR+1)/2
|
---|
| 71 | WRITE (ISYSSA,1004) (VHMAT(I),I=1,NPAR2)
|
---|
| 72 | 1004 FORMAT (BN,7E11.4,3X)
|
---|
| 73 | NCOVAR = NPAR2/7 + 1
|
---|
| 74 | IF (MOD(NPAR2,7) .GT. 0) NCOVAR = NCOVAR + 1
|
---|
| 75 | NLINES = NLINES + NCOVAR
|
---|
| 76 | WRITE (ISYSWR, 501) NLINES,ISYSSA,CGNAME(1:45)
|
---|
| 77 | 501 FORMAT (1X,I5,' RECORDS WRITTEN TO UNIT',I4,':',A)
|
---|
| 78 | IF (NCOVAR .GT. 0) WRITE (ISYSWR, 502) NCOVAR
|
---|
| 79 | 502 FORMAT (' INCLUDING',I5,' RECORDS FOR THE COVARIANCE MATRIX.'/)
|
---|
| 80 | GO TO 900
|
---|
| 81 | C some error conditions
|
---|
| 82 | 600 WRITE (ISYSWR,'(A,I4)') ' I/O ERROR: UNABLE TO OPEN UNIT',ISYSSA
|
---|
| 83 | GO TO 900
|
---|
| 84 | 650 WRITE (ISYSWR,'(A,I4,A)') ' UNIT',ISYSSA,' IS NOT OPENED.'
|
---|
| 85 | GO TO 900
|
---|
| 86 | 700 WRITE (ISYSWR,'(A,I4)') ' ERROR: UNABLE TO WRITE TO UNIT',ISYSSA
|
---|
| 87 | GO TO 900
|
---|
| 88 | 750 WRITE (ISYSWR,'(A)') ' THERE IS NO COVARIANCE MATRIX TO SAVE.'
|
---|
| 89 | C
|
---|
| 90 | 900 RETURN
|
---|
| 91 | END
|
---|