diff --git a/Geometry/HGCalCommonData/interface/HGCalTypes.h b/Geometry/HGCalCommonData/interface/HGCalTypes.h index e7bb930d7e77b..547163b46033f 100644 --- a/Geometry/HGCalCommonData/interface/HGCalTypes.h +++ b/Geometry/HGCalCommonData/interface/HGCalTypes.h @@ -4,6 +4,7 @@ #include #include #include +#include #include class HGCalTypes { @@ -19,12 +20,12 @@ class HGCalTypes { static constexpr int32_t UnknownPosition = -1; static constexpr int32_t WaferCenter = 0; - static constexpr int32_t CornerCenterYp = 1; - static constexpr int32_t CornerCenterYm = 2; - static constexpr int32_t CornerCenterXp = 3; - static constexpr int32_t CornerCenterXm = 4; - static constexpr int32_t WaferCenterB = 5; - static constexpr int32_t WaferCenterR = 6; + static constexpr int32_t WaferCenterB = 1; + static constexpr int32_t CornerCenterYp = 2; + static constexpr int32_t CornerCenterYm = 3; + static constexpr int32_t WaferCenterR = 4; + static constexpr int32_t CornerCenterXp = 5; + static constexpr int32_t CornerCenterXm = 6; static constexpr int32_t WaferTypeUndefined = -1; static constexpr int32_t WaferHD120 = 0; @@ -139,6 +140,9 @@ class HGCalTypes { // LD vs HD and Fullvs Partial wafer static constexpr bool waferHD(int32_t type) { return ((type == WaferHD120) || (type == WaferHD200)); } static constexpr bool waferFull(int32_t type) { return (type == WaferFull); } + static std::string layerTypeX(int32_t type); + static std::string waferType(int32_t type); + static std::string waferTypeX(int32_t type); private: static constexpr int32_t facu_ = 1; @@ -152,6 +156,20 @@ class HGCalTypes { static constexpr int32_t faccell_ = 100; static constexpr int32_t faccelltype_ = 10000; static constexpr int32_t faccell6_ = 1000; + static constexpr int32_t layerType_[7] = {HGCalTypes::WaferCenter, + HGCalTypes::WaferCenterB, + HGCalTypes::WaferCenterR, + HGCalTypes::CornerCenterYp, + HGCalTypes::CornerCenterYm, + HGCalTypes::CornerCenterXp, + HGCalTypes::CornerCenterXm}; + static constexpr std::string layerTypes_[7] = { + "Center", "CenterB", "CenterYp", "CenterYm", "CenterR", "CenterXp", "CenterXm"}; + static constexpr std::string waferType_[4] = {"HD120", "LD200", "LD300", "HD200"}; + static constexpr std::string waferTypeX_[27] = { + "Full", "Five", "ChopTwo", "ChopTwoM", "Half", "Semi", "Semi2", "Three", "Half2", + "Five2", "Unknown10", "LDTop", "LDBottom", "LDLeft", "LDRight", "LDFive", "LDThree", "Unknown17", + "Unknown18", "Unknown19", "Unknown20", "HDTop", "HDBottom", "HDLeft", "HDRight", "HDFive", "Out"}; }; #endif diff --git a/Geometry/HGCalCommonData/src/HGCalTypes.cc b/Geometry/HGCalCommonData/src/HGCalTypes.cc index 5bcbdaec7a1cc..561cc23a4a919 100644 --- a/Geometry/HGCalCommonData/src/HGCalTypes.cc +++ b/Geometry/HGCalCommonData/src/HGCalTypes.cc @@ -40,10 +40,15 @@ int32_t HGCalTypes::getUnpackedCellType6(int id) { return (id / faccell6_); } int32_t HGCalTypes::getUnpackedCell6(int id) { return (id % faccell6_); } int32_t HGCalTypes::layerType(int type) { - static constexpr int32_t types[5] = {HGCalTypes::WaferCenter, - HGCalTypes::WaferCenterB, - HGCalTypes::CornerCenterYp, - HGCalTypes::CornerCenterYm, - HGCalTypes::WaferCenterR}; - return ((type >= 0 && type < 5) ? types[type] : HGCalTypes::WaferCenter); + return ((type >= 0) && (type < 7)) ? HGCalTypes::layerType_[type] : HGCalTypes::WaferCenter; +} + +std::string HGCalTypes::layerTypeX(int32_t type) { return layerTypes_[HGCalTypes::layerType(type)]; } + +std::string HGCalTypes::waferType(int32_t type) { + return (((type >= 0) && (type < 4)) ? HGCalTypes::waferType_[type] : "Undefined"); +} + +std::string HGCalTypes::waferTypeX(int32_t type) { + return (((type >= 0) && (type < 27)) ? HGCalTypes::waferTypeX_[type] : "UnknownXX"); }