1
C @(#)tdfreq.for 19.1 (ESO-DMD) 02/25/03 14:11:17
2
C===========================================================================
3
C Copyright (C) 1995 European Southern Observatory (ESO)
5
C This program is free software; you can redistribute it and/or
6
C modify it under the terms of the GNU General Public License as
7
C published by the Free Software Foundation; either version 2 of
8
C the License, or (at your option) any later version.
10
C This program is distributed in the hope that it will be useful,
11
C but WITHOUT ANY WARRANTY; without even the implied warranty of
12
C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
C GNU General Public License for more details.
15
C You should have received a copy of the GNU General Public
16
C License along with this program; if not, write to the Free
17
C Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
20
C Correspondence concerning ESO-MIDAS should be addressed as follows:
21
C Internet e-mail: midas@eso.org
22
C Postal address: European Southern Observatory
23
C Data Management Division
24
C Karl-Schwarzschild-Strasse 2
25
C D 85748 Garching bei Muenchen
27
C===========================================================================
29
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
30
C.COPYRIGHT: Copyright (c) 1987 European Southern Observatory,
33
C.VERSION: 1.1 ESO-FORTRAN Conversion, AA 14:13 - 19 NOV 1987
35
C.LANGUAGE: F77+ESOext
48
C COMP/HIST OUTPUT = TABLE COLUMN-REF [STEP [MIN-VAL [MAX-VAL]]]
49
C WHERE 'OUTPUT' CAN BE EITHER 'frame' OR 'name/TABLE'
53
C USE TABLE INTERFACE ROUTINES
55
C-----------------------------------------------------------
58
SUBROUTINE RFREQU(NROW,X,M,NPIX,F,START,STEP,RMIN,RMAX)
60
C COMPUTE THE FREQUENCY
61
C SINGLE PRECISION VERSION
65
REAL X(NROW),M(NROW),F(NPIX)
66
REAL START, STEP, RMIN, RMAX
72
DOUBLE PRECISION TDNULL, TDTRUE, TDFALS
74
C ... GET MACHINE CONSTANTS
76
CALL TBMNUL(TINULL, TRNULL, TDNULL)
77
CALL TBMCON(TBLSEL, TDTRUE, TDFALS)
86
IF (M(I).EQ.TBLSEL .AND. X(I).NE.TRNULL) THEN
87
J = (X(I)-START)/STEP + 1
88
IF (J.GE.1 .AND. J.LE.NPIX) THEN
90
RMAX = AMAX1(RMAX,F(J))
97
SUBROUTINE DFREQU(NROW,X,M,NPIX,F,START,STEP,RMIN,RMAX)
99
C COMPUTE THE FREQUENCY
100
C DOUBLE PRECISION VERSION
105
DOUBLE PRECISION X(NROW)
106
REAL START, STEP, RMIN, RMAX
112
DOUBLE PRECISION TDNULL, TDTRUE, TDFALS
114
C ... GET MACHINE CONSTANTS
116
CALL TBMNUL(TINULL, TRNULL, TDNULL)
117
CALL TBMCON(TBLSEL, TDTRUE, TDFALS)
126
IF (M(I).EQ.TBLSEL .AND. X(I).NE.TDNULL) THEN
127
J = (X(I)-START)/STEP + 1
128
IF (J.GE.1 .AND. J.LE.NPIX) THEN
130
RMAX = AMAX1(RMAX,F(J))
137
SUBROUTINE TDHSTM(TID,ICOL,NROW,NPIX,F,START,STEP,RMIN,RMAX)
139
C COMPUTE HISTOGRAM FOR A TABLE COLUMN
142
INTEGER TID, ICOL, NROW, NPIX
144
REAL START, STEP, RMIN, RMAX, XX
155
CALL TBSGET(TID, I, ISEL, STATUS)
157
CALL TBERDR(TID, I, ICOL, XX, NULL, STATUS)
159
J = (XX-START)/STEP + 1
160
IF (J.GE.1 .AND. J.LE.NPIX) THEN
162
RMAX = AMAX1(RMAX,F(J))
172
.TDIHST(ARRAY,NAXIS,NPIX,SUBLO,SUBHI,CUTS,SLTSIZ,NSLOT,SLOT,
177
INTEGER NAXIS,NPIX(*),SUBLO(*),SUBHI(*),NSLOT
178
INTEGER LOWX,LOWY,LOWZ,HIX,HIY,HIZ
179
INTEGER N,OFF,YOFF,ZOFF,NX,NY,NZ
182
REAL ARRAY(*),SLOT(*)
183
REAL SLTSIZ,CUTS(2),F,R, RMIN, RMAX
214
ZOFF = (LOWZ-1) * NPXY
215
YOFF = (LOWY-1) * NPX
217
C test, if we have excess bins
218
IF (CUTS(2).LE.CUTS(1)) GOTO 1000
220
C main loop over all pixels in given area with excess bins
228
IF (ARRAY(N).GT.CUTS(2)) THEN
229
X = NSLOT !high excess bin
231
R = ARRAY(N) - CUTS(1)
233
X = 1 !low excess bin
235
X = INT(F*R) + 2 !valid bin
238
SLOT(X) = SLOT(X) + 1
239
RMAX = AMAX1(RMAX, SLOT(X))
251
C main loop over all pixels in given area without excess bins
252
1000 DO 1800, NZ=LOWZ,HIZ
259
X = INT(F*(ARRAY(N)-CUTS(1))) + 1
260
SLOT(X) = SLOT(X) + 1
261
RMAX = AMAX1(RMAX, SLOT(X))