Bug List
Directory /builddir/build/BUILD/HippoDraw-1.21.3/python/
@ hsimple.py and pl_exp_test.py, don't do anything under run_test_scripts.py. (This isn't a bug. run_test_scripts.py launches scripts using the import command. Since hsimple.py and pl_exp_test.py are launched by SciPy_demo.py before they are launched by run_test_scripts.py, Python's import mechanism prevents the scripts from being re-run.)
Member BinnerAxisLinear::setRange (const Range &, bool hold_width=true)
the cpp macro MATH_DEFECT is used in this method but configure doesn't define it.`
Class BinnerAxisLog
Resolve this issue. Is plotting the log(x) on linear scale the same as binning x on log scale?
Member BinningProjector::normalizeTo (const ProjectorBase *target)
Only works if target projector is binning projector
Class BinToBeach
@@ This color map doesn't look the same as in IDL.
Class BinToMacStyle
@@ This color map doesn't look the same as in IDL.
Member BoxTextRep::drawProjectedValues (ProjectorBase &projector, ViewBase &view)
Should split the line if
is in the string.
Class CanvasView

@@@ The following sequence causes a crash: Run histogram.py, edit->copy, edit->paste, select with mouse, and edit->paste again.

@@@ A copy followed by past of GroupView cause crash. Other crashes are related to this one.

@@@ Only text rep box tracks the target plot when it is moved.

Canvas size doesn't automatically enlarge when size of a view is dragged to be larger than canvas.

Member CanvasView::contentsMouseMoveEvent (QMouseEvent *)
@@@ Cuts for functions are not controlled by the mouse events.
Member CanvasView::copySelectedToPasteboard ()
If plot being copied is target of a cut, then cut should also be copied.
Member CanvasView::pasteViews (const std::list< ViewBase * > &views)
When pasting from selectionboard, should not displace like when pasting from pasteboard.
Member CanvasView::removeDisplay (PlotterBase *plotter)
Need to also remove any views observing this plotter as cutSelectedToPasteboard does.
Member CanvasView::removeSelected ()
Need to remove any text displays that are observing this view as cutSelectedToPasteboard does.
Class CanvasWindow

@ After using edit->paste, trying to selected the pasted plot leads to selecting the original.

@@@ It appears that if one cuts a cut from the canvas, then the target doesn't get its cut removed.

If a document could not be opened, error messages displays, but one get a new empty canvas window. It is not throwing an exception which is read to be caught.

The View/Cut empty pages button doesn't work and is not enabled.

@@ Opening a document that references a ROOT array variable doesn't work.

Member CanvasWindow::helpAbout ()
Mac only.
Member CanvasWindow::initFromFile (const std::string &filename)
@@@ After initializing from file, the Window appears and responds like it has been changed.
Member CompositePlotter::setRangePrivate (hippodraw::Axes::Type axis, const Range &range, bool scaled=false, bool adjust_width=true)
Parameter adjust_width is not used
Class ContourPointRep
@ Contours should be smoother. Try function2d.py to see contours of double Gaussian.
Class CutPlotter

If one removes a cut by cutting it from the canvas, the cut does not get removed from its target.

If cut range is set from python outside the display range, the cut range color is displayed outside the axis representation. Try function_empty.py.

Fitting a function seems to fit only the data under the cut.

Class DataRep
@@@ Function cut does not get restored from document.
Member DataSource::fillRange (unsigned int column, Range &) const
HUGE_VAL doesn't pass gcc on the Mac if -pedantic is used.
File DisplayController.cxx
how come HAVE_CFITSIO but no HAVE_ROOT
Member DisplayController::addDataRep (PlotterBase *, hippodraw::DataRep *) const
Shouldn't need to call checkAxisScaling here since the CompositePlotter has already done it.
Member DisplayController::createDisplay (const std::string &name, const DataSource &tuple, const std::vector< std::string > &bindings) const
If Image DataRep comes from file other than FITS file, then it is not being handled.
Member DisplayController::getRMS (const PlotterBase *plotter, const std::string &axis, int index=0) const
Only works for the X axis.
Member DisplayController::getRMS (const PlotterBase *plotter, Axes::Type axis, int index=0) const
Only works for the X axis.
Member DisplayController::isCompatible (const PlotterBase *plotter, const std::string &type) const
Part of being compatible is same aspect ratio or none.
Member DyHist1DProjector::execute ()
When restoring and refitting a function, it appears that this member function is called.
Member EpsView::draw_Text (const std::string &s, float x, float y, float fontsize, float angle, char xp, char yp, const FontBase *)
Text size doesn't come out the same as on screen.
Member EpsView::drawText (const std::string &s, float x, float y, float fontsize, float angle, char xp, char yp, bool resize, const FontBase *font, const Color *color)

