source: Sophya/trunk/SophyaExt/CodeMinuit/code/mnemat.F

Last change on this file 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: 1.9 KB
RevLine 
[2403]1*
2* $Id: mnemat.F,v 1.1.1.1 2003-06-11 14:18:27 cmv Exp $
3*
4* $Log: not supported by cvs2svn $
5* Revision 1.1.1.1 1996/03/07 14:31:29 mclareni
6* Minuit
7*
8*
9#include "minuit/pilot.h"
10 SUBROUTINE MNEMAT(EMAT,NDIM)
11#include "minuit/d506dp.inc"
12 DIMENSION EMAT(NDIM,NDIM)
13CC Calculates the external error matrix from the internal
14CC to be called by user, who must dimension EMAT at (NDIM,NDIM)
15#include "minuit/d506cm.inc"
16 IF (ISW(2) .LT. 1) RETURN
17 IF (ISW(5) .GE. 2) WRITE (ISYSWR,'(/A,I4,A,I3,A,G10.3)')
18 + ' EXTERNAL ERROR MATRIX. NDIM=',NDIM,' NPAR=',NPAR,
19 + ' ERR DEF=',UP
20C size of matrix to be printed
21 NPARD = NPAR
22 IF (NDIM .LT. NPAR) THEN
23 NPARD = NDIM
24 IF (ISW(5) .GE. 0) WRITE (ISYSWR,'(A,A)') ' USER-DIMENSIONED ',
25 + ' ARRAY EMAT NOT BIG ENOUGH. REDUCED MATRIX CALCULATED.'
26 ENDIF
27C NPERLN is the number of elements that fit on one line
28 NPERLN = (NPAGWD-5)/10
29 NPERLN = MIN(NPERLN,13)
30 IF (ISW(5).GE. 1 .AND. NPARD.GT.NPERLN) WRITE (ISYSWR,'(A)')
31 + ' ELEMENTS ABOVE DIAGONAL ARE NOT PRINTED.'
32C I counts the rows of the matrix
33 DO 110 I= 1, NPARD
34 CALL MNDXDI(X(I),I,DXDI)
35 KGA = I*(I-1)/2
36 DO 100 J= 1, I
37 CALL MNDXDI(X(J),J,DXDJ)
38 KGB = KGA + J
39 EMAT(I,J) = DXDI * VHMAT(KGB) * DXDJ * UP
40 EMAT(J,I) = EMAT(I,J)
41 100 CONTINUE
42 110 CONTINUE
43C IZ is number of columns to be printed in row I
44 IF (ISW(5) .GE. 2) THEN
45 DO 160 I= 1, NPARD
46 IZ = NPARD
47 IF (NPARD .GE. NPERLN) IZ = I
48 DO 150 K= 1, IZ, NPERLN
49 K2 = K + NPERLN - 1
50 IF (K2 .GT. IZ) K2=IZ
51 WRITE (ISYSWR,'(1X,13E10.3)') (EMAT(I,KK),KK=K,K2)
52 150 CONTINUE
53 160 CONTINUE
54 ENDIF
55 RETURN
56 END
Note: See TracBrowser for help on using the repository browser.