CMS 3D CMS Logo

Public Member Functions | Private Attributes

FedChannelConnection Class Reference

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

#include <FedChannelConnection.h>

List of all members.

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 ()
void fedCrate (uint16_t &fed_crate)
const uint16_t & fedCrate () const
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 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_

Detailed Description

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

Author:
R.Bainbridge

Definition at line 24 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.

                                                              :
  fecCrate_(fec_crate), 
  fecSlot_(fec_slot), 
  fecRing_(fec_ring), 
  ccuAddr_(ccu_addr), 
  ccuChan_(ccu_chan),
  apv0_(apv0), 
  apv1_(apv1),
  dcuId_(dcu_id), 
  detId_(det_id), 
  nApvPairs_(pairs), 
  fedCrate_(sistrip::invalid_),
  fedSlot_(sistrip::invalid_),
  fedId_(fed_id), 
  fedCh_(fed_ch), 
  length_(length),
  dcu0x00_(dcu), 
  mux0x43_(mux), 
  pll0x44_(pll), 
  lld0x60_(lld)
{;}
FedChannelConnection::FedChannelConnection ( )
FedChannelConnection::~FedChannelConnection ( ) [inline]

Default destructor.

Definition at line 54 of file FedChannelConnection.h.

{;}

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(), PedsOnlyTask::update(), and NoiseTask::update().

                                                   {
  if ( nApvPairs_ == 2 ) {
    if      ( apv0_ == 32 || apv1_ == 33 ) { return 0; }
    else if ( apv0_ == 36 || apv1_ == 37 ) { return 1; }
    else { 
      if ( edm::isDebugEnabled() ) {
        edm::LogWarning(mlCabling_)
          << "[FedChannelConnection::" << __func__ << "]"
          << " APV I2C addresses (" 
          << apv0_ << "/" << apv1_
          << ") are incompatible with"
          << " number of APV pairs (" 
          << nApvPairs_ << ") found for this module!";
      }
    }
  } else if ( nApvPairs_ == 3 ) {
    if      ( apv0_ == 32 || apv1_ == 33 ) { return 0; }
    else if ( apv0_ == 34 || apv1_ == 35 ) { return 1; }
    else if ( apv0_ == 36 || apv1_ == 37 ) { return 2; }
    else { 
      if ( edm::isDebugEnabled() ) {
        edm::LogWarning(mlCabling_)
          << "[FedChannelConnection::" << __func__ << "]"
          << " APV I2C addresses (" 
          << apv0_ << "/" << apv1_
          << ") are incompatible with"
          << " number of APV pairs (" 
          << nApvPairs_ << ") found for this module!";
      }
    }
  } else { 
    if ( edm::isDebugEnabled() ) {
      edm::LogWarning(mlCabling_) 
        << "[FedChannelConnection::" << __func__ << "]"
        << " Unexpected number of APV pairs: " << nApvPairs_;
    }
  }
  return sistrip::invalid_;
}
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 62 of file FedChannelConnection.h.

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

Indicates whether DCU ASIC is found.

Definition at line 207 of file FedChannelConnection.h.

References dcu0x00_.

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

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

Returns DCUid for this module.

Definition at line 212 of file FedChannelConnection.h.

References dcuId_.

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

{ 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]
void FedChannelConnection::fedCh ( uint16_t &  fed_ch) [inline]

Sets FED id for this channel.

Definition at line 226 of file FedChannelConnection.h.

References fedCh_.

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

Sets FED crate for this channel.

Definition at line 227 of file FedChannelConnection.h.

References fedCrate_.

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

Sets FED id for this channel.

Definition at line 225 of file FedChannelConnection.h.

References fedId_.

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

Sets FED slot for this channel.

Definition at line 228 of file FedChannelConnection.h.

References fedSlot_.

{ fedSlot_ = fed_slot; }
const uint16_t & FedChannelConnection::fedSlot ( ) const [inline]
const uint16_t & FedChannelConnection::fiberLength ( ) const [inline]

Returns the length of the optical fiber

