This module defines behaviors, which are mix-in classes that provide a high-level interface to objects read from ROOT files.

Behaviors do not have a required base class, and they may be used with Awkward Array’s ak.behavior.

To add a behavior for a ROOT class:

  1. Translate the ROOT class name from C++ to Python with uproot.classname_encode. For example, "ROOT::RThing" becomes "Model_ROOT_3a3a_RThing".

  2. Create a submodule of uproot.behaviors without the "Model_" prefix. For example, "ROOT_3a3a_RThing".

  3. Include a class in that submodule with the fully encoded name. For example, "Model_ROOT_3a3a_RThing".

When Uproot reads an instance of the class, it would always create a deserialization model if one is not predefined. But if a behavior with the appropriate name exist, the new class will inherit from the behavior, giving the newly created object specialized methods and properties.

See also uproot.models.