Todo List

Member aboutToClose (CanvasWindow *window)
If only one window remains, informs that window to disable the close button.

Member accumulate (double x, double y, double wt=1.0, double dummy=0.0)
Add weight argument.

Member addColumn (const std::string &label, boost::python::numeric::array array)
Should not have duplicated code from NTuple class.

Member addColumn (const std::string &label, const std::vector< double > &column, const std::vector< intptr_t > &shape)
Should check size of column and shape vector are consistent.

Member addColumn (const std::string &label, boost::python::list seq)
Should not have duplicated code from NTuple class.

Member addDataRep (PlotterBase *plotter, const std::string &name, const DataSource *source, const std::vector< std::string > &bindings) const
If new DataRep is incompatible with exiting Plotter, one could create new plotter type.

Member addPointReps ()=0
Why is this in the ProjectorBase and not DataRep ?

Member adjustValues (AxisModelBase &model, hippodraw::Axes::Type axes, const Range &limit)
This code is duplicated and should move up the hierarchy.

Member allowClose ()
bring the window up front before showing message box. Just doing a setActiveWindow() does work.

Member autoScaleZ ()
Determine why is Z axis so different from X and Y?

Class AxisRep2D

Implement minor ticks.

Class AxisRepBase

There is lots of duplicated code in the derived classes that could be moved to the base.

Class AxisRepColor
Implement minor ticks.

Member AxisWidget (QWidget *parent=0, const char *name=0, Qt::WFlags wflags=0)
Replace obsolete QScrollBae constructor with Qt 4 one.

Member BinnerAxisLinear (const BinnerAxisLinear &binner)
Why is width recalculated instead of being copied.

Member calcAlpha ()
Should probably move this implementation into the FCN.

Member calcBestFit ()
Use if ( x!=x ) to test for nan.

Member calcHigh (int parm, bool dragging=false)
We will have to put a check here to keep it from hitting a length of 0.

Member calcHigh (int parm, bool dragging=false)
Check is in place to keep it from length of 0, but it's fairly hacked (length > 0.0001). This whole topic needs discussion.

Member calcLow (int parm, bool dragging=false)
We will have to put a check here to keep it from hitting a length of 0.

Member calcLow (int parm, bool dragging=false)
Check is in place to keep it from length of 0, but it's fairly hacked (length > 0.0001). This whole topic needs discussion.

Class CanvasView

Should implemented method hasSelectedViews() since in a number of places the implementation calls selectedViews only to ask if vector is empty.

Class CanvasWindow

@@ Be able to ask canvas if it is saved from Python.

Make it a setting if the Inspector window comes up automatically or not.

Respond to Page Up and Page Down keys.

Needs something to display on the canvas for values only seen in the Inspector. One example is the name of a DataSource file file. This is so that the document when printed can be more useful as a stand alone.

Use Qt's network example ftpclient to open files via ftp.

Member CanvasWindow (QWidget *parent=0, const char *name=0, Qt::WFlags fl=QtWType_TopLevel)

This is the only place where know we are using Qt XML support. It would be abstracted to a factory. Should also be in the CanvasView and not this class so it could be used by other windows.

Probably should remove this method or make it private.

Member changedNTuple ()
This implementation is the same as the Hist1DProjector.

Member clone ()
To be implemented.

Member closeFile (const std::string &name)
Why is this commented out?

Member color () const
Remove this member in favor of getColor().

Class ColorSymbolPointRep

Unlike the class it inherits from, this class doesn't currently support the drawing of error bars. Or, maybe a class that can draw error bars should be a derived class of one that only draws symbols.

Member ColumnPointRep ()
Could postpone creation of the ErrorBarRep until flag is set to require one. However, if postponed, got to remember to set the color.

Member contentsMouseMoveEvent (QMouseEvent *, double aspect)

This implementation depends on parent widget being CanvasWindow, thus making a circular dependency. There ought to be a way to fix it. Or at least depend only on QMainWindow.

The implementation uses QtView, thus should be moved to CanvasView.

The implementation uses QtView, thus should be moved to CanvasView.

Member createChildren3D (XmlElement *tag, const DataSource &ntuple)
Why is this called with a DataSource argument.

Member createNTuple () const
Returns something, if we can think what.

Member createTransform (const std::string &name)

Fix it so that more than one white space could be in string.

Check of DISTANCE_DEFECT workaround works or find better way.

Member dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.

Member dataRangeOn (hippodraw::Axes::Type axis) const
Implement special handling if histogram is empty.

Class DataRepException

Only QtDisplay uses this class, maybe it could be eliminated.

