Back to home page

Project CMSSW displayed by LXR

 
 

    


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   /** Returns BTLDetId::CrysLayout as a function of topology mode (to accomodate TDR/post TDR ETL scenarios). **/
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   /** Returns ETLDetId::EtlLayout as a function of topology mode **/
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 }  // namespace MTDTopologyMode
0056 
0057 #endif  // Geometry_MTDCommonData_MTDTopologyMode_H