CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
FedChannelConnection Class Reference

Class containning control, module, detector and connection information, at the level of a FED channel. More...

#include <FedChannelConnection.h>

Public Member Functions

uint16_t apvPairNumber () const
 
const uint16_t & ccuAddr () const
 
const uint16_t & ccuChan () const
 
void consistencyCheck () const
 
const bool & dcu () const
 
const uint32_t & dcuId () const
 
const uint32_t & detId () const
 
const uint16_t & fecCrate () const
 
const uint16_t & fecRing () const
 
const uint16_t & fecSlot () const
 
const uint16_t & fedCh () const
 
void fedCh (uint16_t &fed_ch)
 
 FedChannelConnection (const uint16_t &fec_crate, const uint16_t &fec_slot, const uint16_t &fec_ring, const uint16_t &ccu_addr, const uint16_t &ccu_chan, const uint16_t &apv0=0, const uint16_t &apv1=0, const uint32_t &dcu_id=0, const uint32_t &det_id=0, const uint16_t &pairs=0, const uint16_t &fed_id=0, const uint16_t &fed_ch=0, const uint16_t &length=0, const bool &dcu=false, const bool &pll=false, const bool &mux=false, const bool &lld=false)
 
 FedChannelConnection ()
 
const uint16_t & fedCrate () const
 
void fedCrate (uint16_t &fed_crate)
 
const uint16_t & fedId () const
 
void fedId (uint16_t &fed_id)
 
const uint16_t & fedSlot () const
 
void fedSlot (uint16_t &fed_slot)
 
const uint16_t & fiberLength () const
 
const uint16_t & i2cAddr (const uint16_t &apv0_or_1) const
 
bool isConnected () const
 
const bool & lld () const
 
uint16_t lldChannel () const
 
const bool & mux () const
 
const uint16_t & nApvPairs () const
 
uint16_t nApvs () const
 
uint16_t nDetStrips () const
 
const bool & pll () const
 
void print (std::stringstream &) const
 
void terse (std::stringstream &) const
 
 ~FedChannelConnection ()
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

uint16_t apv0_
 
uint16_t apv1_
 
uint16_t ccuAddr_
 
uint16_t ccuChan_
 
bool dcu0x00_
 
uint32_t dcuId_
 
uint32_t detId_
 
uint16_t fecCrate_
 
uint16_t fecRing_
 
uint16_t fecSlot_
 
uint16_t fedCh_
 
uint16_t fedCrate_
 
uint16_t fedId_
 
uint16_t fedSlot_
 
uint16_t length_
 
bool lld0x60_
 
bool mux0x43_
 
uint16_t nApvPairs_
 
bool pll0x44_
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

Detailed Description

Class containning control, module, detector and connection information, at the level of a FED channel.

Author
R.Bainbridge

Definition at line 26 of file FedChannelConnection.h.

Constructor & Destructor Documentation

FedChannelConnection::FedChannelConnection ( const uint16_t &  fec_crate,
const uint16_t &  fec_slot,
const uint16_t &  fec_ring,
const uint16_t &  ccu_addr,
const uint16_t &  ccu_chan,
const uint16_t &  apv0 = 0,
const uint16_t &  apv1 = 0,
const uint32_t &  dcu_id = 0,
const uint32_t &  det_id = 0,
const uint16_t &  pairs = 0,
const uint16_t &  fed_id = 0,
const uint16_t &  fed_ch = 0,
const uint16_t &  length = 0,
const bool &  dcu = false,
const bool &  pll = false,
const bool &  mux = false,
const bool &  lld = false 
)

Constructor requires at least information to uniquely identify a front-end module: ie, crate + FEC + ring + CCU + module.

Definition at line 11 of file FedChannelConnection.cc.

27  :
28  fecCrate_(fec_crate),
29  fecSlot_(fec_slot),
30  fecRing_(fec_ring),
31  ccuAddr_(ccu_addr),
32  ccuChan_(ccu_chan),
33  apv0_(apv0),
34  apv1_(apv1),
35  dcuId_(dcu_id),
36  detId_(det_id),
37  nApvPairs_(pairs),
40  fedId_(fed_id),
41  fedCh_(fed_ch),
42  length_(length),
43  dcu0x00_(dcu),
44  mux0x43_(mux),
45  pll0x44_(pll),
46  lld0x60_(lld)
47 {;}
const bool & lld() const
const bool & mux() const
const bool & dcu() const
static const uint16_t invalid_
Definition: Constants.h:16
const bool & pll() const
FedChannelConnection::FedChannelConnection ( )

Default constructor.

