CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Private Attributes

SiStripModule Class Reference

Device and connection information at the level of a front-end module. More...

#include <SiStripModule.h>

List of all members.

Classes

class  FedChannel

Public Types

typedef std::map< uint16_t,
FedChannel
FedCabling
typedef std::pair< uint16_t,
uint16_t > 
PairOfU16

Public Member Functions

const uint16_t & activeApv (const uint16_t &apv_address) const
PairOfU16 activeApvPair (const uint16_t &lld_channel) const
std::vector< uint16_t > activeApvs () const
void addApv (const uint16_t &apv_address)
void addDevices (const FedChannelConnection &conn)
uint16_t apvPairNumber (const uint16_t &lld_channel) const
const uint16_t & ccuAddr () const
const uint16_t & ccuChan () const
const uint16_t & dcu () const
const uint32_t & dcuId () const
void dcuId (const uint32_t &dcu_id)
const uint32_t & detId () const
void detId (const uint32_t &det_id)
const uint16_t & fecCrate () const
const uint16_t & fecRing () const
const uint16_t & fecSlot () const
bool fedCh (const uint16_t &apv_address, const FedChannel &fed_ch)
FedChannel fedCh (const uint16_t &apv_pair_num) const
const FedCablingfedChannels () const
const SiStripFecKeykey () const
const uint16_t & length () const
void length (const uint16_t &length)
const uint16_t & lld () const
uint16_t lldChannel (const uint16_t &apv_pair_num) const
const uint16_t & mux () const
const uint16_t & nApvPairs () const
void nApvPairs (const uint16_t &npairs)
uint16_t nDetStrips () const
const uint16_t & pll () const
void print (std::stringstream &) const
 SiStripModule (const FedChannelConnection &conn)
void terse (std::stringstream &) const
 ~SiStripModule ()

Private Attributes

uint16_t apv32_
uint16_t apv33_
uint16_t apv34_
uint16_t apv35_
uint16_t apv36_
uint16_t apv37_
FedCabling cabling_
uint16_t dcu0x00_
uint32_t dcuId_
uint32_t detId_
SiStripFecKey key_
uint16_t length_
uint16_t lld0x60_
uint16_t mux0x43_
uint16_t nApvPairs_
uint16_t pll0x44_

Detailed Description

Device and connection information at the level of a front-end module.

Author:
R.Bainbridge

Definition at line 25 of file SiStripModule.h.


Member Typedef Documentation

typedef std::map< uint16_t, FedChannel > SiStripModule::FedCabling

Map between LLD channel and FED channel

Definition at line 60 of file SiStripModule.h.

typedef std::pair<uint16_t,uint16_t> SiStripModule::PairOfU16

Pair containing FED id/channel.

Definition at line 43 of file SiStripModule.h.


Constructor & Destructor Documentation

SiStripModule::SiStripModule ( const FedChannelConnection conn)

Constructor.

Definition at line 13 of file SiStripModule.cc.

References addDevices().

  : key_( conn.fecCrate(), 
          conn.fecSlot(), 
          conn.fecRing(), 
          conn.ccuAddr(), 
          conn.ccuChan() ),
    apv32_(0), 
    apv33_(0), 
    apv34_(0), 
    apv35_(0), 
    apv36_(0), 
    apv37_(0), 
    dcu0x00_(0), 
    mux0x43_(0), 
    pll0x44_(0), 
    lld0x60_(0), 
    dcuId_(0), 
    detId_(0), 
    nApvPairs_(0),
    cabling_(), 
    length_(0) 
{ 
  addDevices( conn ); 
}
SiStripModule::~SiStripModule ( ) [inline]

Default constructor.

Definition at line 35 of file SiStripModule.h.

{;}

Member Function Documentation

const uint16_t & SiStripModule::activeApv ( const uint16_t &  apv_address) const

Identifies whether APV of a given I2C address (32->37) or footprint position on the hybrid (0->5) is active or not. Returns device I2C address or zero if not active.

Definition at line 126 of file SiStripModule.cc.

