10#include <cdc/topology/EStereoKind.h>
12#include <tracking/trackingUtilities/utilities/FunctorTag.h>
32 template<
class T,
class SFINAE = decltype(&T::getISuperLayer)>
35 return t.getISuperLayer();
39 template < class T, class SFINAE = decltype(std::declval<T>()->getISuperLayer()) >
40 auto operator()(
const T& t)
const ->
decltype(t->getISuperLayer())
42 return t->getISuperLayer();
EStereoKind
Type for the stereo property of the wire.
signed short ISuperLayer
The type of the layer and superlayer ids.
Abstract base class for different kinds of events.
Generic functor to get the superlayer id from an object.
ISuperLayer operator()(const T &t) const
Returns the superlayer of an object.
static const ISuperLayer c_Invalid
Constant making an invalid superlayer id.
static bool isAxial(ISuperLayer iSuperLayer)
Returns if the super layer with the given id is axial.
static const ISuperLayer c_N
Constant representing the total number of cdc superlayers.
static ISuperLayer getNextInwards(ISuperLayer iSuperLayer)
Returns the super layer that is inside of the given super layer.
static bool isInvalid(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a true cdc superlayer - excludes the logic ids for inner...
static const ISuperLayer c_InnerVolume
Constant marking the subdetectors closer to the IP than the CDC.
ISuperLayerUtil()=delete
Utility classes should not be instantiated.
static bool isLogical(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a logical superlayer - includes the logic ids for inner ...
static bool isInnerVolume(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to the logical superlayer of the column inside the CDC.
static ISuperLayer getNextOutwards(ISuperLayer iSuperLayer)
Returns the super layer that is outside of the given super layer.
static bool isInCDC(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a true cdc superlayer - excludes the logic ids for inner...
static const ISuperLayer c_OuterVolume
Constant marking the subdetectors further away from the IP than the CDC.
static EStereoKind getStereoKind(ISuperLayer iSuperLayer)
Returns the stereo kind of the super layer.
static ISuperLayer getFrom(const T &t)
Returns the superlayer of an object.
static bool isOuterVolume(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to the logical superlayer of the volume outside the CDC.
Tag class to facilitate marking of class as a functor in the sense of this code.