 |
Belle II Software
release-05-01-25
|
12 #include <tracking/trackFindingCDC/topology/EStereoKind.h>
14 #include <tracking/trackFindingCDC/utilities/FunctorTag.h>
23 namespace TrackFindingCDC {
26 using ISuperLayer =
signed short;
29 struct GetISuperLayer {
31 operator FunctorTag();
34 template<
class T,
class SFINAE = decltype(&T::getISuperLayer)>
37 return t.getISuperLayer();
41 template < class T, class SFINAE = decltype(std::declval<T>()->getISuperLayer()) >
42 auto operator()(
const T& t)
const -> decltype(t->getISuperLayer())
44 return t->getISuperLayer();
52 struct ISuperLayerUtil {
58 static const ISuperLayer
c_N = 9;
67 static const ISuperLayer
c_Invalid = SHRT_MIN;
70 static bool isInvalid(ISuperLayer iSuperLayer);
73 static bool isInCDC(ISuperLayer iSuperLayer);
76 static bool isLogical(ISuperLayer iSuperLayer);
85 static bool isAxial(ISuperLayer iSuperLayer);
104 static ISuperLayer
getFrom(
const T& t)
106 return GetISuperLayer()(t);
ISuperLayerUtil()=delete
Utility classes should not be instantiated.
static const ISuperLayer c_N
Constant representing the total number of cdc superlayers.
static ISuperLayer getFrom(const T &t)
Returns the superlayer of an object.
static EStereoKind getStereoKind(ISuperLayer iSuperLayer)
Returns the stereo kind of the super layer.
static const ISuperLayer c_Invalid
Constant making an invalid superlayer id.
static const ISuperLayer c_OuterVolume
Constant marking the subdetectors further away from the IP than the CDC.
static ISuperLayer getNextOutwards(ISuperLayer iSuperLayer)
Returns the super layer that is outside of the given super layer.
ISuperLayer operator()(const T &t) const
Returns the superlayer of an object.
static bool isLogical(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a logical superlayer - includes the logic ids for inner ...
static bool isInvalid(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a true cdc superlayer - excludes 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.
Abstract base class for different kinds of events.
static ISuperLayer getNextInwards(ISuperLayer iSuperLayer)
Returns the super layer that is inside 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 bool isAxial(ISuperLayer iSuperLayer)
Returns if the super layer with the given id is axial.
static bool isOuterVolume(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to the logical superlayer of the volumn outside the CDC.
static const ISuperLayer c_InnerVolume
Constant marking the subdetectors closer to the IP than the CDC.