00001 #include "Conventions/Hardware.h" 00002 00003 #include <cctype> 00004 #include <string> 00005 #include <algorithm> 00006 using namespace std; 00007 00008 00009 static const char* names[] = { 00010 "Unknown", 00011 "Pmt8inch", 00012 "Pmt2inch", 00013 "Rpc", 00014 "Fee", 00015 "Fec", 00016 "Rot", 00017 "Rom", 00018 "HighVoltage", 00019 0 00020 }; 00021 00022 const char* DayaBay::Hardware::AsString(Hardware_t type) 00023 { 00024 if (type < 0 || type > kHighVoltage) return names[0]; 00025 return names[type]; 00026 } 00027 00028 DayaBay::Hardware::Hardware_t DayaBay::Hardware::FromString(const char* str) 00029 { 00030 string s = str; 00031 transform(s.begin(),s.end(),s.begin(),::toupper); 00032 00033 for (int ind=1; names[ind]; ++ind) { 00034 if (s == names[ind]) return (Hardware::Hardware_t)ind; 00035 } 00036 return kUnknown; 00037 } 00038 00039 DayaBay::HardwareId::~HardwareId() 00040 { 00041 } 00042 00043 bool DayaBay::operator<(const DayaBay::HardwareId& a, 00044 const DayaBay::HardwareId& b) 00045 { 00046 return a.fullPackedData() < b.fullPackedData(); 00047 } 00048 00049 std::ostream& DayaBay::operator<<(std::ostream& str, 00050 const DayaBay::HardwareId& hardwareId) 00051 { 00052 return str << DayaBay::Hardware::AsString(hardwareId.type()) 00053 << " " << hardwareId.id(); 00054 } 00055 00056 std::ostream& DayaBay::operator<<(std::ostream& str, 00057 const DayaBay::PmtHardwareId& pmtHrdwId) 00058 { 00059 return str << DayaBay::Hardware::AsString(pmtHrdwId.type()) 00060 << " " << pmtHrdwId.id(); 00061 } 00062 00063 std::ostream& DayaBay::operator<<(std::ostream& str, 00064 const DayaBay::RpcHardwareId& rpcHrdwId) 00065 { 00066 return str << DayaBay::Hardware::AsString(rpcHrdwId.type()) 00067 << " panel: " << rpcHrdwId.panelId() 00068 << " layer: " << rpcHrdwId.layer() 00069 << " strip: " << rpcHrdwId.strip(); 00070 } 00071 00072 std::ostream& DayaBay::operator<<(std::ostream& str, 00073 const DayaBay::FeeHardwareId& feeHrdwId) 00074 { 00075 return str << DayaBay::Hardware::AsString(feeHrdwId.type()) 00076 << " board: " << feeHrdwId.boardId() 00077 << " connector: " << feeHrdwId.connector(); 00078 } 00079 00080 std::ostream& DayaBay::operator<<(std::ostream& str, 00081 const DayaBay::FecHardwareId& fecHrdwId) 00082 { 00083 return str << DayaBay::Hardware::AsString(fecHrdwId.type()) 00084 << " board: " << fecHrdwId.boardId() 00085 << " connector: " << fecHrdwId.connector(); 00086 }