Definition at line 51 of file FedChannelConnection.cc.

51  :
67  dcu0x00_(false),
68  mux0x43_(false),
69  pll0x44_(false),
70  lld0x60_(false)
71 {;}
static const uint32_t invalid32_
Definition: Constants.h:15
static const uint16_t invalid_
Definition: Constants.h:16
FedChannelConnection::~FedChannelConnection ( )
inline

Default destructor.

Definition at line 56 of file FedChannelConnection.h.

References isConnected().

56 {;}

Member Function Documentation

uint16_t FedChannelConnection::apvPairNumber ( ) const

Returns APV pair number for this connection object. This can be either 0->1 or 0->2, depending on number of detector strips.

Definition at line 118 of file FedChannelConnection.cc.

References apv0_, apv1_, sistrip::invalid_, edm::isDebugEnabled(), sistrip::mlCabling_, and nApvPairs_.

Referenced by SiStripPopConFEDErrorsHandlerFromDQM::addBadAPV(), SiStripDetCabling::addDevices(), SiStripSpyMonitorModule::analyze(), NoiseTask::book(), CalibrationScanTask::CalibrationScanTask(), CalibrationTask::CalibrationTask(), consistencyCheck(), SiStripShotFilter::filter(), print(), SiStripBadModuleFedErrESSource::produce(), sistrip::FEDEmulatorModule::produce(), SiStripCondObjBuilderFromDb::setValuesApvTiming(), SiStripCondObjBuilderFromDb::setValuesCabling(), terse(), PedsOnlyTask::update(), and NoiseTask::update().

118  {
119  if ( nApvPairs_ == 2 ) {
120  if ( apv0_ == 32 || apv1_ == 33 ) { return 0; }
121  else if ( apv0_ == 36 || apv1_ == 37 ) { return 1; }
122  else {
123  if ( edm::isDebugEnabled() ) {
125  << "[FedChannelConnection::" << __func__ << "]"
126  << " APV I2C addresses ("
127  << apv0_ << "/" << apv1_
128  << ") are incompatible with"
129  << " number of APV pairs ("
130  << nApvPairs_ << ") found for this module!";
131  }
132  }
133  } else if ( nApvPairs_ == 3 ) {
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; }
137  else {
138  if ( edm::isDebugEnabled() ) {
140  << "[FedChannelConnection::" << __func__ << "]"
141  << " APV I2C addresses ("
142  << apv0_ << "/" << apv1_
143  << ") are incompatible with"
144  << " number of APV pairs ("
145  << nApvPairs_ << ") found for this module!";
146  }
147  }
148  } else {
149  if ( edm::isDebugEnabled() ) {
151  << "[FedChannelConnection::" << __func__ << "]"
152  << " Unexpected number of APV pairs: " << nApvPairs_;
153  }
154  }
155  return sistrip::invalid_;
156 }
bool isDebugEnabled()
static const char mlCabling_[]
static const uint16_t invalid_
Definition: Constants.h:16
const uint16_t & FedChannelConnection::ccuAddr ( ) const
inline
const uint16_t & FedChannelConnection::ccuChan ( ) const
inline
void FedChannelConnection::consistencyCheck ( ) const
inline

Performs consistency check for this connection object.

Definition at line 64 of file FedChannelConnection.h.

References apvPairNumber(), ccuAddr(), ccuChan(), dcu(), dcuId(), detId(), fecCrate(), fecRing(), fecSlot(), fedCh(), fedCrate(), fedId(), fedSlot(), fiberLength(), i2cAddr(), lld(), lldChannel(), mux(), nApvPairs(), nApvs(), nDetStrips(), pll(), print(), and terse().

64 {;} //@@ TO BE IMPLEMENTED...
const bool & FedChannelConnection::dcu ( ) const
inline

Indicates whether DCU ASIC is found.

Definition at line 211 of file FedChannelConnection.h.

References dcu0x00_.

Referenced by SiStripModule::addDevices(), consistencyCheck(), and print().

211 { return dcu0x00_; }
const uint32_t & FedChannelConnection::dcuId ( ) const
inline

Returns DCUid for this module.

Definition at line 216 of file FedChannelConnection.h.

References dcuId_.

Referenced by CommissioningHistosUsingDb::addDcuDetIds(), SiStripModule::addDevices(), consistencyCheck(), SiStripFecCabling::dcuId(), print(), and terse().

