HepMC3 event record library: Feature< Feature_type, Dummy > Class Template Reference

HepMC3 event record library

Public Types | Public Member Functions | Protected Attributes
Feature< Feature_type, Dummy > Class Template Reference

## Detailed Description

template<typename Feature_type, typename Dummy = void>
class HepMC3::Feature< Feature_type, Dummy >

Expose GenericFeature interface to derived Feature class.

This will get used for generic class types that aren't integral or floating point types.

A Feature wraps a function object that can extract a generic Feature_type from a ConstGenParticlePtr. Usually the Feature_type would be something like int (e.g. status) or double (e.g. pT), but it could in principle be any attribute of a particle so long as there are well defined <, <=, >, >=, == and != operators for that attribute, as well as an abs function.

Once a Feature is defined, you can obtain Filters that select Particles according to that Feature by e.g. Feature<int> status([](ConstGenParticlePtr p)->int{return p->status();}); bool is_stable = (status == 1)(p); Filter is_beam = (status == 4); bool beam = is_beam(p);

An abs function is also defined, so abs(Feature) works as you'd expect, e.g. Feature<double> rapidity([](ConstGenParticlePtr p)->double{return p->momentum().rap();}); Filter rapCut = abs(rapidity) < 2.5;

Please also see the Selector interface, which defines an abstract interface to Feature that is free of the template params and also includes some standard Features such as

Selector::STATUS; Selector::PDG_ID; Selector::PT; Selector::RAPIDITY;

Definition at line 170 of file Feature.h.

`#include <Feature.h>`

Inheritance diagram for Feature< Feature_type, Dummy >:
[legend]
Collaboration diagram for Feature< Feature_type, Dummy >:
[legend]

## Public Types
using | Evaluator_type = std::function<Feature_type(ConstGenParticlePtr)>
| evaluator type
using | EvaluatorPtr = std::shared_ptr<Evaluator_type>
| shared pointer for evaluator type

## Public Member Functions
| Feature (Evaluator_type functor)
| Feature.
| Feature (const Feature &copy)
| Copy.
| Feature (Feature &&)=default
| Move constructor.
Feature & | operator= (const Feature &)=default
| =
Feature & | operator= (Feature &&)=default
| =
Feature< Feature_type > | abs () const
| Abs function.
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
| internal copy of func for evaluation on the heap so will persist in resulting Filters even if parent Feature object was destroyed

## Member Typedef Documentation

## ◆ Evaluator_type

template<typename Feature_type>

using Evaluator_type = std::function<Feature_type(ConstGenParticlePtr)>
| inherited

evaluator type

Definition at line 62 of file Feature.h.

## ◆ EvaluatorPtr

template<typename Feature_type>

using EvaluatorPtr = std::shared_ptr<Evaluator_type>
| inherited

shared pointer for evaluator type

Definition at line 64 of file Feature.h.

## Constructor & Destructor Documentation

## ◆ Feature() [1/3]

template<typename Feature_type, typename Dummy = void>

Feature | ( | Evaluator_type | functor | ) |
| inline

Feature.

Definition at line 185 of file Feature.h.

References GenericFeature< Feature_type >::GenericFeature().

## ◆ Feature() [2/3]

template<typename Feature_type, typename Dummy = void>

Feature | ( | const Feature< Feature_type, Dummy > & | copy | ) |
| inline

Copy.

Definition at line 187 of file Feature.h.

References Feature(), and GenericFeature< Feature_type >::GenericFeature().

## ◆ Feature() [3/3]

template<typename Feature_type, typename Dummy = void>

Feature | ( | Feature< Feature_type, Dummy > && |  | ) |
| default

Move constructor.

References Feature().

## Member Function Documentation

## ◆ abs()

template<typename Feature_type, typename Dummy = void>

Feature< Feature_type > abs | ( |  | ) | const
| inline

Abs function.

Definition at line 196 of file Feature.h.

References Feature(), and GenericFeature< Feature_type >::m_internal.

## ◆ operator!=()

template<typename Feature_type>

virtual Filter operator!= | ( | Feature_type | value | ) | const
| inlinevirtualinherited

inequality operator

Returns
  Filter function

Reimplemented in Feature< Feature_type, typename std::enable_if< std::is_floating_point< Feature_type >::value, void >::type >.

Definition at line 107 of file Feature.h.

References m_internal.

## ◆ operator()()

template<typename Feature_type>

Feature_type operator() | ( | ConstGenParticlePtr | input | ) | const
| inlineinherited

access the underlying feature value

Definition at line 67 of file Feature.h.

References m_internal.

## ◆ operator<()

template<typename Feature_type>

Filter operator< | ( | Feature_type | value | ) | const
| inlineinherited

less than operator

Returns
  Filter function

Definition at line 79 of file Feature.h.

References m_internal.

## ◆ operator<=()

template<typename Feature_type>

Filter operator<= | ( | Feature_type | value | ) | const
| inlineinherited

less than or equals operator

Returns
  Filter function

Definition at line 93 of file Feature.h.

References m_internal.

## ◆ operator=() [1/2]

template<typename Feature_type, typename Dummy = void>

Feature & operator= | ( | const Feature< Feature_type, Dummy > & |  | ) |
| default

=

References Feature().

## ◆ operator=() [2/2]

template<typename Feature_type, typename Dummy = void>

Feature & operator= | ( | Feature< Feature_type, Dummy > && |  | ) |
| default

=

References Feature().

## ◆ operator==()

template<typename Feature_type>

virtual Filter operator== | ( | Feature_type | value | ) | const
| inlinevirtualinherited

equality operator

Returns
  Filter function

Reimplemented in Feature< Feature_type, typename std::enable_if< std::is_floating_point< Feature_type >::value, void >::type >.

Definition at line 100 of file Feature.h.

References m_internal.

## ◆ operator>()

template<typename Feature_type>

Filter operator> | ( | Feature_type | value | ) | const
| inlineinherited

greater than operator

Returns
  Filter function

Definition at line 73 of file Feature.h.

References m_internal.

## ◆ operator>=()

template<typename Feature_type>

Filter operator>= | ( | Feature_type | value | ) | const
| inlineinherited

greater than or equals operator

Returns
  Filter function

Definition at line 86 of file Feature.h.

References m_internal.

## Field Documentation

## ◆ m_internal

template<typename Feature_type>

EvaluatorPtr m_internal
| protectedinherited

internal copy of func for evaluation on the heap so will persist in resulting Filters even if parent Feature object was destroyed

Definition at line 130 of file Feature.h.

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

- Feature.h