List of User Requested Features
Class AxisRepBase
Let user draw border in different color.
Member AxisRepColor::drawZLabels (const AxisModelBase &axis_model, ViewBase &view, const std::string &z_label)
first argument is not used, why?
Member BinningProjector::isImageConvertable () const
Allow axis to be on log scale, but this will require generating the X and Y coordinates for the image.
Class Bins1DHist
Should use BinnerAxis::getCoordinate() and have asymmetric errors.
Class BoxTextRep
Be able to edit the text.
Class CanvasSettings
Plot matrix should have a preview.
Class CanvasView

@@ Scale the view so that full page appears in Window.

@@ Coordinates should show when mouse is over plot. Should be no need for right mouse down.

Need remove empty pages menu item.

Member CanvasView::saveAs (const std::string &filename) const
Raise error dialog if saving to file was not successful.
Member CanvasView::saveSelectedImages ()
@@ Add SVG format to types available.
Class CanvasWindow

Have a editable DataSource table view.

@ Open documents read only. This could be the default when the file Open menu item is used.

A clear all button on the tool bar.

Member CanvasWindow::saveAllAs (const std::string &filename)
Raise error dialog if saving doesn't work.
Class ColumnPointRep
@@ Need version which draws histogram on its side.
Class CompositePlotter

When 2 and only 2 DataRep objects are stacked, use right Y axis to show scale.

Allow DataRep to be hidden.

Class Cut2DPlotter

@@@ Need better way to show 2D cut when the 2D color plot is full of points with no empty squares. Perhaps draw rectangle on top of plot.

@@@ Put 1 pt wide rectangle around selected region so it can be seen even if background is full.

Class CutPlotter
Be able to display number of points passing cut.
Member DataColumn::m_double_data
Support data types other than double.
Class DataRep

Be able to take difference between two data reps and plot it.

@@@ Be able to do Lego plots.

Class DataRepXML

Check that histogram with equal bin contents can be archived.

Check that minimum entries per bin can be archived.

Member DataSource::fillRange (unsigned int column, Range &) const
use if ( x != x) to test for nan
Class FigureEditor

Move any attached text displays along with moved plotter display.

@@@ For plots using pixmap, do not draw plot when resizing until mouse is release.

Class FilledColumnPointRep
Only using solid pattern for the fill for now. Qt will allow us to use other patterns.
Member FunctionBase::FunctionBase (const FunctionBase &)
Remove this copy constructor, it was only tempoary to try to fix cloning functions written in Python with SIP.
Member FunctionBase::integrate (double lower_limit, double upper_limit) const

Override this method in derived classes when calculation of integral can be done analyically.

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Check if this is the best algorithm. Its looks different from the one found in http://osl.iu.edu/%7Etveldhui/papers/techniques/

Member FunctionController::addFunction (PlotterBase *plotter, const std::string &name, FunctionRep *frep, DataRep *data_rep)
Check that previously set fixed flags and/or limits get propagated to new linear sum function.
Member FunctionController::createResidualsDisplay (PlotterBase *plotter, const FunctionRep *)
@ If target is histogram, then scale of residuals should take into account the bin width to make labels in counts.
Member FunctionController::ellipsoidNTuple (PlotterBase *plotter, FunctionRep *, NTuple *nt, int n, double &xmin, double &xmax, double &ymin, double &ymax)
@@ Make sure they are being calculated correctly by hold one parameter constant and refitting.
Member FunctionController::saveParameters (PlotterBase *plotter)
@@ Should save parameters in a stack, so that more than one set can be saved and restored.
Class FunctionFactory
Be able to add new functions from a shared library.
Member FunctionProjector::m_save_parms
@@ Use a std::stack for this.
Member FunctionWrap::operator() (double) const
Why is exception being thrown for logParabolic.py and are we handling the fix correctly
Namespace hippodraw::Python

On Mac OS X, get lots of warning messages about use of long double, must have a gcc flag to fix that.

Write m4 macro to allow user to fix path to Python includes and lib.

Consider using ax_boost_python.m4 from autoconf macro archive.

Consider other Python finding m4 macros from the autoconf macro archive.

Member hippodraw::Python::export_DataSource ()
Add getShape(int) function to allow user to get shape of a column.
Member hippodraw::Python::export_NTupleController ()
Provide interface to DataSourceController.
Class Hist1DProjImp
@@@ Want to be able to plot E**2 dN/dE as will as dN/dE. Need to decide if this is part of a histogram class or part of adding columns to the DataSource.
Class Inspector

It would be helpful if the Canvas settings pop-up had an "Apply" button that retiles the canvas, but which does not close the window (or save the configuration). You could just have the "Retile" button serve this purpose by not having it close the window.

For views that have two histograms overlaid, it would be nice to have a button that returned the KS test statistic and probability that the two data sets are drawn from the same underlying distribution. Not sure what to do if more than two histograms are overlaid or if one of the datareps is not a histogram. Probably best to disable this button.

In control-left clicking to select a datarep within a given view, it would be useful to have an easier way of returning to the state where no single datarep is selected. Often I have many datareps plotted in a single view, and I want a quick way of restoring the view rather than cycling through all of the reps, possibly overshooting in my haste.

@@ In zoom/pan mode, still should show high and low of range.

@@ Set to likelihood fitter when statistics of bins go below some threshold.

@ Display objective value to the functions tabbed panel.

Should be able to change title/label text with TeX.

In status tabbed panel, when no plot is selected should still be able to add text box.

On the Stats panel, the radio button entry "Chi-squared statistics of function" should read "Chi-square per dof =" with the value displayed as it is for "Number of entries", "Average x-value", and "Average y-value". Same goes for "Standard deviation of x-value".