216 { return dcuId_; }
const uint32_t & FedChannelConnection::detId ( ) const
inline
const uint16_t & FedChannelConnection::fecCrate ( ) const
inline
const uint16_t & FedChannelConnection::fecRing ( ) const
inline
const uint16_t & FedChannelConnection::fecSlot ( ) const
inline
const uint16_t & FedChannelConnection::fedCh ( ) const
inline
void FedChannelConnection::fedCh ( uint16_t &  fed_ch)
inline

Sets FED id for this channel.

Definition at line 230 of file FedChannelConnection.h.

References fedCh_.

230 { fedCh_ = fed_ch; }
const uint16_t & FedChannelConnection::fedCrate ( ) const
inline
void FedChannelConnection::fedCrate ( uint16_t &  fed_crate)
inline

Sets FED crate for this channel.

Definition at line 231 of file FedChannelConnection.h.

References fedCrate_.

231 { fedCrate_ = fed_crate; }
const uint16_t & FedChannelConnection::fedId ( ) const
inline
void FedChannelConnection::fedId ( uint16_t &  fed_id)
inline

Sets FED id for this channel.

Definition at line 229 of file FedChannelConnection.h.

References fedId_.

229 { fedId_ = fed_id; }
const uint16_t & FedChannelConnection::fedSlot ( ) const
inline
void FedChannelConnection::fedSlot ( uint16_t &  fed_slot)
inline

Sets FED slot for this channel.

Definition at line 232 of file FedChannelConnection.h.

References fedSlot_.

232 { fedSlot_ = fed_slot; }
const uint16_t & FedChannelConnection::fiberLength ( ) const
inline

Returns the length of the optical fiber

Definition at line 227 of file FedChannelConnection.h.

References length_.

Referenced by consistencyCheck().

227 { return length_; }
const uint16_t & FedChannelConnection::i2cAddr ( const uint16_t &  apv0_or_1) const

Indicates whether APV0 or APV1 of the pair has been found: a non-zero value indicates the I2C address; a null value signifies a problematic APV.

Definition at line 83 of file FedChannelConnection.cc.

References apv0_, apv1_, edm::isDebugEnabled(), and sistrip::mlCabling_.

Referenced by SiStripModule::addDevices(), consistencyCheck(), SiStripCondObjBuilderFromDb::SkipDeviceDescription::isConsistent(), print(), SiStripCondObjBuilderFromDb::setValuesApvLatency(), and terse().

83  {
84  if ( apv == 0 ) { return apv0_; }
85  else if ( apv == 1 ) { return apv1_; }
86  else {
87  if ( edm::isDebugEnabled() ) {
89  << "[FedChannelConnection::" << __func__ << "]"
90  << " Unexpected APV I2C address!" << apv;
91  }
92  static const uint16_t i2c_addr = 0;
93  return i2c_addr;
94  }
95 }
bool isDebugEnabled()
static const char mlCabling_[]
bool FedChannelConnection::isConnected ( ) const
inline
const bool & FedChannelConnection::lld ( ) const
inline

Indicates whether Linear Laser Driver ASIC is found.

Definition at line 214 of file FedChannelConnection.h.

References lld0x60_.

Referenced by SiStripModule::addDevices(), consistencyCheck(), and print().

214 { return lld0x60_; }
uint16_t FedChannelConnection::lldChannel ( ) const

Returns Laser Driver channel (1->3) for this channel.

Definition at line 99 of file FedChannelConnection.cc.

References apv0_, apv1_, sistrip::invalid_, edm::isDebugEnabled(), and sistrip::mlCabling_.

Referenced by CommissioningHistosUsingDb::addDcuDetIds(), CommissioningTask::CommissioningTask(), consistencyCheck(), SiStripCondObjBuilderFromDb::SkipDeviceDescription::isConsistent(), print(), PedsFullNoiseHistosUsingDb::update(), PedsOnlyHistosUsingDb::update(), NoiseHistosUsingDb::update(), PedestalsHistosUsingDb::update(), ApvTimingHistosUsingDb::update(), and CommissioningTask::~CommissioningTask().

99  {
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; }
103  else if ( apv0_ != sistrip::invalid_ ||
104  apv1_ != sistrip::invalid_ ) {
105  if ( edm::isDebugEnabled() ) {
107  << "[FedChannelConnection::" << __func__ << "]"
108  << " Unexpected APV I2C addresses!"
109  << " Apv0: " << apv0_
110  << " Apv1: " << apv1_;
111  }
112  }
113  return sistrip::invalid_;
114 }
bool isDebugEnabled()
static const char mlCabling_[]
static const uint16_t invalid_
Definition: Constants.h:16
const bool & FedChannelConnection::mux ( ) const
inline

Indicates whether APV-MUX ASIC is found.

