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