Class DataSource

Expand to data types other than double.

Member derivByParm (int i, double x) const

Provide a numeric method for doing this calculation that will be the default. Derived classes should provide more efficient analytic method if available.

Class DisplayController

DisplayController shouldn't need to know about the DataRepFactory. Should probably move methods that use it to DataRepController.

Shouldn't const_cast<BinToColor *> the return value from getValueRep() of the plotter object in the setValueBrkPt member function. A member function returning a non const pointer to a BinToColor object should be implemented in the PlotterBase class and that should be used in the setValueBrkPt member function.

Member doubleToColor (double value, Color &color) const
This is copy of member function of same name in BinToColorSaleMovingBrkPt.

Member drawAllXTicks (const AxisModelBase &axisModelX, const AxisModelBase &axisModelY, const TransformBase &transform, ViewBase &view)
Draw lines connecting ticks top and bottom. Line should under go transform which might be curved, thus should use something like the function projector.

Member drawContourTicks (const TransformBase &, ViewBase &, const std::vector< double > &)
This method should be in AxisRepColor class.

Member drawPoints (const std::vector< double > &x, const std::vector< double > &y, const std::vector< Color > &colors, hippodraw::Symbol::Type type, float sym_size)

This method has a lot of duplicated code from the one with the same name but only one color. One should remove the duplication.

The draw triangle methods have duplicated code which could be removed.

Determine if this member function is no longer needed.

The draw triangle methods have duplicated code which could be removed.

Determine if this member function is no longer needed.

The draw triangle methods have duplicated code which could be removed.

Determine if this member function is no longer needed.

The draw triangle methods have duplicated code which could be removed.

Determine if this member function is no longer needed.

Member drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should transform be const in this method.

Member drawProjectedValues (const DataSource *ntuple, TransformBase *transform, ViewBase *view)
Should the TransformBase * be const?

Member drawShape (QPainter &)
This method could be removed.

Member drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
We may have function like this that takes pointer to member function of QPainter as first argument.

Member drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)

We may have function like this that takes pointer to member function of QPainter as first argument.

Should style and color arguments be used?

Member drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
We may have function like this that takes pointer to member function of QPainter as first argument.

Member ensureOffScrSize (int osw, int osh)
It still does a fair amount of flickering, need to look at this further.

Member errorDisplay (hippodraw::Axes::Type axis) const
Implement TextRep that can display errors.

Member execute ()
Implement accumulations with weight.

Member execute ()
Is there away to avoid implementing this empty method.

Member exportTextTuple (const std::string &suffix)

Report any error conditions.

One error condition is saving on top of existing file.

Class FigureEditor

Need ability to group and un-group items.

