11#include <tracking/trackFindingVXD/filterMap/filterFramework/SelectionVariable.h>
12#include <tracking/trackFindingVXD/filterMap/filterFramework/Range.h>
13#include <tracking/trackFindingVXD/filterMap/filterFramework/LowerBoundedSet.h>
14#include <tracking/trackFindingVXD/filterMap/filterFramework/UpperBoundedSet.h>
15#include <tracking/trackFindingVXD/filterMap/filterFramework/SingleElementSet.h>
17#include <tracking/trackFindingVXD/filterMap/filterFramework/ClosedLowerBoundedSet.h>
18#include <tracking/trackFindingVXD/filterMap/filterFramework/ClosedUpperBoundedSet.h>
19#include <tracking/trackFindingVXD/filterMap/filterFramework/ClosedRange.h>
21#include <tracking/trackFindingVXD/filterMap/filterFramework/VoidObserver.h>
22#include <tracking/trackFindingVXD/filterMap/filterFramework/Filter.h>
40 template <
class Var,
class Arithmetic,
typename ... types>
46 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value&&
47 std::is_arithmetic<Arithmetic>::value,
63 template <
class Var,
class Arithmetic,
typename ... types>
69 std::is_base_of< SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value&&
70 std::is_arithmetic<Arithmetic>::value,
85 template <
class Var,
class Arithmetic>
88 typename std::enable_if <
89 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
90 && std::is_arithmetic<Arithmetic>::value,
91 Filter<Var, LowerBoundedSet<Arithmetic>, VoidObserver> >::type
105 template <
class Var,
class Arithmetic>
108 typename std::enable_if <
109 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
110 && std::is_arithmetic<Arithmetic>::value,
111 Filter<Var, ClosedLowerBoundedSet<Arithmetic>, VoidObserver> >::type
125 template <
class Var,
class Arithmetic>
128 typename std::enable_if <
129 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
130 && std::is_arithmetic<Arithmetic>::value,
131 Filter<Var, UpperBoundedSet<Arithmetic>, VoidObserver> >::type
145 template <
class Var,
class Arithmetic>
148 typename std::enable_if <
149 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
150 && std::is_arithmetic<Arithmetic>::value,
151 Filter<Var, ClosedUpperBoundedSet<Arithmetic>, VoidObserver> >::type
165 template <
class Var,
class Arithmetic>
168 typename std::enable_if <
169 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
170 && std::is_arithmetic<Arithmetic>::value,
172 operator < (Arithmetic lowerBound,
const Var&)
185 template <
class Var,
class Arithmetic>
188 typename std::enable_if <
189 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
190 && std::is_arithmetic<Arithmetic>::value,
205 template <
class Var,
class Val>
208 typename std::enable_if
209 <std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value,
210 Filter<Var, SingleElementSet<Val>, VoidObserver> >::type
225 template <
class Var,
class Val>
228 typename std::enable_if
229 <std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value,
230 Filter<Var, SingleElementSet<Val>, VoidObserver> >::type
248 template <
class Var,
class ArithmeticLower,
class ArithmeticUpper,
class Observer>
251 typename std::enable_if <
252 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
253 && std::is_arithmetic<ArithmeticLower>::value
254 && std::is_arithmetic<ArithmeticUpper>::value,
274 template <
class Var,
class ArithmeticLower,
class ArithmeticUpper,
class Observer>
277 typename std::enable_if <
278 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
279 && std::is_arithmetic<ArithmeticLower>::value
280 && std::is_arithmetic<ArithmeticUpper>::value,
281 Filter<Var, Range<ArithmeticLower, ArithmeticUpper>, Observer >>::type
300 template <
class Var,
class ArithmeticLower,
class ArithmeticUpper,
class Observer>
303 typename std::enable_if <
304 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
305 && std::is_arithmetic<ArithmeticLower>::value
306 && std::is_arithmetic<ArithmeticUpper>::value,
326 template <
class Var,
class ArithmeticLower,
class ArithmeticUpper,
class Observer>
329 typename std::enable_if <
330 std::is_base_of<SelectionVariable<typename Var::argumentType, Var::c_Nargs, typename Var::variableType>, Var>::value
331 && std::is_arithmetic<ArithmeticLower>::value
332 && std::is_arithmetic<ArithmeticUpper>::value,
333 Filter<Var, ClosedRange<ArithmeticLower, ArithmeticUpper>, Observer >>::type
Represents a closed lower bounded set of arithmetic types.
Represents a closed set of arithmetic types.
Represents an upper bounded set of arithmetic types.
This class is used to select pairs, triplets... of objects.
Represents a lower bounded set of arithmetic types.
Observer base class which can be used to evaluate the VXDTF2's Filters.
Represents a range of arithmetic types.
Represents a set containing a single element;.
Represents an upper bounded set of arithmetic types.
The most CPU efficient Observer for the VXDTF filter tools (even if useless).
bool operator==(const DecayNode &node1, const DecayNode &node2)
Compare two Decay Nodes: They are equal if All daughter decay nodes are equal or one of the daughter ...
bool operator<(ExpRun a, ExpRun b)
less than for ExpRun
std::map< ExpRun, std::pair< double, double > > filter(const std::map< ExpRun, std::pair< double, double > > &runs, double cut, std::map< ExpRun, std::pair< double, double > > &runsRemoved)
filter events to remove runs shorter than cut, it stores removed runs in runsRemoved
std::enable_if< std::is_base_of< SelectionVariable< typenameVar::argumentType, Var::c_Nargs, typenameVar::variableType >, Var >::value &&std::is_arithmetic< Arithmetic >::value, Filter< Var, ClosedUpperBoundedSet< Arithmetic >, VoidObserver > >::type operator<=(const Var &, Arithmetic upperBound)
Creates a Filters with a closed upper bound <= on the provided variable Var <= lowerBound.
std::enable_if< std::is_base_of< SelectionVariable< typenameVar::argumentType, Var::c_Nargs, typenameVar::variableType >, Var >::value &&std::is_arithmetic< Arithmetic >::value, Filter< Var, LowerBoundedSet< Arithmetic >, VoidObserver > >::type operator>(const Var &, Arithmetic lowerBound)
Creates a Filters with an lower bound > on the provided variable Var > lowerBound.
std::enable_if< std::is_base_of< SelectionVariable< typenameVar::argumentType, Var::c_Nargs, typenameVar::variableType >, Var >::value &&std::is_arithmetic< Arithmetic >::value, Filter< Var, ClosedLowerBoundedSet< Arithmetic >, VoidObserver > >::type operator>=(const Var &, Arithmetic lowerBound)
Creates a Filters with a closed lower bound >= on the provided variable Var >= lowerBound.
Abstract base class for different kinds of events.