HepMC3 event record library
|
Specialisation of Feature for integral types. More...
#include <Feature.h>
Public Types | |
using | Evaluator_type = std::function< Feature_type(ConstGenParticlePtr)> |
using | EvaluatorPtr = std::shared_ptr< Evaluator_type > |
Public Member Functions | |
Feature (Evaluator_type functor) | |
Feature (const Feature ©) | |
Feature< Feature_type > | abs () const |
Filter | operator> (double value) const |
Filter | operator< (double value) const |
Filter | operator== (double value) const |
Filter | operator>= (double value) const |
Filter | operator<= (double value) const |
Filter | operator!= (double value) const |
Feature_type | operator() (ConstGenParticlePtr input) const |
access the underlying feature value More... | |
Filter | operator> (Feature_type value) const |
greater than operator More... | |
Filter | operator< (Feature_type value) const |
less than operator More... | |
Filter | operator>= (Feature_type value) const |
greater than or equals operator More... | |
Filter | operator<= (Feature_type value) const |
less than or equals operator More... | |
virtual Filter | operator== (Feature_type value) const |
equality operator More... | |
virtual Filter | operator!= (Feature_type value) const |
inequality operator More... | |
Protected Attributes | |
EvaluatorPtr | m_internal |
Specialisation of Feature for integral types.
It is a valid operator to compare an int to a float, but the generic version of these operators in the base class will first cast input float to an int, then compare that. In some cases the comparison will be incorrect because of rounding the float. e.g. int x=5; float y=5.5; bool result = x<y; would be wrong because y first gets converted to int 5.
To solve this, we provide specialised comparison operators for integral type and double. Note that the opposite specialisation in which the Feature_type is floating_point is not necessary
inequality operator
Reimplemented in Feature< Feature_type, typename std::enable_if< std::is_floating_point< Feature_type >::value, void >::type >.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinevirtualinherited |
equality operator
Reimplemented in Feature< Feature_type, typename std::enable_if< std::is_floating_point< Feature_type >::value, void >::type >.
|
inlineinherited |
|
inlineinherited |