@@@ Does not use color value.

Does not use the resize parameter.

Member EpsView::drawViewLines (const std::vector< double > &x, const std::vector< double > &y, hippodraw::Line::Style style, bool color, float size)
Does not use the color parameter
Class FigureEditor
@@@ Mac OS X only, printer margins not showing in correct place on the Canvas, however printing is working fine.
Member FigureEditor::calcPrinterMetrics (QPaintDevice *)
@@@ Talking the default printer at start-up causes large delays if printer is not available on the network.
Member FigureEditor::contentsMousePressEvent (QMouseEvent *)
Ctrl and shift click do not select plots like Windows selects files.
Member FigureEditor::paste (QCanvasItem *item)
If item is pasted second time, it should display even more.
Member FigureEditor::print ()
If user selects page range, it is ignored.
Member FigureEditor::setZoomMode (bool flag)
Mouse tracking is not working.
Member FigureEditor::viewZoomOut ()
Zooming out from the initial canvas, leave area where plots can be dragged, but they disappear.
Class FitsController
@@@ Writing to file under cuts doesn't seem to work on Windows with cfitsio 2.5.
Member FitsController::writeImageToFile (unsigned int x, unsigned int y, const std::vector< double > &data, const std::string &filename)
Should throw exception if couldn't write to file, for example if the path is invalid.
Member FitsController::writeNTupleToFile (const DataSource *ntuple, const std::string &filename)

Should throw exception if couldn't write to file, for example if the path is invalid.

Needs to avoid duplicated code.

Member FitsController::writeNTupleToFile (const std::string &name, const std::string &filename)
Should throw exception if couldn't write to file, for example if the path is invalid.
Member FitsController::writeNTupleToFile (const DataSource *source, const std::string &filename, const std::string &name, const std::vector< std::string > &column_list, const std::vector< const TupleCut * > &cut_list)
Should throw exception if couldn't write to file, for example if the path is invalid.
Member FunctionBase::derivByParm (int i, double x) const
Make this function pure when problem compiling python/FunctionWrap under Windows is solved.
Member FunctionBase::operator() (double x) const
Make this member pure when problem compiling python/FunctionWrap is solved.
Member FunctionController::getFunctionRep (const PlotterBase *plotter) const
If multiple DataRep exists, each with its own functions, then this function will probably not return the right one. Use datareps.py to demonstrate this. The only use of this function is Inspector itself, thus should be possible to remove this function altogether.
Member FunctionController::getFunctionRep (const PlotterBase *plotter, const DataRep *data) const
@@@ When multiple independent functions are allowed, this method will fail.
Class FunctionRep
@@ The function should be drawn in blue so it can be see on filled histogram.
Member FunctionRep::setCutRange (bool yes=true)
@@@ This needs fixing for two dimension functions.
Member FunctionWrap::derivByParm (int, double) const
Should attempt to call derivByParm to implement hasDerivatives()
Class HammerAito
@@ The right hand side of the axis box is not drawn. ( To remove: probably not a bug, since -180 and +180 is the same edge and should not be drawn twice. )
Class HammerAito2

@@@ The projection near the poles has incorrect white space. ( To remove: color box size changed when transformation applied )

@@ The right hand side of the axis box is not drawn. ( To remove: probably not a bug, since -180 and +180 is the same edge and should not be drawn twice. )

Member hippodraw::Python::export_CircularBuffer ()
@@ Probably needs wrapper for application lock
Member hippodraw::Python::export_StatedFCN ()
@@@ Can export objective value but not degrees of freedom.
Class Image

@@ Z axis is not autoscaling like problem with mesh used to be.

@@ Labels of Z values, and perhaps others if range is under two orders of magnitude and values are very small. Try sip/z_label.py to see it. Might convert this script to one that can be put in testsuite

Class Inspector

@@@ Can not change DataSource of plot if function has been applied.

@@@ When Applying all cuts to DataRep that comes from different Ntuple, should raise Dialog to ask whether to not do it, or do it with same set of cut names and values, but from different datasource.

@@@ When adding DataRep to another and first has cuts applied, then raise dialog to ask user if he wants same cuts applied or not.

