File indexing completed on 2023-03-17 13:03:45
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 #include "DataFormats/ForwardDetId/interface/ETLDetId.h"
0011
0012 namespace MTDTopologyMode {
0013
0014 enum class Mode {
0015 undefined = 0,
0016 tile = 1,
0017 bar = 2,
0018 barzflat = 3,
0019 barphiflat = 4,
0020 btlv1etlv4 = 5,
0021 btlv1etlv5 = 6,
0022 btlv2etlv5 = 7
0023 };
0024
0025 Mode MTDStringToEnumParser(const std::string&);
0026
0027
0028
0029 inline BTLDetId::CrysLayout crysLayoutFromTopoMode(const int& topoMode) {
0030 if (topoMode < 0 || topoMode > static_cast<int>(Mode::btlv2etlv5)) {
0031 throw cms::Exception("UnknownMTDtopoMode") << "Unknown MTD topology mode " << topoMode;
0032 } else if (topoMode <= static_cast<int>(BTLDetId::CrysLayout::barphiflat)) {
0033 return static_cast<BTLDetId::CrysLayout>(topoMode);
0034 } else if (topoMode < static_cast<int>(Mode::btlv2etlv5)) {
0035 return BTLDetId::CrysLayout::barphiflat;
0036 } else {
0037 return BTLDetId::CrysLayout::v2;
0038 }
0039 }
0040
0041
0042
0043 inline ETLDetId::EtlLayout etlLayoutFromTopoMode(const int& topoMode) {
0044 if (topoMode < 0 || topoMode > static_cast<int>(Mode::btlv2etlv5)) {
0045 throw cms::Exception("UnknownMTDtopoMode") << "Unknown MTD topology mode " << topoMode;
0046 } else if (topoMode <= static_cast<int>(BTLDetId::CrysLayout::barphiflat)) {
0047 return ETLDetId::EtlLayout::tp;
0048 } else if (topoMode == static_cast<int>(Mode::btlv1etlv4)) {
0049 return ETLDetId::EtlLayout::v4;
0050 } else {
0051 return ETLDetId::EtlLayout::v5;
0052 }
0053 }
0054
0055 }
0056
0057 #endif