Definition at line 223 of file FedChannelConnection.h.

References length_.

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

                                                                         { 
  if      ( apv == 0 ) { return apv0_; }
  else if ( apv == 1 ) { return apv1_; }
  else {
    if ( edm::isDebugEnabled() ) {
      edm::LogWarning(mlCabling_)
        << "[FedChannelConnection::" << __func__ << "]"
        << " Unexpected APV I2C address!" << apv;
    }
    static const uint16_t i2c_addr = 0;
    return i2c_addr;
  }
}
bool FedChannelConnection::isConnected ( ) const [inline]
const bool & FedChannelConnection::lld ( ) const [inline]

Indicates whether Linear Laser Driver ASIC is found.

Definition at line 210 of file FedChannelConnection.h.

References lld0x60_.

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

{ 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(), NoiseHistosUsingDb::update(), PedsFullNoiseHistosUsingDb::update(), PedsOnlyHistosUsingDb::update(), PedestalsHistosUsingDb::update(), ApvTimingHistosUsingDb::update(), and CommissioningTask::~CommissioningTask().

                                                {
  if      ( apv0_ == 32 || apv1_ == 33 ) { return 1; }
  else if ( apv0_ == 34 || apv1_ == 35 ) { return 2; }
  else if ( apv0_ == 36 || apv1_ == 37 ) { return 3; }
  else if ( apv0_ != sistrip::invalid_ ||
            apv1_ != sistrip::invalid_ ) {
    if ( edm::isDebugEnabled() ) {
      edm::LogWarning(mlCabling_)
        << "[FedChannelConnection::" << __func__ << "]"
        << " Unexpected APV I2C addresses!" 
        << " Apv0: " << apv0_
        << " Apv1: " << apv1_;
    }
  }
  return sistrip::invalid_;
}
const bool & FedChannelConnection::mux ( ) const [inline]

Indicates whether APV-MUX ASIC is found.

Definition at line 208 of file FedChannelConnection.h.

References mux0x43_.

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

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

Returns number of APV pairs for this module.

Definition at line 215 of file FedChannelConnection.h.

References nApvPairs_.

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

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

Returns number of APVs for this module.

Definition at line 216 of file FedChannelConnection.h.

References nApvPairs().

{ return 2*nApvPairs(); }
uint16_t FedChannelConnection::nDetStrips ( ) const [inline]

Returns number of detector strips for this module.

Definition at line 214 of file FedChannelConnection.h.

References nApvPairs_.

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

Indicates whether PLL ASIC is found.

Definition at line 209 of file FedChannelConnection.h.

References pll0x44_.

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

{ 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(), detId(), fecCrate(), SiStripFedKey::feChan(), fecRing(), fecSlot(), fedCh(), fedCrate(), fedId(), fedSlot(), SiStripFedKey::feUnit(), i2cAddr(), lld(), lldChannel(), mux(), nApvPairs(), and pll().

Referenced by operator<<().

                                                            {
  ss << " [FedChannelConnection::" << __func__ << "]" << std::endl
     << " FedCrate/FedSlot/FedId/FeUnit/FeChan/FedCh : "
     << fedCrate() << "/"
     << fedSlot() << "/"
     << fedId() << "/"
     << SiStripFedKey::feUnit( fedCh() ) << "/" 
     << SiStripFedKey::feChan( fedCh() ) << "/" 
     << fedCh() << std::endl
     << " FecCrate/FecSlot/FecRing/CcuAddr/CcuChan   : "
     << fecCrate() << "/"
     << fecSlot() << "/"
     << fecRing() << "/"
     << ccuAddr() << "/"
     << ccuChan() << std::endl
     << " DcuId/DetId                                : "
     << std::hex
     << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
     << "0x" << std::setfill('0') << std::setw(8) << detId() << std::endl
     << std::dec
     << " LldChan/APV0/APV1                          : "
     << lldChannel() << "/" 
     << i2cAddr(0) << "/"
     << i2cAddr(1) << std::endl
     << " pairNumber/nPairs/nStrips                  : "
     << apvPairNumber() << "/"
     << nApvPairs() << "/"
     << 256*nApvPairs() << std::endl
     << " DCU/MUX/PLL/LLD found                      : "
     << std::boolalpha
     << dcu() << "/"
     << mux() << "/"
     << pll() << "/"
     << lld()
     << std::noboolalpha;
}
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(), detId(), fecCrate(), SiStripFedKey::feChan(), fecRing(), fecSlot(), fedCh(), fedCrate(), fedId(), fedSlot(), SiStripFedKey::feUnit(), i2cAddr(), and nApvPairs().

                                                            {
  ss << " FED:cr/sl/id/fe/ch/chan=" 
     << fedCrate() << "/" 
     << fedSlot() << "/" 
     << fedId() << "/" 
     << SiStripFedKey::feUnit( fedCh() ) << "/" 
     << SiStripFedKey::feChan( fedCh() ) << "/" 
     << fedCh() << "," 
     << " FEC:cr/sl/ring/ccu/mod="
     << fecCrate() << "/"
     << fecSlot() << "/" 
     << fecRing() << "/"
     << ccuAddr() << "/" 
     << ccuChan() << ","
     << " apvs=" 
     << i2cAddr(0) << "/" 
     << i2cAddr(1) << "," 
     << " pair=" << apvPairNumber()+1
     << " (from " << nApvPairs() << "),"
     << " dcu/detid=" 
     << std::hex
     << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
     << "0x" << std::setfill('0') << std::setw(8) << detId() 
     << std::dec;
}

Member Data Documentation

uint16_t FedChannelConnection::apv0_ [private]

Definition at line 171 of file FedChannelConnection.h.

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

uint16_t FedChannelConnection::apv1_ [private]

Definition at line 172 of file FedChannelConnection.h.

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

uint16_t FedChannelConnection::ccuAddr_ [private]

Definition at line 167 of file FedChannelConnection.h.

Referenced by ccuAddr().

uint16_t FedChannelConnection::ccuChan_ [private]

Definition at line 168 of file FedChannelConnection.h.

Referenced by ccuChan().

Definition at line 187 of file FedChannelConnection.h.

Referenced by dcu().

uint32_t FedChannelConnection::dcuId_ [private]

Definition at line 175 of file FedChannelConnection.h.

Referenced by dcuId().

uint32_t FedChannelConnection::detId_ [private]

Definition at line 176 of file FedChannelConnection.h.

Referenced by detId().

uint16_t FedChannelConnection::fecCrate_ [private]

Definition at line 164 of file FedChannelConnection.h.

Referenced by fecCrate().

uint16_t FedChannelConnection::fecRing_ [private]

Definition at line 166 of file FedChannelConnection.h.

Referenced by fecRing().

uint16_t FedChannelConnection::fecSlot_ [private]

Definition at line 165 of file FedChannelConnection.h.

Referenced by fecSlot().

uint16_t FedChannelConnection::fedCh_ [private]

Definition at line 183 of file FedChannelConnection.h.

Referenced by fedCh(), and isConnected().

uint16_t FedChannelConnection::fedCrate_ [private]

Definition at line 180 of file FedChannelConnection.h.

Referenced by fedCrate().

uint16_t FedChannelConnection::fedId_ [private]

Definition at line 182 of file FedChannelConnection.h.

Referenced by fedId(), and isConnected().

uint16_t FedChannelConnection::fedSlot_ [private]

Definition at line 181 of file FedChannelConnection.h.

Referenced by fedSlot().

uint16_t FedChannelConnection::length_ [private]

Definition at line 184 of file FedChannelConnection.h.

Referenced by fiberLength().

Definition at line 190 of file FedChannelConnection.h.

Referenced by lld().

Definition at line 188 of file FedChannelConnection.h.

Referenced by mux().

Definition at line 177 of file FedChannelConnection.h.

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

Definition at line 189 of file FedChannelConnection.h.

Referenced by pll().