LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
lar::util::RealComparisons< RealType > Struct Template Reference

Provides simple real number checks. More...

#include "RealComparisons.h"

Public Types

using Value_t = RealType
 

Public Member Functions

constexpr RealComparisons (Value_t threshold)
 type of values being compered More...
 
constexpr bool zero (Value_t value) const
 Returns whether the value is no farther from 0 than the threshold. More...
 
constexpr bool nonZero (Value_t value) const
 Returns whether the value is farther from 0 than the threshold. More...
 
constexpr bool equal (Value_t a, Value_t b) const
 Returns whether a and b are no farther than the threshold. More...
 
constexpr bool nonEqual (Value_t a, Value_t b) const
 Returns whether a and b are farther than the threshold. More...
 
constexpr bool strictlyNegative (Value_t value) const
 Returns whether value is larger than zero beyond tolerance. More...
 
constexpr bool strictlyPositive (Value_t value) const
 Returns whether value is smaller than zero beyond tolerance. More...
 
constexpr bool nonNegative (Value_t value) const
 Returns whether value is larger than or equal() to zero. More...
 
constexpr bool nonPositive (Value_t value) const
 Returns whether value is smaller than or equal() to zero. More...
 
constexpr bool strictlySmaller (Value_t a, Value_t b) const
 Returns whether a is strictly smaller than b. More...
 
constexpr bool nonSmaller (Value_t a, Value_t b) const
 Returns whether a is greater than (or equal to) b. More...
 
constexpr bool strictlyGreater (Value_t a, Value_t b) const
 Returns whether a is strictly greater than b. More...
 
constexpr bool nonGreater (Value_t a, Value_t b) const
 Returns whether a is smaller than (or equal to) b. More...
 
constexpr bool within (Value_t value, Value_t lower, Value_t upper) const
 Returns whether value is between the bounds (included) More...
 
constexpr bool withinSorted (Value_t value, Value_t lower, Value_t upper) const
 Returns whether value is between bounds (included); bounds are sorted. More...
 

Public Attributes

Value_t threshold
 

Detailed Description

template<typename RealType>
struct lar::util::RealComparisons< RealType >

Provides simple real number checks.


Template Parameters
RealTypetype of value to operate on

This class provides some members to perform comparisons between real numbers, allowing for some tolerance for rounding errors.

The tolerance parameter is fixed. Example of usage:

double const sqrt2 = std::sqrt(2);
// it should print the message
if (check.equal(sqrt2, 1.4142)) {
std::cout
<< "Square root of 2 is not even close to 1.4142." << std::endl;
}
// it should not print the message
if (check.equal(sqrt2, 1.414213)) {
std::cout
<< "Square root of 2 is not even close to 1.414213." << std::endl;
}
// this should print the message
if (check.within(std::sqrt(2), 0., 1.41421)) {
std::cout
<< "Square root of 2 is between 0 and 1.41421 (tops)." << std::endl;
}
// this will probably print the message
double const epsilon = 2.0 - (sqrt2 * sqrt2);
if (check.zero(epsilon)) {
std::cout
<< "The square of the square root of 2 is roughly 2." << std::endl;
}

Definition at line 66 of file RealComparisons.h.

Member Typedef Documentation

template<typename RealType>
using lar::util::RealComparisons< RealType >::Value_t = RealType

Definition at line 67 of file RealComparisons.h.

Constructor & Destructor Documentation

template<typename RealType>
constexpr lar::util::RealComparisons< RealType >::RealComparisons ( Value_t  threshold)
inline

type of values being compered

Constructor: specify the threshold

Definition at line 70 of file RealComparisons.h.

Member Function Documentation

template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::equal ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a and b are no farther than the threshold.

Definition at line 81 of file RealComparisons.h.

Referenced by detectGlobalDriftDir(), lar::util::Vector3DComparison< RealType >::equal(), lar::util::RealComparisons< geo::Length_t >::nonEqual(), lar::util::Vector2DComparison< typename Comp_t::Value_t >::nonEqual(), and lar::util::Vector3DComparison< RealType >::nonEqual().

82  { return zero(a - b); }
constexpr bool zero(Value_t value) const
Returns whether the value is no farther from 0 than the threshold.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonEqual ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a and b are farther than the threshold.

Definition at line 85 of file RealComparisons.h.

