00001
00002
00003 #ifndef CALOGEOHELPERS_CALOSAMPLING_H
00004 #define CALOGEOHELPERS_CALOSAMPLING_H
00005
00010 #include <string>
00011
00012
00013 class CaloSampling {
00014 public:
00015
00016
00017
00018 enum CaloSample {
00019 #define CALOSAMPLING(NAME, ISBARREL, ISENDCAP) NAME,
00020 #include "CaloGeoHelpers/CaloSampling.def"
00021 #undef CALOSAMPLING
00022 };
00023
00024
00026 static unsigned int getNumberOfSamplings();
00027
00029 static unsigned int getSamplingPattern(const CaloSample s) {
00030 return (0x1U << s);
00031 }
00032
00034 static
00035 #if __cplusplus >= 201100
00036 constexpr
00037 #endif // C++11
00038 unsigned int barrelPattern();
00039
00041 static
00042 #if __cplusplus >= 201100
00043 constexpr
00044 #endif // C++11
00045 unsigned int endcapPattern();
00046
00051 static std::string getSamplingName (CaloSample theSample);
00052
00053
00058 static std::string getSamplingName (unsigned int theSample);
00059 };
00060
00061
00062 #if __cplusplus >= 201100
00063 constexpr
00064 #else
00065 inline
00066 #endif // C++11
00067 unsigned int CaloSampling::barrelPattern() {
00068 return (
00069 #define CALOSAMPLING(NAME, ISBARREL, ISENDCAP) (((unsigned)ISBARREL)<<NAME) |
00070 #include "CaloGeoHelpers/CaloSampling.def"
00071 #undef CALOSAMPLING
00072 0 );
00073 }
00074
00075 #if __cplusplus >= 201100
00076 constexpr
00077 #else
00078 inline
00079 #endif // C++11
00080 unsigned int CaloSampling::endcapPattern() {
00081 return (
00082 #define CALOSAMPLING(NAME, ISBARREL, ISENDCAP) (((unsigned)ISENDCAP)<<NAME) |
00083 #include "CaloGeoHelpers/CaloSampling.def"
00084 #undef CALOSAMPLING
00085 0 );
00086 }
00087
00088 #endif