Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:49:48

0001 #include "Geometry/HGCalCommonData/interface/HGCalGeometryMode.h"
0002 #include "DetectorDescription/Core/interface/DDutils.h"
0003 
0004 template <>
0005 HGCalStringToEnumParser<HGCalGeometryMode::GeometryMode>::HGCalStringToEnumParser() {
0006   enumMap["HGCalGeometryMode::Square"] = HGCalGeometryMode::Square;
0007   enumMap["HGCalGeometryMode::Hexagon"] = HGCalGeometryMode::Hexagon;
0008   enumMap["HGCalGeometryMode::HexagonFull"] = HGCalGeometryMode::HexagonFull;
0009   enumMap["HGCalGeometryMode::Hexagon8"] = HGCalGeometryMode::Hexagon8;
0010   enumMap["HGCalGeometryMode::Hexagon8Full"] = HGCalGeometryMode::Hexagon8Full;
0011   enumMap["HGCalGeometryMode::Trapezoid"] = HGCalGeometryMode::Trapezoid;
0012   enumMap["HGCalGeometryMode::Hexagon8File"] = HGCalGeometryMode::Hexagon8File;
0013   enumMap["HGCalGeometryMode::TrapezoidFile"] = HGCalGeometryMode::TrapezoidFile;
0014   enumMap["HGCalGeometryMode::Hexagon8Module"] = HGCalGeometryMode::Hexagon8Module;
0015   enumMap["HGCalGeometryMode::TrapezoidModule"] = HGCalGeometryMode::TrapezoidModule;
0016   enumMap["HGCalGeometryMode::Hexagon8Cassette"] = HGCalGeometryMode::Hexagon8Cassette;
0017   enumMap["HGCalGeometryMode::TrapezoidCassette"] = HGCalGeometryMode::TrapezoidCassette;
0018   enumMap["HGCalGeometryMode::Hexagon8CalibCell"] = HGCalGeometryMode::Hexagon8CalibCell;
0019 }
0020 
0021 template <>
0022 HGCalStringToEnumParser<HGCalGeometryMode::WaferMode>::HGCalStringToEnumParser() {
0023   enumMap["HGCalGeometryMode::Polyhedra"] = HGCalGeometryMode::Polyhedra;
0024   enumMap["HGCalGeometryMode::ExtrudedPolygon"] = HGCalGeometryMode::ExtrudedPolygon;
0025 }
0026 
0027 HGCalGeometryMode::GeometryMode HGCalGeometryMode::getGeometryMode(const char* s, const DDsvalues_type& sv) {
0028   DDValue val(s);
0029   if (DDfetch(&sv, val)) {
0030     const std::vector<std::string>& fvec = val.strings();
0031     if (fvec.empty()) {
0032       throw cms::Exception("HGCalGeom") << "getGeometryMode::Failed to get " << s << " tag.";
0033     }
0034 
0035     HGCalStringToEnumParser<HGCalGeometryMode::GeometryMode> eparser;
0036     HGCalGeometryMode::GeometryMode result = (HGCalGeometryMode::GeometryMode)eparser.parseString(fvec[0]);
0037     return result;
0038   } else {
0039     throw cms::Exception("HGCalGeom") << "getGeometryMode::Failed to fetch " << s << " tag";
0040   }
0041 };
0042 
0043 HGCalGeometryMode::GeometryMode HGCalGeometryMode::getGeometryMode(const std::string& s) {
0044   HGCalStringToEnumParser<HGCalGeometryMode::GeometryMode> eparser;
0045   HGCalGeometryMode::GeometryMode result = (HGCalGeometryMode::GeometryMode)eparser.parseString(s);
0046   return result;
0047 };
0048 
0049 HGCalGeometryMode::WaferMode HGCalGeometryMode::getGeometryWaferMode(const char* s, const DDsvalues_type& sv) {
0050   DDValue val(s);
0051   if (DDfetch(&sv, val)) {
0052     const std::vector<std::string>& fvec = val.strings();
0053     if (fvec.empty()) {
0054       throw cms::Exception("HGCalGeom") << "getGeometryWaferMode::Failed to get " << s << " tag.";
0055     }
0056 
0057     HGCalStringToEnumParser<HGCalGeometryMode::WaferMode> eparser;
0058     HGCalGeometryMode::WaferMode result = (HGCalGeometryMode::WaferMode)eparser.parseString(fvec[0]);
0059     return result;
0060   } else {
0061     throw cms::Exception("HGCalGeom") << "getGeometryWaferMode::Failed to fetch " << s << " tag";
0062   }
0063 };
0064 
0065 HGCalGeometryMode::WaferMode HGCalGeometryMode::getGeometryWaferMode(std::string& s) {
0066   HGCalStringToEnumParser<HGCalGeometryMode::WaferMode> eparser;
0067   HGCalGeometryMode::WaferMode result = (HGCalGeometryMode::WaferMode)eparser.parseString(s);
0068   return result;
0069 };