CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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.

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 SiStripFEDErrorsDQM::addBadAPV(), SiStripDetCabling::addDevices(), SiStripSpyMonitorModule::analyze(), NoiseTask::book(), CalibrationScanTask::CalibrationScanTask(), CalibrationTask::CalibrationTask(), SiStripShotFilter::filter(), print(), sistrip::FEDEmulatorModule::produce(), SiStripCondObjBuilderFromDb::setValuesCabling(), terse(), NoiseTask::update(), and PedsOnlyTask::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.

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(), 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(), 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_.

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(), 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(), 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(), print(), PedsOnlyHistosUsingDb::update(), NoiseHistosUsingDb::update(), PedestalsHistosUsingDb::update(), PedsFullNoiseHistosUsingDb::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(), and print().

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

Returns number of APV pairs for this module.

Definition at line 219 of file FedChannelConnection.h.

References nApvPairs_.

Referenced by SiStripModule::addDevices(), SiStripCMMonitorPlugin::analyze(), SiStripFecCabling::nApvPairs(), nApvs(), print(), sistrip::FEDEmulatorModule::produce(), and terse().

219 { return nApvPairs_; }
uint16_t FedChannelConnection::nApvs ( ) const
inline

Returns number of APVs for this module.

Definition at line 220 of file FedChannelConnection.h.

References nApvPairs().

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_.

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(), 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 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().

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().