HepMC3 event record library
Feature< Feature_type, typename std::enable_if< std::is_integral< Feature_type >::value, void >::type > Class Template Reference

Detailed Description

template<typename Feature_type>
class HepMC3::Feature< Feature_type, typename std::enable_if< std::is_integral< Feature_type >::value, void >::type >

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

Definition at line 204 of file Feature.h.

#include <Feature.h>

Inheritance diagram for Feature< Feature_type, typename std::enable_if< std::is_integral< Feature_type >::value, void >::type >:
Collaboration diagram for Feature< Feature_type, typename std::enable_if< std::is_integral< Feature_type >::value, void >::type >:

Public Types

using Evaluator_type
using EvaluatorPtr

Public Member Functions

 Feature (Evaluator_type functor)
 Feature (const Feature &copy)
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
Filter operator> (Feature_type value) const
 greater than operator
Filter operator< (Feature_type value) const
 less than operator
Filter operator>= (Feature_type value) const
 greater than or equals operator
Filter operator<= (Feature_type value) const
 less than or equals operator
virtual Filter operator== (Feature_type value) const
 equality operator
virtual Filter operator!= (Feature_type value) const
 inequality operator

Protected Attributes

EvaluatorPtr m_internal

Member Typedef Documentation

◆ Evaluator_type

using Evaluator_type

Definition at line 60 of file Feature.h.

◆ EvaluatorPtr

using EvaluatorPtr

Definition at line 61 of file Feature.h.

Constructor & Destructor Documentation

◆ Feature() [1/2]

template<typename Feature_type>
Feature ( Evaluator_type functor)
inline

Definition at line 221 of file Feature.h.

◆ Feature() [2/2]

template<typename Feature_type>
Feature ( const Feature< Feature_type, typename std::enable_if< std::is_integral< Feature_type >::value, void >::type > & copy)
inline

Definition at line 222 of file Feature.h.

Member Function Documentation

◆ abs()

template<typename Feature_type>
Feature< Feature_type > abs ( ) const
inline

Definition at line 224 of file Feature.h.

◆ operator!=() [1/2]

template<typename Feature_type>
Filter operator!= ( double value) const
inline

Definition at line 252 of file Feature.h.

◆ operator!=() [2/2]

virtual Filter operator!= ( Feature_type value) const
inlinevirtual

inequality operator

Returns
Filter function

Definition at line 104 of file Feature.h.

◆ operator()()

Feature_type operator() ( ConstGenParticlePtr input) const
inline

access the underlying feature value

Definition at line 64 of file Feature.h.

◆ operator<() [1/2]

template<typename Feature_type>
Filter operator< ( double value) const
inline

Definition at line 235 of file Feature.h.

◆ operator<() [2/2]

Filter operator< ( Feature_type value) const
inline

less than operator

Returns
Filter function

Definition at line 76 of file Feature.h.

◆ operator<=() [1/2]

template<typename Feature_type>
Filter operator<= ( double value) const
inline

Definition at line 250 of file Feature.h.

◆ operator<=() [2/2]

Filter operator<= ( Feature_type value) const
inline

less than or equals operator

Returns
Filter function

Definition at line 90 of file Feature.h.

◆ operator==() [1/2]

template<typename Feature_type>
Filter operator== ( double value) const
inline

Definition at line 240 of file Feature.h.

◆ operator==() [2/2]

virtual Filter operator== ( Feature_type value) const
inlinevirtual

equality operator

Returns
Filter function

Definition at line 97 of file Feature.h.

◆ operator>() [1/2]

template<typename Feature_type>
Filter operator> ( double value) const
inline

Definition at line 230 of file Feature.h.

◆ operator>() [2/2]

Filter operator> ( Feature_type value) const
inline

greater than operator

Returns
Filter function

Definition at line 70 of file Feature.h.

◆ operator>=() [1/2]

template<typename Feature_type>
Filter operator>= ( double value) const
inline

Definition at line 248 of file Feature.h.

◆ operator>=() [2/2]

Filter operator>= ( Feature_type value) const
inline

greater than or equals operator

Returns
Filter function

Definition at line 83 of file Feature.h.

Field Documentation

◆ m_internal

EvaluatorPtr m_internal
protected

Definition at line 120 of file Feature.h.


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