| 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) | 
|---|
| 13 | CC        Calculates the external error matrix from the internal | 
|---|
| 14 | CC        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 | 
|---|
| 20 | C                    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 | 
|---|
| 27 | C                 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.' | 
|---|
| 32 | C                 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 | 
|---|
| 43 | C                    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 | 
|---|