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

Expose GenericFeature interface to derived Feature class. More...

#include <Feature.h>

+ Inheritance diagram for Feature< Feature_type, Dummy >:
+ Collaboration diagram for Feature< Feature_type, Dummy >:

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 &copy)
 
Feature< Feature_type > abs () 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
 

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

Member Function Documentation

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

Feature_type operator() ( ConstGenParticlePtr  input) const
inlineinherited

access the underlying feature value

Definition at line 64 of file Feature.h.

Filter operator< ( Feature_type  value) const
inlineinherited

less than operator

Returns
Filter function

Definition at line 76 of file Feature.h.

Filter operator<= ( Feature_type  value) const
inlineinherited

less than or equals operator

Returns
Filter function

Definition at line 90 of file Feature.h.

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

Filter operator> ( Feature_type  value) const
inlineinherited

greater than operator

Returns
Filter function

Definition at line 70 of file Feature.h.

Filter operator>= ( Feature_type  value) const
inlineinherited

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: