order.variable
Contents
order.variable#
Tools to work with variables.
Contents
Class Variable#
- class Variable(name, id='+', expression=None, binning=(1, 0.0, 1.0), x_title='', x_title_short=None, y_title='Entries', y_title_short=None, x_labels=None, x_log=False, y_log=False, x_discrete=False, y_discrete=False, unit='1', unit_format='{title} / {unit}', null_value=None, selection=None, str_selection_mode=None, tags=None, aux=None, log_x=None, log_y=None, discrete_x=None, discrete_y=None)[source]#
Bases:
order.unique.UniqueObject
,order.mixins.CopyMixin
,order.mixins.AuxDataMixin
,order.mixins.TagMixin
,order.mixins.SelectionMixin
Class that provides simplified access to variables for convenience methods for plotting with both ROOT and matplotlib.
Arguments
expression can be a string (for projection statements) or function that defines the variable expression. When empty, it defaults to name. selection is expected to be a string. Other options that are relevant for plotting are binning, x_title, x_title_short, y_title, y_title_short, unit, unit_format and null_value. See the attribute listing below for further information.
selection and str_selection_mode are passed to the
SelectionMixin
, tags to theTagMixin
, aux to theAuxDataMixin
, and name and id (defaulting to an automatically increasing id) to theUniqueObject
constructor.Copy behavior
copy()
All attributes are copied.
copy_shallow()
No difference with respect to
copy()
, all attributes are copied.Example
import order as od v1 = od.Variable( name="myVar", expression="myBranchA * myBranchB", selection="myBranchC > 0", binning=(20, 0.0, 10.0), x_title=r"$\mu p_{T}$", unit="GeV", null_value=-999.0, ) v1.x_title_root # -> "#mu p_{T}" v1.get_full_title() # -> "myVar;$\mu p_{T}$" / GeV;Entries / 0.5 GeV'" v2 = v1.copy(name="copiedVar", id="+", binning=[0.0, 0.5, 1.5, 3.0], ) v2.get_full_title() # -> "copiedVar;#mu p_{T} / GeV;Entries / GeV" v2.even_binning # -> False
Members
- expression#
type: string, callable, None
The expression of this variable. Defaults to name if None.
- binning#
type: tuple, list
Descibes the bin edges when given a list, or the number of bins, minimum value and maximum value when passed a 3-tuple.
- even_binning#
type: bool (read-only)
Whether or not the binning is even.
- x_title#
type: string
The title of the x-axis in standard LaTeX format.
- x_title_root#
type: string (read-only)
The title of the x-axis, converted to ROOT-style latex.
- x_title_short#
type: string
Short version for the title of the x-axis in standard LaTeX format. Defaults to x_title when not explicitely set.
- x_title_short_root#
type: string (read-only)
The short version of the title of the x-axis, converted to ROOT-style latex.
- y_title#
type: string
The title of the y-axis in standard LaTeX format.
- y_title_root#
type: string (read-only)
The title of the y-axis, converted to ROOT-style latex.
- y_title_short#
type: string
Short version for the title of the y-axis in standard LaTeX format. Defaults to y_title when not explicitely set.
- y_title_short_root#
type: string (read-only)
The short version of the title of the y-axis, converted to ROOT-style latex.
- x_labels#
type: list, None
A list of custom bin labels or None.
- x_labels_root#
type: list, None (read-only)
A list of custom bin labels, converted to ROOT-style latex, or None.
- unit#
type: string, None
The unit to be shown on both, x- and y-axis. When None, no unit is shown.
- unit_format#
type: string
The format string for concatenating axis titles and units, e.g.
"{title} / {unit}"
. The format string must contain the fields title and unit.
- null_value#
type: int, float, None
A configurable NULL value for this variable, possibly denoting missing values. None is considered as “non-configured”.
- x_log#
type: boolean
Whether or not the x-axis should be drawn logarithmically.
- y_log#
type: boolean
Whether or not the y-axis should be drawn logarithmically.
- x_discrete#
type: boolean
Whether or not the x-axis is partitioned by discrete values (i.e, an integer axis). There is not constraint on the
binning
setting, but it should be set accordingly.
- y_discrete#
type: boolean
Whether or not the y-axis is partitioned by discrete values (i.e, an integer axis).
- n_bins#
type: int (read-only)
The number of bins.
- x_min#
type: float (read-only)
The minimum value of the x-axis.
- x_max#
type: float (read-only)
The maximum value of the x-axis.
- bin_width#
type: float (read-only)
The width of a bin.
- bin_edges#
type: list (read-only)
A list of the n_bins + 1 bin edges.
Methods:
get_full_x_title
([unit, short, root])Returns the full title (i.e.
get_full_y_title
([bin_width, unit, short, root])Returns the full title (i.e.
get_full_title
([name, short, short_x, ...])Returns the full combined title that is compliant with ROOT's TH1 classes.
get_mpl_hist_data
([update, skip])Returns a dictionary containing information on bins, range, label, and log, that can be passed to matplotlib histograms.
- get_full_x_title(unit=None, short=False, root=False)[source]#
Returns the full title (i.e. with unit string) of the x-axis. When unit is None, it defaults to the
unit
if this instance. No unit is shown if it is one or it evaluates to False.When short is True, the short version is returned. When root is True, the title is converted to proper ROOT latex.
- get_full_y_title(bin_width=None, unit=None, short=False, root=False)[source]#
Returns the full title (i.e. with bin width and unit string) of the y-axis. When not None, the value bin_width instead of the one evaluated from binning when even. When unit is None, it defaults to the
unit
if this instance. No unit is shown if it is one or it evaluates to False.When short is True, the short version is returned. When root is True, the title is converted to ROOT-style latex.
- get_full_title(name=None, short=False, short_x=None, short_y=None, root=False, bin_width=None)[source]#
Returns the full combined title that is compliant with ROOT’s TH1 classes. short_x (short_y) is passed to
full_x_title()
(full_y_title()
). Both values fallback to short when None. bin_width is forwarded tofull_y_title()
. When root is False, the axis titles are not converted to ROOT-style latex.
- get_mpl_hist_data(update=None, skip=None)[source]#
Returns a dictionary containing information on bins, range, label, and log, that can be passed to matplotlib histograms. When update is set, the returned dict is updated with update. When skip is set, it can be a single key or a sequence of keys that will not be added to the returned dictionary.