@@@ When color map is changed on plot with multiple DataReps objects, it should be changed on all on them.

@@@ When plot has a function cut, trying to add and existing data cut causes crash.

@@@ For test_FitsWriting.py, the time cut doesn't show up in Cuts panel when selecting the color plot.

@@@ On axis tabbed panel, changing the high range via text box doesn't set the right bin width. So the range appears set in the box, but it is wrong. Use ConstantModelFit.py, autoscale, then set range.

@@@ In axis tabbed panel, changng Y bin width on color plot increases range excessively.

@@@ One can not change label of histogram on X or Y axis.

@@ On axis tabbed panel, zoom pan doesn't work for static histograms.

@@ When changing DataSource on multiple plots, and some could not be changed, one gets no warning.

@@ stats panel documentation image needs updating.

@ In Stats tabbed panel, the STD button is disabled.

@ GUI On the Axis tabbed panel, the low and high sliders have large slider handle rectangle than the width and offset ones.

@@ On cuts tabbed panel, switching to zoom pan doesn't work if one end of cut range is at full range.

@@@ On the Axis tabbed panel, when in zoom / pan mode, the position slider is hard to control when X axis is in log scale.

In Data tabbed panel, the title doesn't get set if there are multiple data reps on plot. Probably should take title of first one. What if the data reps comes from two different data sources, then what title is used?

On empty DataSource, the axis tabbed panel doesn't show the ranges etc. Use empty.py to see it.

@ Access to adjustment of fitting cut is not available from the inspector if other cuts have been applied to the same display.

@ Adjusting other cuts also affects the fitting cut.

@ Can not compile with gcc 2.96 because of use of ostringstream.

@ On data tabbed panel, the Add and Remove buttons should be disabled when not appropriate, or info dialog should pop up when used in correctly.

@@@ Trying to change color on display that uses color does nothing. Should bring up an information dialog.

When changing the DataSource on a plot which has a cut, the DataSoruce of the cut and all its targets is also changed without warning.

On Plot tabbed panel, show box edges should be disabled if no boxes.

After saving and loading a variable 3 color scale, it is different from the original one. ( Looks like variable rainbow ).

@ Have inspector notice that a DataSource have been added via the Python interface without having to click on the CanvasView.

Only first page is showed on Windows platform. Can't scroll down to see other plots. Have to maximize the canvas window.

Member Inspector::functionAdd ()
@@@ If the fitter setting is set to one that needs integration and target DataRep is one that is not binned, then adding a function causes a crash.
Member Inspector::updateAxisTab ()
When bin widths are the same, enables the width text box initially, but not after one toggles each data rep and returns to all active.
Class LinePointRep
Qt 4 Only. The extra colored lines do not show up in axisBug.py
Member MapMatrixProjector::fillProjectedValues (DataSource *ntuple, bool in_range=false) const
Should be able to uncomment the commented out code now that things got fixed in implemnting MeshProjector.
Member MapMatrixProjector::getAverage (hippodraw::Axes::Type axis) const
Averge value might be wrong, or data is bad.
Member MapMatrixProjector::getZValue (double x, double y) const
Not sure we're picking up the right bin.
Class Mercator
@@ This transform draws outside of drawing rectangle. Use useBinner.py to see it.
Class Mercator2
@@ This transform draws outside of drawing rectangle. Use useBinner.py to see it.
Class MinuitMigrad
@ when fixxing a parameter, and doing a fit the tixed parameter doesn't show up as fixed in GUI, because the selected parameter changes.
Member NTupleController::saveNTuples (const std::string &prefix, const std::string &suffix)

Should throw exception if couldn't write to file, for example if the path is invalid.

If writing the DataSource to a file fails, no error is reported.