Referenced by checkTPCcoords(), geo::AuxDetSensitiveGeo::PrintAuxDetInfo(), and geo::AuxDetGeo::PrintAuxDetInfo().

86  { return !equal(a, b); }
constexpr bool equal(Value_t a, Value_t b) const
Returns whether a and b are no farther than the threshold.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonGreater ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is smaller than (or equal to) b.

Definition at line 117 of file RealComparisons.h.

118  { return nonPositive(a - b); }
constexpr bool nonPositive(Value_t value) const
Returns whether value is smaller than or equal() to zero.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonNegative ( Value_t  value) const
inline

Returns whether value is larger than or equal() to zero.

Definition at line 97 of file RealComparisons.h.

Referenced by lar::util::RealComparisons< geo::Length_t >::nonSmaller(), and lar::util::RealComparisons< geo::Length_t >::within().

98  { return value >= -threshold; }
std::string value(boost::any const &)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonPositive ( Value_t  value) const
inline

Returns whether value is smaller than or equal() to zero.

Definition at line 101 of file RealComparisons.h.

Referenced by lar::util::RealComparisons< geo::Length_t >::nonGreater(), and lar::util::RealComparisons< geo::Length_t >::within().

102  { return value <= threshold; }
std::string value(boost::any const &)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonSmaller ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is greater than (or equal to) b.

Definition at line 109 of file RealComparisons.h.

Referenced by groupTPCsByRangeCoord(), and makeGridPartition().

110  { return nonNegative(a - b); }
constexpr bool nonNegative(Value_t value) const
Returns whether value is larger than or equal() to zero.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonZero ( Value_t  value) const
inline

Returns whether the value is farther from 0 than the threshold.

Definition at line 77 of file RealComparisons.h.

78  { return !zero(value); }
constexpr bool zero(Value_t value) const
Returns whether the value is no farther from 0 than the threshold.
std::string value(boost::any const &)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyGreater ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is strictly greater than b.

Definition at line 113 of file RealComparisons.h.

Referenced by makeGridPartition().

114  { return strictlyPositive(a - b); }
constexpr bool strictlyPositive(Value_t value) const
Returns whether value is smaller than zero beyond tolerance.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyNegative ( Value_t  value) const
inline

Returns whether value is larger than zero beyond tolerance.

Definition at line 89 of file RealComparisons.h.

Referenced by lar::util::RealComparisons< geo::Length_t >::strictlySmaller().

90  { return value < -threshold; }
std::string value(boost::any const &)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyPositive ( Value_t  value) const
inline

Returns whether value is smaller than zero beyond tolerance.

Definition at line 93 of file RealComparisons.h.

Referenced by lar::util::RealComparisons< geo::Length_t >::strictlyGreater().

94  { return value > threshold; }
std::string value(boost::any const &)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlySmaller ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is strictly smaller than b.

Definition at line 105 of file RealComparisons.h.

Referenced by makeGridPartition().

106  { return strictlyNegative(a - b); }
constexpr bool strictlyNegative(Value_t value) const
Returns whether value is larger than zero beyond tolerance.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::within ( Value_t  value,
Value_t  lower,
Value_t  upper 
) const
inline

Returns whether value is between the bounds (included)

Definition at line 121 of file RealComparisons.h.

Referenced by lar::util::RealComparisons< geo::Length_t >::withinSorted().

122  { return nonNegative(value - lower) && nonPositive(value - upper); }
std::string value(boost::any const &)
constexpr bool nonNegative(Value_t value) const
Returns whether value is larger than or equal() to zero.
constexpr bool nonPositive(Value_t value) const
Returns whether value is smaller than or equal() to zero.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::withinSorted ( Value_t  value,
Value_t  lower,
Value_t  upper 
) const
inline

Returns whether value is between bounds (included); bounds are sorted.

Definition at line 126 of file RealComparisons.h.

Referenced by geo::GeometryCore::PointWithinSegments(), and lar::util::RealComparisons< geo::Length_t >::within().

127  {
128  return (lower < upper)
129  ? within(value, lower, upper)
130  : within(value, upper, lower)
131  ;
132  } // sortedWithin
std::string value(boost::any const &)
constexpr bool within(Value_t value, Value_t lower, Value_t upper) const
Returns whether value is between the bounds (included)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::zero ( Value_t  value) const
inline

Member Data Documentation


The documentation for this struct was generated from the following file: