HepMC3 event record library
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
GenericFeature< Feature_type > Class Template Reference

GenericFeature defines the Feature interface GenericFeature is not intended to be used directly. The derived Feature class and its specialisations should be used. More...

#include <Feature.h>

+ Inheritance diagram for GenericFeature< Feature_type >:

Public Types

using Evaluator_type = std::function< Feature_type(ConstGenParticlePtr)>
 
using EvaluatorPtr = std::shared_ptr< Evaluator_type >
 

Public Member Functions

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 Member Functions

 GenericFeature (Evaluator_type functor)
 Hide the constructor so no one can use GenericFeature directly. More...
 
 GenericFeature (const GenericFeature &copy)
 Hide the copy constructor. More...
 

Protected Attributes

EvaluatorPtr m_internal
 

Detailed Description

template<typename Feature_type>
class HepMC3::GenericFeature< Feature_type >

GenericFeature defines the Feature interface GenericFeature is not intended to be used directly. The derived Feature class and its specialisations should be used.

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 56 of file Feature.h.

Constructor & Destructor Documentation

GenericFeature ( Evaluator_type  functor)
inlineprotected

Hide the constructor so no one can use GenericFeature directly.

Definition at line 112 of file Feature.h.

GenericFeature ( const GenericFeature< Feature_type > &  copy)
inlineprotected

Hide the copy constructor.

Definition at line 115 of file Feature.h.

Member Function Documentation

virtual Filter operator!= ( Feature_type  value) const
inlinevirtual

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 104 of file Feature.h.

Feature_type operator() ( ConstGenParticlePtr  input) const
inline

access the underlying feature value

Definition at line 64 of file Feature.h.

Filter operator< ( Feature_type  value) const
inline

less than operator

Returns
Filter function

Definition at line 76 of file Feature.h.

Filter operator<= ( Feature_type  value) const
inline

less than or equals operator

Returns
Filter function

Definition at line 90 of file Feature.h.

virtual Filter operator== ( Feature_type  value) const
inlinevirtual

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 97 of file Feature.h.

Filter operator> ( Feature_type  value) const
inline

greater than operator

Returns
Filter function

Definition at line 70 of file Feature.h.

Filter operator>= ( Feature_type  value) const
inline

greater than or equals operator

Returns
Filter function

Definition at line 83 of file Feature.h.


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