Volume and Surface properties




After creating the Setup and adding the necessary volumes and surfaces, the user can add properties to volumes and surfaces through the Setup class:

setup->set_volume_property(vol_name, property_name, property);
setup->set_surface_property(surf_name, property_name, property);


where vol_name, surf_name and property_name are std::strings, and property is the actual property (of any type), which must be a class data member since Setup uses a reference to the property (and not a copy of it). Currently the following volume properties are available:

  • RP::X0 is the radiation length (double)
  • RP::BField is the magnetic field (EVector)
  • RP::BFieldMap is the magnetic field map (EVectorMap)
  • RP::de_dx is a fixed energy loss rate (double)
  • RP::de_dx_map is a energy loss map (PropertyMap)
  • RP::StepSize is the step size (double)
  • RP::SurfNormal is the normal to the measurement surfaces (EVector)


  • And the following surface properties:

  • RP::meas_type: measurement type (std::string)
  • RP::resolution: measurement error covariance matrix (EMatrix)


  • A property is retrieved as follows:

    property_type property =
    setup->volume_properties(vol_name).retrieve < property_type > (property_name);


    where property_type is int, double, EVector, EMatrix, etc. For example

    double X0 = setup->volume_properties("TPC").retrieve < double > ("X0");