10#include <tracking/trackFindingCDC/topology/EStereoKind.h>
12#include <tracking/trackFindingCDC/utilities/FunctorTag.h>
21 namespace TrackFindingCDC {
24 using ISuperLayer =
signed short;
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();
56 static const ISuperLayer
c_N = 9;
68 static bool isInvalid(ISuperLayer iSuperLayer);
71 static bool isInCDC(ISuperLayer iSuperLayer);
74 static bool isLogical(ISuperLayer iSuperLayer);
83 static bool isAxial(ISuperLayer iSuperLayer);
Abstract base class for different kinds of events.
Tag class to facilitate marking of class as a functor in the sense of this code.
Generic functor to get the superlayer id from an object.
ISuperLayer operator()(const T &t) const
Returns the superlayer of an object.
This is a utility class for the free ISuperLayer type.
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.