Definition at line 212 of file FedChannelConnection.h.

References mux0x43_.

Referenced by SiStripModule::addDevices(), consistencyCheck(), and print().

212 { return mux0x43_; }
const uint16_t & FedChannelConnection::nApvPairs ( ) const
inline
uint16_t FedChannelConnection::nApvs ( ) const
inline

Returns number of APVs for this module.

Definition at line 220 of file FedChannelConnection.h.

References nApvPairs().

Referenced by consistencyCheck().

220 { return 2*nApvPairs(); }
const uint16_t & nApvPairs() const
uint16_t FedChannelConnection::nDetStrips ( ) const
inline

Returns number of detector strips for this module.

Definition at line 218 of file FedChannelConnection.h.

References nApvPairs_.

Referenced by consistencyCheck().

218 { return 256*nApvPairs_; }
const bool & FedChannelConnection::pll ( ) const
inline

Indicates whether PLL ASIC is found.

Definition at line 213 of file FedChannelConnection.h.

References pll0x44_.

Referenced by SiStripModule::addDevices(), consistencyCheck(), and print().

213 { return pll0x44_; }
void FedChannelConnection::print ( std::stringstream &  ss) const

Prints all information for this connection object.

Definition at line 160 of file FedChannelConnection.cc.

References apvPairNumber(), ccuAddr(), ccuChan(), dcu(), dcuId(), TauDecayModes::dec, detId(), fecCrate(), SiStripFedKey::feChan(), fecRing(), fecSlot(), fedCh(), fedCrate(), fedId(), fedSlot(), SiStripFedKey::feUnit(), i2cAddr(), lld(), lldChannel(), mux(), nApvPairs(), and pll().

Referenced by consistencyCheck(), and operator<<().

160  {
161  ss << " [FedChannelConnection::" << __func__ << "]" << std::endl
162  << " FedCrate/FedSlot/FedId/FeUnit/FeChan/FedCh : "
163  << fedCrate() << "/"
164  << fedSlot() << "/"
165  << fedId() << "/"
166  << SiStripFedKey::feUnit( fedCh() ) << "/"
167  << SiStripFedKey::feChan( fedCh() ) << "/"
168  << fedCh() << std::endl
169  << " FecCrate/FecSlot/FecRing/CcuAddr/CcuChan : "
170  << fecCrate() << "/"
171  << fecSlot() << "/"
172  << fecRing() << "/"
173  << ccuAddr() << "/"
174  << ccuChan() << std::endl
175  << " DcuId/DetId : "
176  << std::hex
177  << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
178  << "0x" << std::setfill('0') << std::setw(8) << detId() << std::endl
179  << std::dec
180  << " LldChan/APV0/APV1 : "
181  << lldChannel() << "/"
182  << i2cAddr(0) << "/"
183  << i2cAddr(1) << std::endl
184  << " pairNumber/nPairs/nStrips : "
185  << apvPairNumber() << "/"
186  << nApvPairs() << "/"
187  << 256*nApvPairs() << std::endl
188  << " DCU/MUX/PLL/LLD found : "
189  << std::boolalpha
190  << dcu() << "/"
191  << mux() << "/"
192  << pll() << "/"
193  << lld()
194  << std::noboolalpha;
195 }
const uint16_t & fecSlot() const
const uint16_t & fecCrate() const
const bool & lld() const
const uint16_t & fedCh() const
uint16_t apvPairNumber() const
uint16_t lldChannel() const
const uint16_t & fedId() const
const uint16_t & fecRing() const
const uint16_t & fedSlot() const
const uint32_t & detId() const
const uint16_t & ccuChan() const
const bool & mux() const
const bool & dcu() const
const uint16_t & ccuAddr() const
const uint32_t & dcuId() const
const uint16_t & feUnit() const
const uint16_t & nApvPairs() const
const bool & pll() const
const uint16_t & fedCrate() const
const uint16_t & feChan() const
const uint16_t & i2cAddr(const uint16_t &apv0_or_1) const
template<class Archive >
void FedChannelConnection::serialize ( Archive &  ar,
const unsigned int  version 
)
private
void FedChannelConnection::terse ( std::stringstream &  ss) const

Prints terse information for this connection object.

Definition at line 199 of file FedChannelConnection.cc.

References apvPairNumber(), ccuAddr(), ccuChan(), dcuId(), TauDecayModes::dec, detId(), fecCrate(), SiStripFedKey::feChan(), fecRing(), fecSlot(), fedCh(), fedCrate(), fedId(), fedSlot(), SiStripFedKey::feUnit(), i2cAddr(), and nApvPairs().

