File indexing completed on 2025-03-23 15:57:50
0001 #ifndef Geometry_MTDCommonData_MTDTopologyMode_H
0002 #define Geometry_MTDCommonData_MTDTopologyMode_H
0003
0004 #include "FWCore/Utilities/interface/Exception.h"
0005 #include <map>
0006 #include <string>
0007 #include <algorithm>
0008
0009 #include "DataFormats/ForwardDetId/interface/BTLDetId.h"
0010
0011 namespace MTDTopologyMode {
0012
0013 enum class Mode {
0014 undefined = 0,
0015 tile = 1,
0016 bar = 2,
0017 barzflat = 3,
0018 barphiflat = 4,
0019 btlv1etlv4 = 5,
0020 btlv1etlv5 = 6,
0021 btlv2etlv5 = 7,
0022 btlv3etlv8 = 8,
0023 btlv4etlv8 = 9,
0024 btlv4etlv9 = 10,
0025 btlv4etlv10 = 11
0026 };
0027
0028 enum class EtlLayout { v5 = 3, v8 = 4, v9 = 5, v10 = 6 };
0029
0030 Mode MTDStringToEnumParser(const std::string&);
0031
0032
0033
0034 inline BTLDetId::CrysLayout crysLayoutFromTopoMode(const int& topoMode) {
0035 switch (topoMode) {
0036 case static_cast<int>(Mode::btlv4etlv10):
0037 return BTLDetId::CrysLayout::v4;
0038 break;
0039 case static_cast<int>(Mode::btlv4etlv9):
0040 return BTLDetId::CrysLayout::v4;
0041 break;
0042 case static_cast<int>(Mode::btlv4etlv8):
0043 return BTLDetId::CrysLayout::v4;
0044 break;
0045 case static_cast<int>(Mode::btlv3etlv8):
0046 return BTLDetId::CrysLayout::v3;
0047 break;
0048 case static_cast<int>(Mode::btlv2etlv5):
0049 return BTLDetId::CrysLayout::v2;
0050 break;
0051 default:
0052 throw cms::Exception("UnknownMTDtopoMode") << "Unknown MTD topology mode :( " << topoMode;
0053 break;
0054 }
0055 }
0056
0057
0058
0059 inline EtlLayout etlLayoutFromTopoMode(const int& topoMode) {
0060 switch (topoMode) {
0061 case static_cast<int>(Mode::btlv4etlv10):
0062 return EtlLayout::v10;
0063 break;
0064 case static_cast<int>(Mode::btlv4etlv9):
0065 return EtlLayout::v9;
0066 break;
0067 case static_cast<int>(Mode::btlv4etlv8):
0068 return EtlLayout::v8;
0069 break;
0070 case static_cast<int>(Mode::btlv3etlv8):
0071 return EtlLayout::v8;
0072 break;
0073 case static_cast<int>(Mode::btlv2etlv5):
0074 return EtlLayout::v5;
0075 break;
0076 default:
0077 throw cms::Exception("UnknownMTDtopoMode") << "Unknown MTD topology mode :( " << topoMode;
0078 break;
0079 }
0080 }
0081
0082 }
0083
0084 #endif