On Stats tabbed panel, it would be nice when selecting text in box that the keyboard focus would go to box and a return with trigger the insertion.

@@@ Sliders controlling cuts that are plotted on logarithmic x-axes should respond on a logarithmic scale instead of a linear one.

Hoyle would like one x but 16 channels in Y displayed on one XY plot, but not do it via 16 DataRep objects.

In the stats summary panel, the description should match the type used by the factory.

Member Inspector::cutNew ()
Be able to add new cut to all DataRep objects contained by the plotter.
Member Inspector::updateCutEnableButton ()
This method seems to get called more than once when adding a cut.
Class LMFitter
Make the fit() method a member function of the DataRep instead of the function in the Python interface.
Member LogNormal::initialParameters (const FunctionHelper *helper)
Need better estimate of initial parameters.
Class Map1Projector
Optionally, an additional column can be mapped to Y error bars.
Member MapMatrixProjector::m_null_value
Allow user to set and get this value.
Class MinuitMigrad
Add support for using Minos to get asymmetric errors.
Class NTuple
@ Besides interval count, need interval timer.
Member NTupleController::readAsciiNTuple (NTuple *ntuple, const std::string &filename)

If the label for a column is very long, then it is probably an error in the file format.

If line of labels contains no tabs at all, then should probably assume that any white space separates the labels.

If bad format detected, try to say what was bad.

Member NTupleFCN::calcAlphaBeta (std::vector< std::vector< double > > &alpha, std::vector< double > &beta)
Find out what these really are and document them. They might be the gradients.
Class NTupleXML
Need to save shape of NTuple in order to implement saving St2DHistogram.
Class PlotTable
Display TextRep in more friendly way.
Class PlotterBase
Make title of plot optional and not the default. Use the space for plotting.
Class Profile2D
@ Implement a static version and expose to Python via SIP. Don't forget to implement Bins2DProfile.setContents.
Member Profile2DProjector::execute ()
Support averaging with a weight.
Class ProfileHist
@ Implement static version. Don't forget to implement Bins1DProfile::setContents().
Member ProjectorBase::getRMS (Axes::Type axis)
Can do better than use only the projected values in some derived classes.
Member PyApp::PyApp ()
There's a better way to wait for application to be ready.
Class PyCanvas

Be able to retrieve, from Python, information on active displays on the canvas such as a display identifier, axis labels, etc ...

@@ Add interface to re-tile.

@@ Get a Display by its plotter id.

Member PyDataSource::addColumn (const std::string &label, boost::python::numeric::array array)
@@ This method only works if contained DataSource is NumArrayTuple. It could accept more like saveColumnFromNumArray does.
Member PyDataSource::PyDataSource (const std::string &dataSource)
@@ Have a constructor that takes DataSource and figures out what type it is.
Member PyFitsController::instance ()
Should always build this class and throw exception if user tries to use it when code was not built with FITS support.
Class PyFunctionRep
@@ Return covariance matrix.
Class QtDisplay

@@@ Need to add methods that PyDataRep implements so user doesn't need to know about DataRep objects.

@@@ Implement constructor that takes as first argument a DataSource/DataArray and if binding is one element, create Histogram, if two, create ColorPlot.

Need to check each method that does a lock to see if an exception could be thrown. If yes, and no try/catch block, then application will hang.

Member QtDisplay::addDataRep (const std::string &type, const DataSource *ntuple, const std::vector< std::string > &bindings)
@@@ Also need to have removeDataRep in interface.
Member QtDisplay::createDisplay (const std::string &type, const DataSource &nt, const std::vector< std::string > &bindings)
Expose to Python the names of the available displays.
Member QtDisplay::setColorMap (const std::string &name)
Expose the BinToColorFactory to Python so user can see the choice of names.
Member QtDisplay::setTransform (const std::string &name)
Expose to Python the list of available transforms.
Class QtFileDialog

@@@ Make sure second use of this dialog, starts in previously used directory. Make sure previously selected file type is used on second use.

@@ All file types should be shown and information dialog raised if application was not built to support it.

Member QtRootNTuple::getColumnAsArray (const std::string &variable)
Should let PyDataSource create the numarray so this class doesn't depend on numarray; as was done for FitsNTuple.
Member QtRootNTuple::valueAt (unsigned int row, const std::string &variable)
Should let PyDataSource create the numarray so this class doesn't depend on numarray; as was done for FitsNTuple.
Class RootBranch
@@ support ROOT Char_t and others.
Member RootBranch::doubleArrayAt (unsigned int row)
Add the conversion feature to other xxxArrayAt member functions.
Member RootBranch::m_vector_double_data
Could this be a vector instead of pointer.
Member RootBranch::RootBranch (TBranch *)
@@@ Should make this branch unuseable instead of throwing exception if the data type is not supported.
Class RootController

@@ Be able to chain ROOT files.

Read TH1 and TH2 histograms in ROOT file and convert to corresponding static histograms.

Class TextDataRep
@ The TextDataRep view should always be locked to it's target.
Class TupleCut
@@@ Needs form of TupleCut, or some other class, allowing one to use only certain set of rows, independent of the contents.
Class ViewBase
Also being able to capture these values for input to the range widgets (e.g., set Z High to _this_ bin's value, set Z low to _that_ bin's value) would be nice.
Class WindowController

@@@ Add a flag, set-able from Python, that would disallow the application to be exited via closing the last CanvasWindow.

@@ no need to terminate the application on last window close on the mac OS.

Member WindowController::positionCanvas (CanvasWindow *window)
@ Should use QDesktop to get usuable screen size on the Mac
Member WindowController::s_version
@ Windows only, Need to get the version number into the Windows installer file.

Generated for HippoDraw Class Library by doxygen