7 using namespace sistrip;
12 const uint16_t& fec_slot,
13 const uint16_t& fec_ring,
14 const uint16_t& ccu_addr,
15 const uint16_t& ccu_chan,
18 const uint32_t& dcu_id,
19 const uint32_t& det_id,
20 const uint16_t& pairs ,
21 const uint16_t& fed_id,
22 const uint16_t& fed_ch,
23 const uint16_t& length,
76 if ( conn1.
fedId() < conn2.
fedId() ) {
return true; }
78 else {
return false; }
84 if ( apv == 0 ) {
return apv0_; }
85 else if ( apv == 1 ) {
return apv1_; }
89 <<
"[FedChannelConnection::" << __func__ <<
"]"
90 <<
" Unexpected APV I2C address!" << apv;
92 static const uint16_t i2c_addr = 0;
100 if (
apv0_ == 32 ||
apv1_ == 33 ) {
return 1; }
101 else if (
apv0_ == 34 ||
apv1_ == 35 ) {
return 2; }
102 else if (
apv0_ == 36 ||
apv1_ == 37 ) {
return 3; }
107 <<
"[FedChannelConnection::" << __func__ <<
"]"
108 <<
" Unexpected APV I2C addresses!"
109 <<
" Apv0: " <<
apv0_
110 <<
" Apv1: " <<
apv1_;
120 if (
apv0_ == 32 ||
apv1_ == 33 ) {
return 0; }
121 else if (
apv0_ == 36 ||
apv1_ == 37 ) {
return 1; }
125 <<
"[FedChannelConnection::" << __func__ <<
"]"
126 <<
" APV I2C addresses ("
128 <<
") are incompatible with"
129 <<
" number of APV pairs ("
134 if (
apv0_ == 32 ||
apv1_ == 33 ) {
return 0; }
135 else if (
apv0_ == 34 ||
apv1_ == 35 ) {
return 1; }
136 else if (
apv0_ == 36 ||
apv1_ == 37 ) {
return 2; }
140 <<
"[FedChannelConnection::" << __func__ <<
"]"
141 <<
" APV I2C addresses ("
143 <<
") are incompatible with"
144 <<
" number of APV pairs ("
151 <<
"[FedChannelConnection::" << __func__ <<
"]"
152 <<
" Unexpected number of APV pairs: " <<
nApvPairs_;
161 ss <<
" [FedChannelConnection::" << __func__ <<
"]" << std::endl
162 <<
" FedCrate/FedSlot/FedId/FeUnit/FeChan/FedCh : "
168 <<
fedCh() << std::endl
169 <<
" FecCrate/FecSlot/FecRing/CcuAddr/CcuChan : "
177 <<
"0x" << std::setfill(
'0') << std::setw(8) <<
dcuId() <<
"/"
178 <<
"0x" << std::setfill(
'0') << std::setw(8) <<
detId() << std::endl
180 <<
" LldChan/APV0/APV1 : "
184 <<
" pairNumber/nPairs/nStrips : "
188 <<
" DCU/MUX/PLL/LLD found : "
200 ss <<
" FED:cr/sl/id/fe/ch/chan="
207 <<
" FEC:cr/sl/ring/ccu/mod="
220 <<
"0x" << std::setfill(
'0') << std::setw(8) <<
dcuId() <<
"/"
221 <<
"0x" << std::setfill(
'0') << std::setw(8) <<
detId()
228 std::stringstream ss;
const uint16_t & fecSlot() const
const uint16_t & fecCrate() const
const uint16_t & fedCh() const
static const uint32_t invalid32_
uint16_t apvPairNumber() const
void terse(std::stringstream &) const
void print(std::stringstream &) const
uint16_t lldChannel() const
std::ostream & operator<<(std::ostream &out, const ALILine &li)
const uint16_t & fedId() const
static const char fecSlot_[]
static const char ccuChan_[]
static const char ccuAddr_[]
static const char mlCabling_[]
bool operator<(const FedChannelConnection &, const FedChannelConnection &)
const uint16_t & fecRing() const
const uint16_t & fedSlot() const
const uint32_t & detId() const
Class containning control, module, detector and connection information, at the level of a FED channel...
const uint16_t & ccuChan() const
static const char fecCrate_[]
const uint16_t & ccuAddr() const
const uint32_t & dcuId() const
const uint16_t & feUnit() const
const uint16_t & nApvPairs() const
static const char fecRing_[]
static const uint16_t invalid_
const uint16_t & fedCrate() const
const uint16_t & feChan() const
const uint16_t & i2cAddr(const uint16_t &apv0_or_1) const