casacore
Loading...
Searching...
No Matches
LatticeCleanProgress.h
Go to the documentation of this file.
1//# LatticeCleanProgress.h: Abstract base class to monitor progress in lattice operations
2//# Copyright (C) 1997,1998,1999,2000
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: aips2-request@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25//#
26//# $Id$
27
28#ifndef LATTICES_LATTICECLEANPROGRESS_H
29#define LATTICES_LATTICECLEANPROGRESS_H
30
31//# Includes
32#include <casacore/casa/aips.h>
33#include <casacore/casa/Quanta/Quantum.h>
34#include <casacore/lattices/Lattices/Lattice.h>
35#include <casacore/lattices/Lattices/TempLattice.h>
36#include <casacore/casa/Arrays/IPosition.h>
37#include <casacore/casa/Containers/Block.h>
38#include <casacore/casa/Arrays/Vector.h>
39#include <casacore/casa/Arrays/Matrix.h>
40
41namespace casacore { //# NAMESPACE CASACORE - BEGIN
42
43//# Forward Declarations
44class PGPlotter;
45
46// <summary>
47// Abstract base class to monitor progress in lattice operations
48// </summary>
49
50// <use visibility=export>
51
52// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
53// </reviewed>
54
55// <synopsis>
56// This is an abstract base class for classes to monitor the
57// progress of an operation on a Lattice. The default implementation
58// offered by this class does nothing.
59// However, a derived class could show the progress using for example
60// a <linkto class=ProgressMeter>ProgressMeter</linkto>. A derived
61// class should override the virtual functions from this class.
62//
63// The user of the LatticeCleanProgress object should first call
64// function <src>init</src> with the total number of steps
65// that are to be done. Thereafter, after each step has been
66// executed, function <src>nstepsDone</src> should be called
67// after each step. Finally, function <src>done</src> should
68// be called.
69// </synopsis>
70
71// <example>
72// <srcblock>
73// </srcblock>
74// </example>
75
76// <motivation>
77// Since operations on Lattices can take a while, it can be useful
78// to show the progress. However, making module Lattices dependent on
79// the class ProgressMeter sounded bad. This abstract class serves
80// as a bridge between the Lattice module and the ProgressMeter class
81// (or any other class showing the progress).
82// </motivation>
83//
84//# <todo asof="1997/08/01">
85//# <li>
86//# </todo>
87
88
90public:
92
94
95
96 // Print and plot the information.
97 // Currently, not all information is utilized.
98 Bool info(const Bool lastcall,
99 const Int iteration,
100 const Int numberIterations,
101 const Vector<Float>& maxima,
102 const Block<IPosition>& posMaximum,
103 const Float strengthOptimum,
104 const Int optimumScale,
105 const IPosition& positionOptimum,
106 const Float& totalFlux,
107 const Vector<Float>& totalFluxScale,
108 const Bool resetBase=False);
109
110protected:
111
112private:
113
114 // initizalize the arrays and such
115 void initialize(const uInt nScales,
116 const Float& maxResidual,
117 const uInt numIterations);
118
119 // As the iterations trickle in, we will from time to time
120 // need to make the Matrices larger. Increase to 2*n+1
122
123 // this will redraw the plot with a new scale;
124 // if plotMatrices = False, just draw the boxes,
125 // else, replot all past data.
126 //
127 void basicSetUp(Bool plotMatrices = False);
128
129 // Note: you MUST call basicSetUp before calling this.
130 void plotOne(const Int iteration,
131 const Vector<Float>& resid, const Vector<Float>& flux);
132
134
147
153
156
158
160
161};
162
163
164
165} //# NAMESPACE CASACORE - END
166
167#endif
simple 1-D array
Definition Block.h:200
void resizeDataStorage()
As the iterations trickle in, we will from time to time need to make the Matrices larger.
Bool info(const Bool lastcall, const Int iteration, const Int numberIterations, const Vector< Float > &maxima, const Block< IPosition > &posMaximum, const Float strengthOptimum, const Int optimumScale, const IPosition &positionOptimum, const Float &totalFlux, const Vector< Float > &totalFluxScale, const Bool resetBase=False)
Print and plot the information.
void plotOne(const Int iteration, const Vector< Float > &resid, const Vector< Float > &flux)
Note: you MUST call basicSetUp before calling this.
LatticeCleanProgress(PGPlotter *pgplotter=0)
void basicSetUp(Bool plotMatrices=False)
this will redraw the plot with a new scale; if plotMatrices = False, just draw the boxes,...
void initialize(const uInt nScales, const Float &maxResidual, const uInt numIterations)
initizalize the arrays and such
this file contains all the compiler specific defines
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:44
unsigned int uInt
Definition aipstype.h:51
float Float
Definition aipstype.h:54
int Int
Definition aipstype.h:50
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:42