add page by adding another standard size page (either A4 or US Letter depending on preferences set somewhere.

Member filePrint ()

Add the `.ps' subscript to the file name if missing.

Add the `.ps' subscript to the file name if missing.

Member fillDataSource (DataSource *ntuple) const

The error on the value has needs to be tested.

The scaling needs to be tested.

Member fillNodeList (const std::string &tagName, std::list< XmlElement * > &nodeList) const
This needs to return only immediate children with given name. Doesn't hurt us yet.

Member fillShape (std::vector< intptr_t > &shape, unsigned int index) const
Need to make sure that the shape has been set.

Member FLT_EQUAL (double x, double y)
Should have this function in one place instead of duplicating it where needed. Not sure where it should go, however.

Member FunctionProjector (const FunctionProjector &)
To be implemented.

Member genTicks (AxisModelBase &axis, hippodraw::Axes::Type axistype)

Handle too many ticks better, rather than doing nothing. See more detailed comment in code.

Do not use sprintf, it cause warnings from VS 8.

Member genTicks (AxisModelBase &)
Handle too many ticks better, rather than doing nothing. See more detailed comment in code.

Member genTicks (AxisModelBase &)

This is an ugly way to display scientific notation. Can we improve it?

Use C++ stringstream insted of sprintf().

Member getAverage (hippodraw::Axes::Type axis) const

Remove duplicated code that is also in NTupleProjector.

Fetch the column vector by binding instead of label.

Should be able to reuse global functions instead of implementation here.

Member getAverage (Axes::Type axis) const

this should be computed externally with the iterators

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Resolve if this method should be done exterior to the projector class by a functor using iterators.

Member getBindingProjector (const PlotterBase *) const
Can replace much of this code by calling getUniqueWithNTupleBindings member function.

Member getContour (int i, const TransformBase *transform)
Test contour when low end of range is negative.

Member getLog (const PlotterBase *plotter, Axes::Type axis) const
un-hard code this when we have XYZ transform?

Member getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear(). Gcc 2.95.3 is missing this function, while gcc 3.2.1 has it.

Member getName (const XmlElement &tag) const
Implement M4 macro to detect missing string::clear(). Gcc 2.95.3 is missing this function, while gcc 3.2.1 has it.

Member getNTuple ()

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Should be changed to getDatSource().

Member getOffset () const
Maybe be able to remove this function and other getOffset functions.

Member getPosOn (Axes::Type) const =0
Resolve if this method should be here.

Member getPosOn (hippodraw::Axes::Type axis) const
Seems to be duplicated code here.

Member getPosOn (hippodraw::Axes::Type axis) const

Return positive value from the binner.

Redesign to avoid duplicated code with Hist1DProjector.

Member getProjector (int i) const
Remove this method when no longer used.

Member getRange (Axes::Type axis, bool scaled) const
In the future, keep a list of the axis rather than hardwired them.

Member getRange (bool scaled) const
Really should have separate function, getScaledRange, so at the calling point it would be clear.

Member getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.

Member getRow (unsigned int i) const
Could bypass calling valueAt if performance is shown to be an issue.

Member getRow (unsigned int index) const
Could bypass calling valueAt if performance is shown to be an issue.

Member getTextRepObject (const XmlElement *)
Why is this call with an argument.

Member getZAfterTransform (TransformBase *transform)
This is the only method in all the classes of this directory that needs a heder file from transform directory. Is there a better way?

Member getZLabel () const
Change to fetch labels by AxesType or its replacement.

Member handleFunction (const XmlElement *element, hippodraw::DataRep *rep)
Should this be handled by FunctionProjectorXML?

Member hide (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.

Member initBranches ()
If the name contains '[]' it should be removed. The '[]' in the title is used to get the dimensions of the variable.

Member initPlot (const std::string &filename, double x, double y, double w, double h)
Using std::endl; add '
' and flushes the buffer. We don't need to flush the buffer so often, so maybe just '
' should be used.

Class Inspector

In Stats tabbed panel, should add a feature of a composite text rep that combines the single TextRep objects into a composite.

When the size of the labels of the function parameters changes, the sliders change as well. GUI bug. low priority to fix.

In cuts tabbed panel, the upper box gets updated when cut range changed even when it hasn't changed.

Replace the ComboBox objects in the Cut inspector with lists. Then the user can see in one glance all the cuts on a plot. There usually will not be that many of them.

For check boxes, should use clicked signal instead of toggled so that the check box can be set to a value without emitting a signal.

On the Cuts tabbed pane, does the Replace button make sense. What if selected plot has multiple cuts, which one to replace.

On the Inspector data tabbed panel, should leave the four binding options on all the time and disable the ones that are not used. This way there would be less flicker.

In Inspector stats tabbed panel, add average Z if plot has Z axis.

In transform tabbed panel, use QDial instead of QSlider.

Member isAxisBinned (const std::string &axis) const
This method could have common implementation with DyHist2DProjector if the static projector initialized it binding options even thought they do not bind to NTuple.

Member isInBounds (double x1, double y1) const
Use if ( x!=1 ) to est for nan.

Member isInDepth (double z1) const

The multicative factor the implementation might be considered a kludge. Might there be a better way.

The final solution for the comparison works when the depth is a very small number compared the the values. Is there a better numeric way.

Class ListDialog

Write a FileIconProvider so that QFileDialog can highlight known file types.

Class ListTuple

Could implement addRow()

Member m_first_tick
Maybe it is not needed.

Member m_fitter
Decide if FunctionProjector or the FunctionRep should be the owner of the Fitter.

Member m_num_bins
Do we need this?.

Member m_x_axis
Should be generalized to n-dimensions by having having a vector of AxisModelBase objects.

Member m_x_axis

Generalize the containment of axis model to n-dimension.

Member m_x_label
The axis labels should be a member of the axis model.

Member m_z_label
Remove when getLabel takes axis argument

Member newPlotError (const std::exception &e)
Should something be done with the exception, like deleting it?

Member nextStep (double cur)
: Change this to an array of good ticks rather than hardcoded in here.

Member nextStep (double current, AxisModelBase &axis)
: Change this to an array of good ticks rather than hardcoded in here.

Member notifyObservers () const
remove this method when Observable is exposed to Python.

Member notifyObservers () const
remove this method when Observable is exposed to Python.

Member notifyObservers () const
remove this method when Observable is exposed to Python.

Member notifyObservers () const
remove this method when Observable is exposed to Python.

Class NTupleController

This class should probably inherit from DataSource controller as it delegates some member functions to that class and uses it often. However, DataSourceController wants to be singleton, so can we have derived classes of singleton?

Class Observable

We don't have a copy constructor. Determine if that a problem?

Member ObserverWrap (PyObject *self)
This method and others may not be needed.

Member parameters () const
Enable access to parameters of composite functions via function indexes. Do this for parameters(), setParameters(), and setFixedFlags() methods.

Member placeGraphOnSelected (QCanvasRectangle *item)
the rectangle of the a text display should be no bigger than necessary rather than the size of the rectangle of the selected.

Class PointRepBase

This class is too big for the base class. For example, TextRepBase is implementing functions it doesn't have to. Should have a RepBase class.

Member preferredRange (Axes::Type axis) const
In asking for the preferred Range, should also tell binning projectors to reset the number of bins so that auto ranging will lead to same results as when plot was initially created.

Member prevStep (double current, AxisModelBase &axis)
Change this to an array of good ticks rather than hardcoded in here.

Member prevStep (double cur)
Change this to an array of good ticks rather than hardcoded in here.

Member processHighSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.

Member processLowSliderMoved (int value, Range &currentRange, const Range &fullRange)
int argument is not used, take out of interface.

Class Profile2DProjector

Must of the implementation is the same ash the Hist2DProjector. One should be able to make a BinningProjector class which is the overlap of the current two and differ in only the kind of binner they have.

Class PyFunctionRep

Could make this a derived class of FunctionRep so that methods that do not need wrapping could be called directly.

Class QtDisplay

Too may try/catch blocks. All exception inherit from std::exception, so why not put one static function to take care of the exceptions and qApp lock/unlock.

Member QtViewImp (PlotterBase *plotter)
Lots more methods could be protected.

Member QtXmlElement (const QDomElement &)
Remove this method. It was only temporarily here to aid in the transition from the old scheme.

Member remove (QCanvasItem *item)
This function has a side effect of clearing the selection list, probably should not do that.

Member removeDataRep (DataRep *)
Remove this and the addDataRep member functions from this class.

Member removeDisplay (PlotterBase *plotter)
This method should only be in the CanvasView.

Member resize (int nx, int ny)
It is possible that this method will get called before both the range and the bin width are final and therefore the number of bins could be excessive. Thus it would be better to postpone the resizing until needed.

Member saveAsImage (QtDisplay *display, const std::string &filename)
The exception should be thrown from the CanvasView which knows about required suffixes.

Class SaveAsImageEvent

This class can go away.

Member selectedPlotter ()
This method should go away or return null pointer if multiple plots are selected.

Member setAxisBinding (const std::vector< std::string > &bindings)
Shouldn't call autoScale() here. Setting autoscaled to false should be sufficient, but it doesn't work. Need to solve that problem.

Member setBinContents (const DataSource *ntuple)
The underflow and overflow bins do not get archived, thus don't get restored. Also the moments.

Member setBinContents (const DataSource *ntuple)
Needs implementation when static projector is implemented.

Member setBinContents (const DataSource *ntuple)
Needs implementation when static projectors are implemented.

Member setBinner (PlotterBase *plotter, Axes::Type axis)
Remove this function when GUI has separate controls for displaying Log and binning log.

Member setBinWidth (hippodraw::Axes::Type axis, double width)
Derived classes that re-implement this member function do so with only difference being the assert. Redesigned to avoid duplication of code.

Member setBinWidth (hippodraw::Axes::Type axis, double v)
Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.

Member setBinWidth (hippodraw::Axes::Type axis, int parm, bool dragging)

Change design: this method is identical to one in Hist2DProjector.

Protect against an excessive number of bins, which will undoubtedly lead to an excessive drawing time.

Avoid duplicated code in Hist2DProjector.

Member setConstWid ()
Remove this function in favor of calcWidthParm.

Member setCutRangeFull ()=0
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Member setCutRangeFull ()
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Member setCutRangeFull ()
The shading showing the cut range should go to the end of the last bin and not just to the end of the last data.

Member setErrorDisplay (Axes::Type axis, bool)=0
Remove this function when no longer in use.

Member setErrorDisplay (hippodraw::Axes::Type axis, bool)
Implement TextRep that can display errors.

Member setIntervalEnabled (bool yes=true)
Move this method and others that use PlotterBase to a controller. This logic is independent of the GUI so should not be here.

Member setLog (PlotterBase *plotter, Axes::Type axis, bool flag)

This function should go away in favor of one taking string for axis argument.

Check that display can do it.

Member setOffset (PlotterBase *plotter, const std::string &axis, int parm, bool dragging)

Use Axes::convert.

Remove duplicated code compared to DisplayController::setBinWidth.

Member setOffset (const std::string &axis, int parm, bool dragging)

Change design: this method is identical to one in Hist2DProjector.

use Axes::convert.

Member setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.

Member setRange (hippodraw::Axes::Type, bool)
Should not be changing the AxisModelBase Range.

Member setRange (const Range &, bool hold_width=true)

Had to put std:: in here for Sun's CC, but not in AxisModelxxx. So there must be a better fix.

Member setRange (hippodraw::Axes::Type axis, bool)
Should not be changing the AxisModelBase Range.

Member setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil". Should probably have method in projector that gives the answer if error axis is bound.

Member setRepresentation (RepBase *point_rep)
In this and two other members, the implementation has knowledge of axis binding via string "nil". Should probably have method in projector that gives the answer if error axis is bound.

Member setTicks (AxisModelBase &axis_model, hippodraw::Axes::Type axis)
Are the implementations of the functions called, duplicates of what is in the derived classes of LinearTransform?

Member setValueTransform (BinToColor *)
Should have base class that doesn't know about color and BinToColor class should derive from it.

Member setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.

Member setXErrorOption (bool enable)
Remove this and setYerrorOption() in favor of passing as argument s string with the name of an error option.

Member setYErrorOption (bool enable)
Remove this and setX`errorOption() in favor of passing as argument string with name of axis option.

Member setYErrorOption (bool enable)
Remove duplication of code in this method with setXErrorOption.

Member setYErrorOption (bool enable)
Remove duplication of code in this method with setXErrorOption.

Member smartExpandRootNTuple (const std::string &column) const
Replace use of ostrstream with String::convert

Class St1DHistogram
Decide how this class helps or is the implementation of AIDA Histogram1D.

Member StHist1DProjector (const StHist1DProjector &projector)
Extra data members need to be copied.

Member StHist2DProjector (const StHist2DProjector &projector)
Extra data members need to be copied.

Member summaryNew ()
This method should get the strings from the factory.

Class SymbolPointRep

Could add diamond.

Class TextPlotter

The amount of stuff this class inherits and doesn't use is another sign that the PlotterBase is too heavy. For example, everything dealing with the axes are only needed by the XYPlotter.

Member toUserXY (double mx, double my, bool scaled, double &ux, double &uy) const
Needs to be renamed.

Member transform (double &x) const =0
implement concrete cases of single variable transformation.

Class TransformBase

When a Coordinate class is implemented, we can replace many functions below with ones that take a Coordinate as an argument.

Member transformPoints (const TransformBase &transform, ViewBase &view)
The ViewBase object is not used, so why is it in interface.

Member updateAxisTab ()
Offset slider and text changes behave wildly on when on log scale. For now it is disabled. Should try to fix it.

Member updatePlotTab ()
Should move implementation of updating the m_point_stack to a separate method.

Member userToDrawColor (double c) const
Could eliminate userToMargincolor.

Member userToDrawX (double x) const
Could eliminated userToMarginX.

Member userToDrawY (double x) const
Could eliminate userToInvertedMarginY.

Member valueAt (unsigned int row, unsigned int column) const
Determine if the Python GIL should also be obtained when using numarray instead of Numeric.

Member valueRange () const =0

Resolve if this method should be here.

Member valueRange () const
This method doesn't seem to be used yet is needed to satisfy pure virtual function in the base class. Some client should be calling it.

Member valueRange () const
Return value range of function.

Class ViewBase

Why doesn't getXXXRect() return reference?

Member willDelete (const Observable *obs)
This method does get called with obs != RootNTuple, find out why.

Member WindowController ()
Had to make this public for boost.python. Maybe there is a better way.

Class WindowController

There are circular references between WindowController and CanvasWindow. Probably, WindowController should be an observer of CanvasWindow or the methods of the WindowController should be static methods of the CanvasWindow.

Member wolfeStep (const std::vector< double > &x0, const std::vector< double > &p) const
Take out error message and send signal to application.

Member writeNTupleToFile (DataSource *source, const std::string &filename)
Define return codes for why the file was not written.

Class XyPlotter

When multiple DataRep objects are contained by the plotter, one could set the title from one of them.

Class XYZTransformBase

This class should go away.

Class YPlot

Fix a bug in reading a document as the point size does not get restored.

Allow one to use another column as the error on a value. Don't forget to implement hasErrorDisplay() after doing so.


Generated for HippoDraw Class Library by doxygen