Referenced by consistencyCheck().

199  {
200  ss << " FED:cr/sl/id/fe/ch/chan="
201  << fedCrate() << "/"
202  << fedSlot() << "/"
203  << fedId() << "/"
204  << SiStripFedKey::feUnit( fedCh() ) << "/"
205  << SiStripFedKey::feChan( fedCh() ) << "/"
206  << fedCh() << ","
207  << " FEC:cr/sl/ring/ccu/mod="
208  << fecCrate() << "/"
209  << fecSlot() << "/"
210  << fecRing() << "/"
211  << ccuAddr() << "/"
212  << ccuChan() << ","
213  << " apvs="
214  << i2cAddr(0) << "/"
215  << i2cAddr(1) << ","
216  << " pair=" << apvPairNumber()+1
217  << " (from " << nApvPairs() << "),"
218  << " dcu/detid="
219  << std::hex
220  << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
221  << "0x" << std::setfill('0') << std::setw(8) << detId()
222  << std::dec;
223 }
const uint16_t & fecSlot() const
const uint16_t & fecCrate() const
const uint16_t & fedCh() const
uint16_t apvPairNumber() const
const uint16_t & fedId() const
const uint16_t & fecRing() const
const uint16_t & fedSlot() const
const uint32_t & detId() const
const uint16_t & ccuChan() const
const uint16_t & ccuAddr() const
const uint32_t & dcuId() const
const uint16_t & feUnit() const
const uint16_t & nApvPairs() const
const uint16_t & fedCrate() const
const uint16_t & feChan() const
const uint16_t & i2cAddr(const uint16_t &apv0_or_1) const

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Definition at line 195 of file FedChannelConnection.h.

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 195 of file FedChannelConnection.h.

Member Data Documentation

uint16_t FedChannelConnection::apv0_
private

Definition at line 173 of file FedChannelConnection.h.

Referenced by apvPairNumber(), i2cAddr(), and lldChannel().

uint16_t FedChannelConnection::apv1_
private

Definition at line 174 of file FedChannelConnection.h.

Referenced by apvPairNumber(), i2cAddr(), and lldChannel().

uint16_t FedChannelConnection::ccuAddr_
private

Definition at line 169 of file FedChannelConnection.h.

Referenced by ccuAddr().

uint16_t FedChannelConnection::ccuChan_
private

Definition at line 170 of file FedChannelConnection.h.

Referenced by ccuChan().

bool FedChannelConnection::dcu0x00_
private

Definition at line 189 of file FedChannelConnection.h.

Referenced by dcu().

uint32_t FedChannelConnection::dcuId_
private

Definition at line 177 of file FedChannelConnection.h.

Referenced by dcuId().

uint32_t FedChannelConnection::detId_
private

Definition at line 178 of file FedChannelConnection.h.

Referenced by detId().

uint16_t FedChannelConnection::fecCrate_
private

Definition at line 166 of file FedChannelConnection.h.

Referenced by fecCrate().

uint16_t FedChannelConnection::fecRing_
private

Definition at line 168 of file FedChannelConnection.h.

Referenced by fecRing().

uint16_t FedChannelConnection::fecSlot_
private

Definition at line 167 of file FedChannelConnection.h.

Referenced by fecSlot().

uint16_t FedChannelConnection::fedCh_
private

Definition at line 185 of file FedChannelConnection.h.

Referenced by fedCh(), and isConnected().

uint16_t FedChannelConnection::fedCrate_
private

Definition at line 182 of file FedChannelConnection.h.

Referenced by fedCrate().

uint16_t FedChannelConnection::fedId_
private

Definition at line 184 of file FedChannelConnection.h.

Referenced by fedId(), and isConnected().

uint16_t FedChannelConnection::fedSlot_
private

Definition at line 183 of file FedChannelConnection.h.

Referenced by fedSlot().

uint16_t FedChannelConnection::length_
private

Definition at line 186 of file FedChannelConnection.h.

Referenced by fiberLength().

bool FedChannelConnection::lld0x60_
private

Definition at line 192 of file FedChannelConnection.h.

Referenced by lld().

bool FedChannelConnection::mux0x43_
private

Definition at line 190 of file FedChannelConnection.h.

Referenced by mux().

uint16_t FedChannelConnection::nApvPairs_
private

Definition at line 179 of file FedChannelConnection.h.

Referenced by apvPairNumber(), nApvPairs(), and nDetStrips().

bool FedChannelConnection::pll0x44_
private

Definition at line 191 of file FedChannelConnection.h.

Referenced by pll().