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

Last change on this file since 2731 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
Line 
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.