References apv32_, apv33_, apv34_, apv35_, apv36_, apv37_, and sistrip::mlCabling_.

                                                                             {
  if      ( apv_address == 0 || apv_address == 32 ) { return apv32_; }
  else if ( apv_address == 1 || apv_address == 33 ) { return apv33_; }
  else if ( apv_address == 2 || apv_address == 34 ) { return apv34_; }
  else if ( apv_address == 3 || apv_address == 35 ) { return apv35_; }
  else if ( apv_address == 4 || apv_address == 36 ) { return apv36_; }
  else if ( apv_address == 5 || apv_address == 37 ) { return apv37_; }
  else {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected I2C address or number (" 
      << apv_address << ") for this module!";
  }
  static const uint16_t address = 0;
  return address;
}
SiStripModule::PairOfU16 SiStripModule::activeApvPair ( const uint16_t &  lld_channel) const

Identifies APV pairs that are active for given LLD channel (1->3). Returns device I2C address or zero if not active.

Definition at line 204 of file SiStripModule.cc.

References apv32_, apv33_, apv34_, apv35_, apv36_, apv37_, and sistrip::mlCabling_.

                                                                                       {
  if      ( lld_channel == 1 ) { return PairOfU16(apv32_,apv33_); }
  else if ( lld_channel == 2 ) { return PairOfU16(apv34_,apv35_); }
  else if ( lld_channel == 3 ) { return PairOfU16(apv36_,apv37_); }
  else { 
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected LLD channel: " << lld_channel;
    return PairOfU16(0,0); 
  }
}
std::vector< uint16_t > SiStripModule::activeApvs ( ) const

Returns I2C addresses of active ("found") APVs.

Definition at line 113 of file SiStripModule.cc.

References apv32_, apv33_, apv34_, apv35_, apv36_, and apv37_.

Referenced by print(), and terse().

                                                    {
  std::vector<uint16_t> apvs;
  if ( apv32_ ) { apvs.push_back( apv32_ ); }
  if ( apv33_ ) { apvs.push_back( apv33_ ); }
  if ( apv34_ ) { apvs.push_back( apv34_ ); }
  if ( apv35_ ) { apvs.push_back( apv35_ ); }
  if ( apv36_ ) { apvs.push_back( apv36_ ); }
  if ( apv37_ ) { apvs.push_back( apv37_ ); }
  return apvs;
}
void SiStripModule::addApv ( const uint16_t &  apv_address)

Add APV to module using I2C address (32->37).

Definition at line 145 of file SiStripModule.cc.

References apv32_, apv33_, apv34_, apv35_, apv36_, apv37_, SiStripFecKey::ccuAddr(), SiStripFecKey::ccuChan(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), key_, and sistrip::mlCabling_.

Referenced by addDevices().

                                                        {

  // Some checks on value of APV I2C address
  if ( apv_address == 0 ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Null APV I2C address!"; 
    return;
  } else if ( apv_address < 32 && apv_address > 37 ) {
    edm::LogWarning(mlCabling_)
            << "SiStripModule::" << __func__ << "]"
            << " Unexpected I2C address (" 
            << apv_address << ") for APV!"; 
    return;
  }

  bool added_apv = false; 
  if      ( !apv32_ && apv_address == 32 ) { apv32_ = 32; added_apv = true; }
  else if ( !apv33_ && apv_address == 33 ) { apv33_ = 33; added_apv = true; }
  else if ( !apv34_ && apv_address == 34 ) { apv34_ = 34; added_apv = true; }
  else if ( !apv35_ && apv_address == 35 ) { apv35_ = 35; added_apv = true; }
  else if ( !apv36_ && apv_address == 36 ) { apv36_ = 36; added_apv = true; }
  else if ( !apv37_ && apv_address == 37 ) { apv37_ = 37; added_apv = true; }
  
  std::stringstream ss;
  ss << "SiStripModule::" << __func__ << "]";
  if ( added_apv ) { ss << " Added new APV for"; }
  else { ss << " APV already exists for"; }
  ss << " Crate/FEC/Ring/CCU/Module: "
     << key_.fecCrate() << "/"
     << key_.fecSlot() << "/"
     << key_.fecRing() << "/"
     << key_.ccuAddr() << "/"
     << key_.ccuChan() << "/"
     << apv_address;
  //if ( added_apv ) { LogTrace(mlCabling_) << ss.str(); }
  /* else */ if ( !added_apv ) { edm::LogWarning(mlCabling_) << ss.str(); }
  
}
void SiStripModule::addDevices ( const FedChannelConnection conn)

Sets device info (addresses, DetID, etc) for this module.

Definition at line 40 of file SiStripModule.cc.

References addApv(), SiStripFecKey::ccuAddr(), FedChannelConnection::ccuAddr(), FedChannelConnection::ccuChan(), SiStripFecKey::ccuChan(), FedChannelConnection::dcu(), dcu0x00_, dcuId(), FedChannelConnection::dcuId(), detId(), FedChannelConnection::detId(), FedChannelConnection::fecCrate(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), FedChannelConnection::fecRing(), FedChannelConnection::fecSlot(), SiStripFecKey::fecSlot(), FedChannelConnection::fedCh(), fedCh(), FedChannelConnection::fedCrate(), FedChannelConnection::fedId(), FedChannelConnection::fedSlot(), FedChannelConnection::i2cAddr(), key_, FedChannelConnection::lld(), lld0x60_, sistrip::mlCabling_, FedChannelConnection::mux(), mux0x43_, FedChannelConnection::nApvPairs(), nApvPairs(), FedChannelConnection::pll(), and pll0x44_.

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

                                                                 {
  
  if ( key_.fecCrate() && key_.fecCrate() != conn.fecCrate() ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected FEC crate ("
      << conn.fecCrate() << ") for this module ("
      << key_.fecCrate() << ")!";
    return;
  }

  if ( key_.fecSlot() && key_.fecSlot() != conn.fecSlot() ) {
    edm::LogWarning(mlCabling_)
            << "SiStripModule::" << __func__ << "]"
            << " Unexpected FEC slot ("
            << conn.fecSlot() << ") for this module ("
            << key_.fecSlot() << ")!";
    return;
  }

  if ( key_.fecRing() && key_.fecRing() != conn.fecRing() ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected FEC ring ("
      << conn.fecRing() << ") for this module ("
      << key_.fecRing() << ")!";
    return;
  }

  if ( key_.ccuAddr() && key_.ccuAddr() != conn.ccuAddr() ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected CCU addr ("
      << conn.ccuAddr() << ") for this module ("
      << key_.ccuAddr() << ")!";
    return;
  }

  if ( key_.ccuChan() && key_.ccuChan() != conn.ccuChan() ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected CCU chan ("
      << conn.ccuChan() << ") for this module ("
      << key_.ccuChan() << ")!";
    return;
  }

  // APVs
  if ( conn.i2cAddr(0) ) { addApv( conn.i2cAddr(0) ); }
  if ( conn.i2cAddr(1) ) { addApv( conn.i2cAddr(1) ); }
  
  // Detector
  dcuId( conn.dcuId() ); 
  detId( conn.detId() ); 
  nApvPairs( conn.nApvPairs() ); 
  
  // FED cabling
  FedChannel fed_ch( conn.fedCrate(), 
                     conn.fedSlot(), 
                     conn.fedId(), 
                     conn.fedCh() ); 
  fedCh( conn.i2cAddr(0), fed_ch );
  
  // DCU, MUX, PLL, LLD
  if ( conn.dcu() ) { dcu0x00_ = true; }
  if ( conn.mux() ) { mux0x43_ = true; }
  if ( conn.pll() ) { pll0x44_ = true; }
  if ( conn.lld() ) { lld0x60_ = true; }
  
}
uint16_t SiStripModule::apvPairNumber ( const uint16_t &  lld_channel) const

Returns APV pair (0->1 or 0->2) for given LLD channel (1->3).

Definition at line 243 of file SiStripModule.cc.

References sistrip::mlCabling_, and nApvPairs_.

                                                                         {
  if ( lld_channel < 1 || lld_channel > 3 ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected LLD channel: " << lld_channel;
    return 0;
  }
  if ( nApvPairs_ != 2 && nApvPairs_ != 3 ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected number of APV pairs: " << nApvPairs_;
    return 0;
  }
  if ( nApvPairs_ == 2 && lld_channel == 3 ) { return 1; }
  else if ( nApvPairs_ == 2 && lld_channel == 2 ) { 
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " LLD channel is incompatible with"
      << " respect to number of APV pairs!";
    return 0;
  } else { return lld_channel - 1; }
}
const uint16_t & SiStripModule::ccuAddr ( ) const [inline]

Definition at line 198 of file SiStripModule.h.

References SiStripFecKey::ccuAddr(), and key_.

{ return key_.ccuAddr(); }
const uint16_t & SiStripModule::ccuChan ( ) const [inline]

Definition at line 199 of file SiStripModule.h.

References SiStripFecKey::ccuChan(), and key_.

{ return key_.ccuChan(); }
const uint16_t & SiStripModule::dcu ( ) const [inline]

Identifies whether the DCU device is active ("found") or not.

Definition at line 215 of file SiStripModule.h.

References dcu0x00_.

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

Returns DCU id for this module.

Definition at line 203 of file SiStripModule.h.

References dcuId_.

Referenced by addDevices(), SiStripFedCablingBuilderFromDb::assignDcuAndDetIds(), print(), and terse().

{ return dcuId_; } 
void SiStripModule::dcuId ( const uint32_t &  dcu_id) [inline]

Set DCU id for this module.

Definition at line 208 of file SiStripModule.h.

References dcu0x00_, and dcuId_.

{ if ( dcu_id ) { dcuId_ = dcu_id; dcu0x00_ = true; } }
const uint32_t & SiStripModule::detId ( ) const [inline]

Returns unique (geometry-based) identifier for this module.

Definition at line 204 of file SiStripModule.h.

References detId_.

Referenced by addDevices(), SiStripFedCablingBuilderFromDb::assignDcuAndDetIds(), print(), and terse().

{ return detId_; } 
void SiStripModule::detId ( const uint32_t &  det_id) [inline]

Set DetId for this module.

Definition at line 209 of file SiStripModule.h.

References detId_.

{ if ( det_id ) { detId_ = det_id; } } 
const uint16_t & SiStripModule::fecCrate ( ) const [inline]

Definition at line 195 of file SiStripModule.h.

References SiStripFecKey::fecCrate(), and key_.

{ return key_.fecCrate(); } 
const uint16_t & SiStripModule::fecRing ( ) const [inline]

Definition at line 197 of file SiStripModule.h.

References SiStripFecKey::fecRing(), and key_.

{ return key_.fecRing(); }
const uint16_t & SiStripModule::fecSlot ( ) const [inline]

Definition at line 196 of file SiStripModule.h.

References SiStripFecKey::fecSlot(), and key_.

{ return key_.fecSlot(); } 
bool SiStripModule::fedCh ( const uint16_t &  apv_address,
const FedChannel fed_ch 
)

Sets FedChannel for given APV address (32->37). Returns true if connection made, false otherwise.

Definition at line 321 of file SiStripModule.cc.

References cabling_, and sistrip::mlCabling_.

                                                      {
  // Determine LLD channel
  int16_t lld_ch = 1;
  if      ( apv_address == 32 || apv_address == 33 ) { lld_ch = 1; }
  else if ( apv_address == 34 || apv_address == 35 ) { lld_ch = 2; }
  else if ( apv_address == 36 || apv_address == 37 ) { lld_ch = 3; }
  else if ( apv_address == 0 ) { ; } //@@ do nothing?
  else { 
    edm::LogWarning(mlCabling_) << "[SiStripModule::fedCh]" 
                                << " Unexpected I2C address (" 
                                << apv_address << ") for APV!"; 
    return false;
  }
  // Search for entry in std::map
  //@@ use FedKey as key instead of lld chan? what about "duplicates"? 
  //@@ always append to std::map? then can have >3 entries. useful for debug?
  FedCabling::iterator ipair = cabling_.find( lld_ch );
  if ( ipair == cabling_.end() ) { cabling_[lld_ch] = fed_ch; }
  else { ipair->second = fed_ch; }
  return true;
}
SiStripModule::FedChannel SiStripModule::fedCh ( const uint16_t &  apv_pair_num) const

Returns FedChannel for a given apvPairNumber.

Definition at line 268 of file SiStripModule.cc.

References cabling_, sistrip::mlCabling_, and nApvPairs().

Referenced by addDevices(), SiStripFedCablingBuilderFromDb::buildFecCablingFromDetIds(), SiStripFedCablingBuilderFromDb::buildFecCablingFromDevices(), and SiStripFedCablingFakeESSource::make().

                                                                             {

  FedChannel fed_ch(0,0,0,0);
  
  if ( !nApvPairs() ) {
    
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " No APV pairs exist!";
    return fed_ch; 

  } else {

    uint16_t lld_ch = 0;
    if ( nApvPairs() == 2 ) {

      if      ( apv_pair == 0 ) { lld_ch = 1; }
      else if ( apv_pair == 1 ) { lld_ch = 3; }
      else { 
        edm::LogWarning(mlCabling_)
          << "SiStripModule::" << __func__ << "]"
          << " Unexpected pair number! " << apv_pair;
      }

    } else if ( nApvPairs() == 3 ) {

      if      ( apv_pair == 0 ) { lld_ch = 1; }
      else if ( apv_pair == 1 ) { lld_ch = 2; }
      else if ( apv_pair == 2 ) { lld_ch = 3; }
      else { 
        edm::LogWarning(mlCabling_)
          << "SiStripModule::" << __func__ << "]"
          << " Unexpected pair number! " << apv_pair;
      }

    } else {

      edm::LogWarning(mlCabling_) 
        << "SiStripModule::" << __func__ << "]"
        << " Unexpected number of APV pairs: " << nApvPairs();

    }
    
    FedCabling::const_iterator ipair = cabling_.find( lld_ch );
    if ( ipair != cabling_.end() ) { return (*ipair).second; }
    else { return fed_ch; }

  }

}
const SiStripModule::FedCabling & SiStripModule::fedChannels ( ) const [inline]

Returns map of apvPairNumber and FedChannel.

Definition at line 210 of file SiStripModule.h.

References cabling_.

Referenced by print(), and terse().

{ return cabling_; } 
const SiStripFecKey & SiStripModule::key ( ) const [inline]

Returns control "key" for this module, containing address information on FEC crate, slot, ring, CCU, and module.

Definition at line 201 of file SiStripModule.h.

References key_.

Referenced by SiStripCommissioningSource::fillCablingHistos(), print(), and terse().

{ return key_; }
void SiStripModule::length ( const uint16_t &  length) [inline]

Sets cable length.

Definition at line 213 of file SiStripModule.h.

References length(), and length_.

{ length_ = length; } 
const uint16_t & SiStripModule::length ( ) const [inline]

Returns cable length.

Definition at line 212 of file SiStripModule.h.

References length_.

Referenced by SiStripFedCablingBuilderFromDb::assignDcuAndDetIds(), and length().

{ return length_; } 
const uint16_t & SiStripModule::lld ( ) const [inline]

Identifies whether the LLD device is active ("found") or not.

Definition at line 218 of file SiStripModule.h.

References lld0x60_.

{ return lld0x60_; } 
uint16_t SiStripModule::lldChannel ( const uint16_t &  apv_pair_num) const

Returns LLD channel (1->3) for given APV pair (0->1 or 0->2).

Definition at line 218 of file SiStripModule.cc.

References sistrip::mlCabling_, and nApvPairs_.

                                                                       {
  if ( apv_pair_num > 2 ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected APV pair number: " << apv_pair_num;
    return 0;
  }
  if ( nApvPairs_ != 2 && nApvPairs_ != 3 ) {
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected number of APV pairs: " << nApvPairs_;
    return 0;
  }
  if ( nApvPairs_ == 2 && apv_pair_num == 1 ) { return 3; }
  else if ( nApvPairs_ == 2 && apv_pair_num == 2 ) { 
    edm::LogWarning(mlCabling_)
      << "[SiStripFecCabling::" << __func__ << "]"
      << " APV pair number is incompatible with"
      << " respect to number of !";
    return 0;
  } else { return apv_pair_num + 1; } 
}
const uint16_t & SiStripModule::mux ( ) const [inline]

Identifies whether the MUX device is active ("found") or not.

Definition at line 216 of file SiStripModule.h.

References mux0x43_.

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

Returns number of APV pairs for this module.

Definition at line 205 of file SiStripModule.h.

References nApvPairs_.

Referenced by addDevices(), SiStripFedCablingBuilderFromDb::assignDcuAndDetIds(), SiStripFedCablingBuilderFromDb::buildFecCablingFromDevices(), fedCh(), print(), and terse().

{ return nApvPairs_; }
void SiStripModule::nApvPairs ( const uint16_t &  npairs)

Set number of detector strips for this module.

Definition at line 187 of file SiStripModule.cc.

References apv32_, apv33_, apv34_, apv35_, apv36_, apv37_, sistrip::mlCabling_, and nApvPairs_.

                                                      { 
  if ( npairs == 2 || npairs == 3 ) { nApvPairs_ = npairs; } 
  else if ( npairs == 0 ) {
    nApvPairs_ = 0;
    if ( apv32_ || apv33_ ) { nApvPairs_++; }
    if ( apv34_ || apv35_ ) { nApvPairs_++; }
    if ( apv36_ || apv37_ ) { nApvPairs_++; }
  } else { 
    edm::LogWarning(mlCabling_)
      << "SiStripModule::" << __func__ << "]"
      << " Unexpected number of APV pairs: " 
      << npairs;
  }
} 
uint16_t SiStripModule::nDetStrips ( ) const [inline]

Returns number of detector strips for this module.

Definition at line 206 of file SiStripModule.h.

References nApvPairs_.

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

Identifies whether the PLL device is active ("found") or not.

Definition at line 217 of file SiStripModule.h.

References pll0x44_.

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

Prints some debug information for this module.

Definition at line 346 of file SiStripModule.cc.

References activeApvs(), SiStripFecKey::ccuAddr(), SiStripFecKey::ccuChan(), dcu0x00_, dcuId(), detId(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), fedChannels(), key(), lld0x60_, mux0x43_, nApvPairs(), and pll0x44_.

Referenced by operator<<().

                                                     {

  ss << " [SiStripModule::" << __func__ << "]" << std::endl
     << " Crate/FEC/Ring/CCU/Module               : "
     << key().fecCrate() << "/"
     << key().fecSlot() << "/"
     << key().fecRing() << "/"
     << key().ccuAddr() << "/"
     << key().ccuChan() << std::endl;

  ss << " ActiveApvs                              : ";
  std::vector<uint16_t> apvs = activeApvs();
  if ( apvs.empty() ) { ss << "NONE!"; }
  std::vector<uint16_t>::const_iterator iapv = apvs.begin();
  for ( ; iapv != apvs.end(); iapv++ ) { ss << *iapv << ", "; }
  ss << std::endl;
  
  ss << " DcuId/DetId/nPairs                      : "
     << std::hex
     << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
     << "0x" << std::setfill('0') << std::setw(8) << detId() << "/"
     << std::dec
     << nApvPairs() << std::endl;
  
  FedCabling channels = fedChannels();
  ss << " ApvPairNum/FedCrate/FedSlot/FedId/FedCh : ";
  FedCabling::const_iterator ichan = channels.begin();
  for ( ; ichan != channels.end(); ichan++ ) {
    ss << ichan->first << "/"
       << ichan->second.fedCrate_ << "/"
       << ichan->second.fedSlot_ << "/"
       << ichan->second.fedId_ << "/"
       << ichan->second.fedCh_ << ", ";
  }
  ss << std::endl;
  
  ss << " DCU/MUX/PLL/LLD found                   : "
     << bool(dcu0x00_) << "/"
     << bool(mux0x43_) << "/"
     << bool(pll0x44_) << "/"
     << bool(lld0x60_);
  
}
void SiStripModule::terse ( std::stringstream &  ss) const

Prints some terse debug information for this module.

Definition at line 392 of file SiStripModule.cc.

References activeApvs(), SiStripFecKey::ccuAddr(), SiStripFecKey::ccuChan(), dcu0x00_, dcuId(), detId(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), fedChannels(), key(), lld0x60_, mux0x43_, nApvPairs(), and pll0x44_.

                                                     {

  ss << " [SiStripModule::" << __func__ << "]" << std::endl
     << " Crate/FEC/Ring/CCU/Module               : "
     << key().fecCrate() << "/"
     << key().fecSlot() << "/"
     << key().fecRing() << "/"
     << key().ccuAddr() << "/"
     << key().ccuChan() << std::endl;

  ss << " ActiveApvs                              : ";
  std::vector<uint16_t> apvs = activeApvs();
  if ( apvs.empty() ) { ss << "NONE!"; }
  std::vector<uint16_t>::const_iterator iapv = apvs.begin();
  for ( ; iapv != apvs.end(); iapv++ ) { ss << *iapv << ", "; }
  ss << std::endl;
  
  ss << " DcuId/DetId/nPairs                      : "
     << std::hex
     << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
     << "0x" << std::setfill('0') << std::setw(8) << detId() << "/"
     << std::dec
     << nApvPairs() << std::endl;
  
  FedCabling channels = fedChannels();
  ss << " ApvPairNum/FedCrate/FedSlot/FedId/FedCh : ";
  FedCabling::const_iterator ichan = channels.begin();
  for ( ; ichan != channels.end(); ichan++ ) {
    ss << ichan->first << "/"
       << ichan->second.fedCrate_ << "/"
       << ichan->second.fedSlot_ << "/"
       << ichan->second.fedId_ << "/"
       << ichan->second.fedCh_ << ", ";
  }
  ss << std::endl;
  
  ss << " DCU/MUX/PLL/LLD found                   : "
     << bool(dcu0x00_) << "/"
     << bool(mux0x43_) << "/"
     << bool(pll0x44_) << "/"
     << bool(lld0x60_);
  
}

Member Data Documentation

uint16_t SiStripModule::apv32_ [private]

Definition at line 169 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

uint16_t SiStripModule::apv33_ [private]

Definition at line 170 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

uint16_t SiStripModule::apv34_ [private]

Definition at line 171 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

uint16_t SiStripModule::apv35_ [private]

Definition at line 172 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

uint16_t SiStripModule::apv36_ [private]

Definition at line 173 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

uint16_t SiStripModule::apv37_ [private]

Definition at line 174 of file SiStripModule.h.

Referenced by activeApv(), activeApvPair(), activeApvs(), addApv(), and nApvPairs().

KEY = LLD channel, DATA = FedId + FedCh

Definition at line 188 of file SiStripModule.h.

Referenced by fedCh(), and fedChannels().

uint16_t SiStripModule::dcu0x00_ [private]

Definition at line 177 of file SiStripModule.h.

Referenced by addDevices(), dcu(), dcuId(), print(), and terse().

uint32_t SiStripModule::dcuId_ [private]

Definition at line 183 of file SiStripModule.h.

Referenced by dcuId().

uint32_t SiStripModule::detId_ [private]

Definition at line 184 of file SiStripModule.h.

Referenced by detId().

Control key/path for this module.

Definition at line 166 of file SiStripModule.h.

Referenced by addApv(), addDevices(), ccuAddr(), ccuChan(), fecCrate(), fecRing(), fecSlot(), and key().

uint16_t SiStripModule::length_ [private]

Definition at line 189 of file SiStripModule.h.

Referenced by length().

uint16_t SiStripModule::lld0x60_ [private]

Definition at line 180 of file SiStripModule.h.

Referenced by addDevices(), lld(), print(), and terse().

uint16_t SiStripModule::mux0x43_ [private]

Definition at line 178 of file SiStripModule.h.

Referenced by addDevices(), mux(), print(), and terse().

uint16_t SiStripModule::nApvPairs_ [private]

Definition at line 185 of file SiStripModule.h.

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

uint16_t SiStripModule::pll0x44_ [private]

Definition at line 179 of file SiStripModule.h.

Referenced by addDevices(), pll(), print(), and terse().