source: Sophya/trunk/SophyaExt/CodeMinuit/code/mnsave.F@ 3772

Last change on this file since 3772 was 2403, checked in by cmv, 22 years ago

Creation du module de code source de MINUIT (CERNLIB) extrait par CMV

cmv 11/06/2003

File size: 3.2 KB
Line 
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"
12CC Writes current parameter values and step sizes onto file ISYSSA
13CC in format which can be reread by Minuit for restarting.
14CC The covariance matrix is also output if it exists.
15CC
16#include "minuit/d506cm.inc"
17 LOGICAL LOPEN,LNAME
18 CHARACTER CGNAME*64, CFNAME*64, CANSWR*1
19C
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
26C 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
38C 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
45C and rewound if requested
46 WRITE (ISYSSA,'(10HSET TITLE )',ERR=700)
47 WRITE (ISYSSA,'(A)') CTITL
48 WRITE (ISYSSA,'(10HPARAMETERS)')
49 NLINES = 3
50C 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
56C parameter without limits
57 WRITE (ISYSSA,1001) I,CPNAM(I),U(I),WERR(IINT)
58 GO TO 200
59C 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
66C 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
81C 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.'
89C
90 900 RETURN
91 END
Note: See TracBrowser for help on using the repository browser.