Member NTupleController::writeNTupleToFile (DataSource *source, const std::string &filename)
Should throw exception if couldn't write to file, for example if the path is invalid.
Member NTupleController::writeNTupleToFile (const std::string &name, const std::string &filename)
Should throw exception if couldn't write to file, for example if the path is invalid.
Member NTupleFCN::calcAlphaBeta (std::vector< std::vector< double > > &alpha, std::vector< double > &beta)
Following only works for 1 dimension coordinate.
Member NTupleFCN::setFitCut (TupleCut *cut)
Works only for one dimensional coordinate.
Class NumArrayTuple
@@@ Currently the config/m4/pfkeb_have_numarray passes its test when Numeric is found instead of numarray.
Class PickTable
When entering a new entry, density should be calculated from entries/bin.
Member PlotterBase::setRepresentation (RepBase *pointrep)=0
This method is confusing because programmer may not know if it means PointRep or DataRep.
Member PlotterBaseXML::handleCutPlotter (const XmlElement *element, CutPlotter *plotter)
Old documents, before intro of function cuts, can not be read as they will be missing the cut representation.
Class ProfileProjector
The total number of entries doesn't add up to the correct value. Try displays.py and look at stats panel.
Member PyCanvas::addDisplay (QtDisplay *display_wrap)
@ why is variable yes ignored?
Member PyCanvas::clear ()
Even thou clear() passes, it is possible that the window has already been closed, like when the application has terminated.
Member PyCanvas::getDisplays () const
@@ The displays do not seem to come out in same order that they were inserted.
Member PyCanvas::PyCanvas ()
@@@ Can not use this method from Python, needs to be added so one can run in batch.
Member PyDataRep::addCut ()
@ Only works on X axis.
Member PyDataRep::setBinWidth (const std::string &axis, double width)
Doesn't always work if display hasn't drawn yet.
Member PyDataRep::setPointRep (RepBase *pointRep)
@@ A particular DataRep can only accept a subset of all RepBase objects.
Member PyDataSource::saveColumnFromNumArray (unsigned int index, boost::python::numeric::array array)
@@@ Should allow any type of DataSource if rank is acceptable.
Member PyFunctionRep::objectiveValue ()
This function only works correctly if there is only one DataRep contained by the plotter.
Member PyFunctionRep::setFitRangeEnabled (bool yes=true)
@@@ when fit Range is disabled should not display it.
File QtDisplay.cxx
Why do we have HAVE_ROOT but not HAVE_CFITSIO?
Member QtDisplay::update ()
@@ For the script, autontuple.py, this method behaves strangely.
Class QtFileDialog

The dialog should remember the suffix of the last file selected.

@@ Mac OS X only. Doesn't show the available file types and odesn't open SVAC ROOT file with Qt 4.3, ok with Qt 3.

Member QtView::draw (QPainter &)
Updating the Inspector from this method is disabled.
Member QtView::drawMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
Style and color arguments are not used.
Member QtView::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
Style and color arguments are not used.
Member QtView::drawWithPixmap (QPainter &painter)
The plotting region for Color Plots is too small.
Member QtViewImp::drawMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
Should style and color arguments be used?
Member QtViewImp::drawViewLines (const std::vector< double > &x, const std::vector< double > &y, hippodraw::Line::Style style, bool color, float size)
bool argument is not used.
Class QtViewWidget
@@@ Displaying an empty DataSource leads to QFont error messages. See jira bug report.
Member QtViewWidget::drawMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
Style and color arguments are not used.
Member QtViewWidget::drawViewMethod (const std::vector< double > &x, const std::vector< double > &y, int opt1, int opt2)
style and color arguments are not used.
Class RootController
@@@ testsuite/towercut.py needs fixing.
Member RootController::getNTupleNames (const std::string &)

Returns all top level names instead of only the ones that could be a DataSource.

@@@ If can not open file, should thrown an exception.

Class RootNTuple
@@ Unsigned short is not supported.
Member RootNTuple::fillShape (std::vector< int > &v, unsigned int column) const
If a column is an added one, shape is assumed to be rank 1.
Member RootNTuple::getRow (unsigned int i) const
@@@ If a column has an array varible, then get seg fault.
Class St2DHistogram
This class is not save and restored to document file.
Member StatedFCN::setFunction (FunctionBase *function)
@@ Should be able to display a function without fitting.
Member StripChartProjector::fillProjectedValues (DataSource *ntuple, bool in_range=false) const
bool Parameter is not used
Class SymbolPointRep

The triangle is upside down, or should have both types.

A symbol can be drawn outside the drawing rectangle if for example, it is located at 0,0.

Class TextRepBase
@@@ On Mac OS X, he bounding box is not big enough.
Member TupleCutXML::setAxisAttributes (TupleCut *cut, hippodraw::Axes::Type axis, const XmlElement *element) const
The axis argument is not used.
Member WindowController::aboutToClose (CanvasWindow *window)
Mac only.
Class XyPlotter

@@ Removing stacked DataRep causes crash.

Need a way to show invalid range for static histograms.


Generated for HippoDraw Class Library by doxygen