Numerical tolerances
Numerical tolerances must be properly defined to ensure a correct propagation through the setup.
The "zero" must be defined for different types of quantities: length, magnetic field, unitary vector component, etc.
Similarely the "infinite" has to be defined. The functions bellow allow chaging the default values.
// Zero definition (default is 1e-10)
manager.geometry_svc().set_zero(double zero);
// Infinite definition (default is 1e12)
manager.geometry_svc().set_infinite(double inf);
// Below this value a length is considered 0 (default is 1e-5 mm).
// This is used for example when propagating numerically as the maximum distance
// to consider a point inside a surface
manager.geometry_svc().set_zero_length(double zero);
// Above this value a length is considered infinite (default is 1e12 mm)
manager.geometry_svc().set_infinite_length(double inf);
// Below this value a covariance matrix element is considered 0 (default is 1e-36).
// Used to compute the NDOF of a HyperVector
manager.geometry_svc().set_zero_cov(double zero);
// Above this value a covariance matrix element is considered infinite (default is 1e36)
manager.geometry_svc().set_infinite_cov(double inf);
// Below this value a unitary vector component is considered 0 (default is 1e-3)
// This is used to check whether the magnetic field is parallel/normal to a surface
manager.geometry_svc().set_zero_transverse_component(double zero);
// Below this value a magnetic field is considered 0 (default is 1e-5 Tesla).
// This is used to decide wheter the helix model has to be used or not
manager.geometry_svc().set_zero_BField(double zero);