Status: Resolved (View Workflow)
Affects Version/s: master
Fix Version/s: None
Component/s: Core Libraries
This was initially observed on ROOT 6.18.0 but is still true as of the current ROOT master (commit 907c1d37fdbb657e9998889ee3bf007ffe89d3d4 from November 1st).
The issue is not operating system nor hardware dependent as it lies in the C++ source code.
RAxisView is meant to be a way to query an RHist's axis properties. To do this, it must provide a way to access the properties of all ROOT 7 axis types, which are currently RAxisEquidistant, RAxisGrow, RAxisIrregular and RAxisLabels.
At this point in time, however, an RAxisView may only produce "RAxisEquidistant*" and "RAxisIrregular*" pointers, and given that the RAxis family do not support dynamic_casting and do not use virtual methods, this is not enough:
- With the current hiding-based design of RAxisXyz::CanGrow, RAxisEquidistant::CanGrow provides a wrong result when one is querying a growable axis. See also issue
ROOT-10402for a possible alternative to this design.
- There is presently no way to query the labels of an RAxisLabels when one only has an RAxisView of it.
In an ideal world, it would be possible to go back from RAxisView to an RAxisConfig struct, which would be one possible way to address this issue.