00001 #include "Conventions/Electronics.h" 00002 00003 DayaBay::ElecChannelId::ElecChannelId(int board, int connector, 00004 Site::Site_t site, 00005 DetectorId::DetectorId_t det) 00006 : Detector(site,det) 00007 { 00008 m_data += (0x000000ff & connector) | (0x000000ff & board)<<8; 00009 } 00010 00011 00012 DayaBay::ElecChannelId::~ElecChannelId() {} 00013 00014 00015 int DayaBay::ElecChannelId::board() const 00016 { 00017 return (m_data & 0x0000ff00)>>8; 00018 } 00019 00020 int DayaBay::ElecChannelId::connector() const 00021 { 00022 return (m_data & 0x000000ff); 00023 } 00024 00025 DayaBay::FeeChannelId::~FeeChannelId() 00026 { 00027 } 00028 00029 DayaBay::FeeChannelId DayaBay::FeeChannelId::boardId() const 00030 { 00031 return DayaBay::FeeChannelId(m_data & 0xffffff00); 00032 } 00033 00034 DayaBay::FadcChannelId::~FadcChannelId() 00035 { 00036 } 00037 00038 DayaBay::FadcChannelId DayaBay::FadcChannelId::boardId() const 00039 { 00040 return DayaBay::FeeChannelId(m_data & 0xffffff00); 00041 } 00042 00043 int DayaBay::FadcChannelId::outputId() const 00044 { 00045 if (connector()>16) return 0; 00046 int board = m_data & 0xffffff00; 00047 int connector = m_data & 0x000000ff; 00048 return ( board | ( 16 + (connector+1)/2) ); 00049 } 00050 00051 int DayaBay::FadcChannelId::firstInputId() const 00052 { 00053 if (connector()<=16) return 0; 00054 int board = m_data & 0xffffff00; 00055 int connector = m_data & 0x000000ff; 00056 return ( board | ((connector-16)*2-1) ); 00057 } 00058 00059 int DayaBay::FadcChannelId::secondInputId() const 00060 { 00061 if (connector()<=16) return 0; 00062 int board = m_data & 0xffffff00; 00063 int connector = m_data & 0x000000ff; 00064 return ( board | ((connector-16)*2) ); 00065 } 00066 00067 DayaBay::FecChannelId::~FecChannelId() 00068 { 00069 } 00070 00071 DayaBay::FecChannelId DayaBay::FecChannelId::boardId() const 00072 { 00073 return DayaBay::FecChannelId(m_data & 0xffffff00); 00074 } 00075 00076 std::ostream& DayaBay::operator<<(std::ostream& str, 00077 const DayaBay::ElecChannelId& elecChannelId) 00078 { 00079 return str << Site::AsString(elecChannelId.site()) 00080 << DetectorId::AsString(elecChannelId.detectorId()) 00081 << "("<<elecChannelId.board() 00082 <<","<<elecChannelId.connector()<<")"; 00083 } 00084