CMS 3D CMS Logo

SiStripModule Class Reference

Author:
R.Bainbridge
More...

#include <CalibFormats/SiStripObjects/interface/SiStripModule.h>

List of all members.

Public Types

typedef std::map< uint16_t,
FedChannel
FedCabling
 Map between LLD channel and FED channel.
typedef std::pair< uint16_t,
uint16_t > 
PairOfU16
 Pair containing FED id/channel.

Public Member Functions

const uint16_t & 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.
PairOfU16 activeApvPair (const uint16_t &lld_channel) const
 Identifies APV pairs that are active for given LLD channel (1->3).
std::vector< uint16_t > activeApvs () const
 Returns I2C addresses of active ("found") APVs.
void addApv (const uint16_t &apv_address)
 Add APV to module using I2C address (32->37).
void addDevices (const FedChannelConnection &conn)
 Sets device info (addresses, DetID, etc) for this module.
uint16_t apvPairNumber (const uint16_t &lld_channel) const
 Returns APV pair (0->1 or 0->2) for given LLD channel (1->3).
const uint16_t & ccuAddr () const
const uint16_t & ccuChan () const
const uint16_t & dcu () const
 Identifies whether the DCU device is active ("found") or not.
void dcuId (const uint32_t &dcu_id)
 Set DCU id for this module.
const uint32_t & dcuId () const
 Returns DCU id for this module.
void detId (const uint32_t &det_id)
 Set DetId for this module.
const uint32_t & detId () const
 Returns unique (geometry-based) identifier for this module.
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)
 Sets FedChannel for given APV address (32->37).
FedChannel fedCh (const uint16_t &apv_pair_num) const
 Returns FedChannel for a given apvPairNumber.
const FedCablingfedChannels () const
 Returns map of apvPairNumber and FedChannel.
const SiStripFecKeykey () const
 Returns control "key" for this module, containing address information on FEC crate, slot, ring, CCU, and module.
void length (const uint16_t &length)
 Sets cable length.
const uint16_t & length () const
 Returns cable length.
const uint16_t & lld () const
 Identifies whether the LLD device is active ("found") or not.
uint16_t lldChannel (const uint16_t &apv_pair_num) const
 Returns LLD channel (1->3) for given APV pair (0->1 or 0->2).
const uint16_t & mux () const
 Identifies whether the MUX device is active ("found") or not.
void nApvPairs (const uint16_t &npairs)
 Set number of detector strips for this module.
const uint16_t & nApvPairs () const
 Returns number of APV pairs for this module.
uint16_t nDetStrips () const
 Returns number of detector strips for this module.
const uint16_t & pll () const
 Identifies whether the PLL device is active ("found") or not.
void print (std::stringstream &) const
 Prints some debug information for this module.
 SiStripModule (const FedChannelConnection &conn)
 Constructor.
void terse (std::stringstream &) const
 Prints some terse debug information for this module.
 ~SiStripModule ()
 Default constructor.

Private Attributes

uint16_t apv32_
uint16_t apv33_
uint16_t apv34_
uint16_t apv35_
uint16_t apv36_
uint16_t apv37_
FedCabling cabling_
 KEY = LLD channel, DATA = FedId + FedCh.
uint16_t dcu0x00_
uint32_t dcuId_
uint32_t detId_
SiStripFecKey key_
 Control key/path for this module.
uint16_t length_
uint16_t lld0x60_
uint16_t mux0x43_
uint16_t nApvPairs_
uint16_t pll0x44_

Classes

class  FedChannel
 Struct containing FED crate/slot/id/channel. More...


Detailed Description

Author:
R.Bainbridge

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

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

00014   : key_( conn.fecCrate(), 
00015           conn.fecSlot(), 
00016           conn.fecRing(), 
00017           conn.ccuAddr(), 
00018           conn.ccuChan() ),
00019     apv32_(0), 
00020     apv33_(0), 
00021     apv34_(0), 
00022     apv35_(0), 
00023     apv36_(0), 
00024     apv37_(0), 
00025     dcu0x00_(0), 
00026     mux0x43_(0), 
00027     pll0x44_(0), 
00028     lld0x60_(0), 
00029     dcuId_(0), 
00030     detId_(0), 
00031     nApvPairs_(0),
00032     cabling_(), 
00033     length_(0) 
00034 { 
00035   addDevices( conn ); 
00036 }

SiStripModule::~SiStripModule (  )  [inline]

Default constructor.

Definition at line 35 of file SiStripModule.h.

00035 {;}


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

00126                                                                              {
00127   if      ( apv_address == 0 || apv_address == 32 ) { return apv32_; }
00128   else if ( apv_address == 1 || apv_address == 33 ) { return apv33_; }
00129   else if ( apv_address == 2 || apv_address == 34 ) { return apv34_; }
00130   else if ( apv_address == 3 || apv_address == 35 ) { return apv35_; }
00131   else if ( apv_address == 4 || apv_address == 36 ) { return apv36_; }
00132   else if ( apv_address == 5 || apv_address == 37 ) { return apv37_; }
00133   else {
00134     edm::LogWarning(mlCabling_)
00135       << "SiStripModule::" << __func__ << "]"
00136       << " Unexpected I2C address or number (" 
00137       << apv_address << ") for this module!";
00138   }
00139   static const uint16_t address = 0;
00140   return address;
00141 }

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

00204                                                                                        {
00205   if      ( lld_channel == 1 ) { return PairOfU16(apv32_,apv33_); }
00206   else if ( lld_channel == 2 ) { return PairOfU16(apv34_,apv35_); }
00207   else if ( lld_channel == 3 ) { return PairOfU16(apv36_,apv37_); }
00208   else { 
00209     edm::LogWarning(mlCabling_)
00210       << "SiStripModule::" << __func__ << "]"
00211       << " Unexpected LLD channel: " << lld_channel;
00212     return PairOfU16(0,0); 
00213   }
00214 }

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

00113                                                     {
00114   std::vector<uint16_t> apvs;
00115   if ( apv32_ ) { apvs.push_back( apv32_ ); }
00116   if ( apv33_ ) { apvs.push_back( apv33_ ); }
00117   if ( apv34_ ) { apvs.push_back( apv34_ ); }
00118   if ( apv35_ ) { apvs.push_back( apv35_ ); }
00119   if ( apv36_ ) { apvs.push_back( apv36_ ); }
00120   if ( apv37_ ) { apvs.push_back( apv37_ ); }
00121   return apvs;
00122 }

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_, sistrip::mlCabling_, and ss.

Referenced by addDevices().

00145                                                         {
00146 
00147   // Some checks on value of APV I2C address
00148   if ( apv_address == 0 ) {
00149     edm::LogWarning(mlCabling_)
00150       << "SiStripModule::" << __func__ << "]"
00151       << " Null APV I2C address!"; 
00152     return;
00153   } else if ( apv_address < 32 && apv_address > 37 ) {
00154     edm::LogWarning(mlCabling_)
00155             << "SiStripModule::" << __func__ << "]"
00156             << " Unexpected I2C address (" 
00157             << apv_address << ") for APV!"; 
00158     return;
00159   }
00160 
00161   bool added_apv = false; 
00162   if      ( !apv32_ && apv_address == 32 ) { apv32_ = 32; added_apv = true; }
00163   else if ( !apv33_ && apv_address == 33 ) { apv33_ = 33; added_apv = true; }
00164   else if ( !apv34_ && apv_address == 34 ) { apv34_ = 34; added_apv = true; }
00165   else if ( !apv35_ && apv_address == 35 ) { apv35_ = 35; added_apv = true; }
00166   else if ( !apv36_ && apv_address == 36 ) { apv36_ = 36; added_apv = true; }
00167   else if ( !apv37_ && apv_address == 37 ) { apv37_ = 37; added_apv = true; }
00168   
00169   std::stringstream ss;
00170   ss << "SiStripModule::" << __func__ << "]";
00171   if ( added_apv ) { ss << " Added new APV for"; }
00172   else { ss << " APV already exists for"; }
00173   ss << " Crate/FEC/Ring/CCU/Module: "
00174      << key_.fecCrate() << "/"
00175      << key_.fecSlot() << "/"
00176      << key_.fecRing() << "/"
00177      << key_.ccuAddr() << "/"
00178      << key_.ccuChan() << "/"
00179      << apv_address;
00180   //if ( added_apv ) { LogTrace(mlCabling_) << ss.str(); }
00181   /* else */ if ( !added_apv ) { edm::LogWarning(mlCabling_) << ss.str(); }
00182   
00183 }

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

00040                                                                  {
00041   
00042   if ( key_.fecCrate() && key_.fecCrate() != conn.fecCrate() ) {
00043     edm::LogWarning(mlCabling_)
00044       << "SiStripModule::" << __func__ << "]"
00045       << " Unexpected FEC crate ("
00046       << conn.fecCrate() << ") for this module ("
00047       << key_.fecCrate() << ")!";
00048     return;
00049   }
00050 
00051   if ( key_.fecSlot() && key_.fecSlot() != conn.fecSlot() ) {
00052     edm::LogWarning(mlCabling_)
00053             << "SiStripModule::" << __func__ << "]"
00054             << " Unexpected FEC slot ("
00055             << conn.fecSlot() << ") for this module ("
00056             << key_.fecSlot() << ")!";
00057     return;
00058   }
00059 
00060   if ( key_.fecRing() && key_.fecRing() != conn.fecRing() ) {
00061     edm::LogWarning(mlCabling_)
00062       << "SiStripModule::" << __func__ << "]"
00063       << " Unexpected FEC ring ("
00064       << conn.fecRing() << ") for this module ("
00065       << key_.fecRing() << ")!";
00066     return;
00067   }
00068 
00069   if ( key_.ccuAddr() && key_.ccuAddr() != conn.ccuAddr() ) {
00070     edm::LogWarning(mlCabling_)
00071       << "SiStripModule::" << __func__ << "]"
00072       << " Unexpected CCU addr ("
00073       << conn.ccuAddr() << ") for this module ("
00074       << key_.ccuAddr() << ")!";
00075     return;
00076   }
00077 
00078   if ( key_.ccuChan() && key_.ccuChan() != conn.ccuChan() ) {
00079     edm::LogWarning(mlCabling_)
00080       << "SiStripModule::" << __func__ << "]"
00081       << " Unexpected CCU chan ("
00082       << conn.ccuChan() << ") for this module ("
00083       << key_.ccuChan() << ")!";
00084     return;
00085   }
00086 
00087   // APVs
00088   if ( conn.i2cAddr(0) ) { addApv( conn.i2cAddr(0) ); }
00089   if ( conn.i2cAddr(1) ) { addApv( conn.i2cAddr(1) ); }
00090   
00091   // Detector
00092   dcuId( conn.dcuId() ); 
00093   detId( conn.detId() ); 
00094   nApvPairs( conn.nApvPairs() ); 
00095   
00096   // FED cabling
00097   FedChannel fed_ch( conn.fedCrate(), 
00098                      conn.fedSlot(), 
00099                      conn.fedId(), 
00100                      conn.fedCh() ); 
00101   fedCh( conn.i2cAddr(0), fed_ch );
00102   
00103   // DCU, MUX, PLL, LLD
00104   if ( conn.dcu() ) { dcu0x00_ = true; }
00105   if ( conn.mux() ) { mux0x43_ = true; }
00106   if ( conn.pll() ) { pll0x44_ = true; }
00107   if ( conn.lld() ) { lld0x60_ = true; }
00108   
00109 }

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

00243                                                                          {
00244   if ( lld_channel < 1 || lld_channel > 3 ) {
00245     edm::LogWarning(mlCabling_)
00246       << "SiStripModule::" << __func__ << "]"
00247       << " Unexpected LLD channel: " << lld_channel;
00248     return 0;
00249   }
00250   if ( nApvPairs_ != 2 && nApvPairs_ != 3 ) {
00251     edm::LogWarning(mlCabling_)
00252       << "SiStripModule::" << __func__ << "]"
00253       << " Unexpected number of APV pairs: " << nApvPairs_;
00254     return 0;
00255   }
00256   if ( nApvPairs_ == 2 && lld_channel == 3 ) { return 1; }
00257   else if ( nApvPairs_ == 2 && lld_channel == 2 ) { 
00258     edm::LogWarning(mlCabling_)
00259       << "SiStripModule::" << __func__ << "]"
00260       << " LLD channel is incompatible with"
00261       << " respect to number of APV pairs!";
00262     return 0;
00263   } else { return lld_channel - 1; }
00264 }

const uint16_t & SiStripModule::ccuAddr (  )  const [inline]

Definition at line 198 of file SiStripModule.h.

References SiStripFecKey::ccuAddr(), and key_.

00198 { return key_.ccuAddr(); }

const uint16_t & SiStripModule::ccuChan (  )  const [inline]

Definition at line 199 of file SiStripModule.h.

References SiStripFecKey::ccuChan(), and key_.

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

00215 { return dcu0x00_; } 

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

00208 { if ( dcu_id ) { dcuId_ = dcu_id; dcu0x00_ = true; } }

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(), SiStripFedCablingTrivialBuilder::makeFedCabling(), print(), and terse().

00203 { return dcuId_; } 

void SiStripModule::detId ( const uint32_t &  det_id  )  [inline]

Set DetId for this module.

Definition at line 209 of file SiStripModule.h.

References detId_.

00209 { if ( det_id ) { detId_ = det_id; } } 

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(), SiStripFedCablingTrivialBuilder::makeFedCabling(), print(), and terse().

00204 { return detId_; } 

const uint16_t & SiStripModule::fecCrate (  )  const [inline]

Definition at line 195 of file SiStripModule.h.

References SiStripFecKey::fecCrate(), and key_.

00195 { return key_.fecCrate(); } 

const uint16_t & SiStripModule::fecRing (  )  const [inline]

Definition at line 197 of file SiStripModule.h.

References SiStripFecKey::fecRing(), and key_.

00197 { return key_.fecRing(); }

const uint16_t & SiStripModule::fecSlot (  )  const [inline]

Definition at line 196 of file SiStripModule.h.

References SiStripFecKey::fecSlot(), and key_.

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

00322                                                       {
00323   // Determine LLD channel
00324   int16_t lld_ch = 1;
00325   if      ( apv_address == 32 || apv_address == 33 ) { lld_ch = 1; }
00326   else if ( apv_address == 34 || apv_address == 35 ) { lld_ch = 2; }
00327   else if ( apv_address == 36 || apv_address == 37 ) { lld_ch = 3; }
00328   else if ( apv_address == 0 ) { ; } //@@ do nothing?
00329   else { 
00330     edm::LogWarning(mlCabling_) << "[SiStripModule::fedCh]" 
00331                                 << " Unexpected I2C address (" 
00332                                 << apv_address << ") for APV!"; 
00333     return false;
00334   }
00335   // Search for entry in std::map
00336   //@@ use FedKey as key instead of lld chan? what about "duplicates"? 
00337   //@@ always append to std::map? then can have >3 entries. useful for debug?
00338   FedCabling::iterator ipair = cabling_.find( lld_ch );
00339   if ( ipair == cabling_.end() ) { cabling_[lld_ch] = fed_ch; }
00340   else { ipair->second = fed_ch; }
00341   return true;
00342 }

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

00268                                                                              {
00269 
00270   FedChannel fed_ch(0,0,0,0);
00271   
00272   if ( !nApvPairs() ) {
00273     
00274     edm::LogWarning(mlCabling_)
00275       << "SiStripModule::" << __func__ << "]"
00276       << " No APV pairs exist!";
00277     return fed_ch; 
00278 
00279   } else {
00280 
00281     uint16_t lld_ch;
00282     if ( nApvPairs() == 2 ) {
00283 
00284       if      ( apv_pair == 0 ) { lld_ch = 1; }
00285       else if ( apv_pair == 1 ) { lld_ch = 3; }
00286       else { 
00287         edm::LogWarning(mlCabling_)
00288           << "SiStripModule::" << __func__ << "]"
00289           << " Unexpected pair number! " << apv_pair;
00290       }
00291 
00292     } else if ( nApvPairs() == 3 ) {
00293 
00294       if      ( apv_pair == 0 ) { lld_ch = 1; }
00295       else if ( apv_pair == 1 ) { lld_ch = 2; }
00296       else if ( apv_pair == 2 ) { lld_ch = 3; }
00297       else { 
00298         edm::LogWarning(mlCabling_)
00299           << "SiStripModule::" << __func__ << "]"
00300           << " Unexpected pair number! " << apv_pair;
00301       }
00302 
00303     } else {
00304 
00305       edm::LogWarning(mlCabling_) 
00306         << "SiStripModule::" << __func__ << "]"
00307         << " Unexpected number of APV pairs: " << nApvPairs();
00308 
00309     }
00310     
00311     FedCabling::const_iterator ipair = cabling_.find( lld_ch );
00312     if ( ipair != cabling_.end() ) { return (*ipair).second; }
00313     else { return fed_ch; }
00314 
00315   }
00316 
00317 }

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

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

00201 { return key_; }

void SiStripModule::length ( const uint16_t &  length  )  [inline]

Sets cable length.

Definition at line 213 of file SiStripModule.h.

References length_.

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

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

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

00218                                                                        {
00219   if ( apv_pair_num > 2 ) {
00220     edm::LogWarning(mlCabling_)
00221       << "SiStripModule::" << __func__ << "]"
00222       << " Unexpected APV pair number: " << apv_pair_num;
00223     return 0;
00224   }
00225   if ( nApvPairs_ != 2 && nApvPairs_ != 3 ) {
00226     edm::LogWarning(mlCabling_)
00227       << "SiStripModule::" << __func__ << "]"
00228       << " Unexpected number of APV pairs: " << nApvPairs_;
00229     return 0;
00230   }
00231   if ( nApvPairs_ == 2 && apv_pair_num == 1 ) { return 3; }
00232   else if ( nApvPairs_ == 2 && apv_pair_num == 3 ) { 
00233     edm::LogWarning(mlCabling_)
00234       << "[SiStripFecCabling::" << __func__ << "]"
00235       << " APV pair number is incompatible with"
00236       << " respect to number of !";
00237     return 0;
00238   } else { return apv_pair_num + 1; } 
00239 }

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

00216 { return mux0x43_; } 

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

00187                                                       { 
00188   if ( npairs == 2 || npairs == 3 ) { nApvPairs_ = npairs; } 
00189   else if ( npairs == 0 ) {
00190     nApvPairs_ = 0;
00191     if ( apv32_ || apv33_ ) { nApvPairs_++; }
00192     if ( apv34_ || apv35_ ) { nApvPairs_++; }
00193     if ( apv36_ || apv37_ ) { nApvPairs_++; }
00194   } else { 
00195     edm::LogWarning(mlCabling_)
00196       << "SiStripModule::" << __func__ << "]"
00197       << " Unexpected number of APV pairs: " 
00198       << npairs;
00199   }
00200 } 

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(), fedCh(), SiStripFedCablingTrivialBuilder::makeFedCabling(), print(), and terse().

00205 { return nApvPairs_; }

uint16_t SiStripModule::nDetStrips (  )  const [inline]

Returns number of detector strips for this module.

Definition at line 206 of file SiStripModule.h.

References nApvPairs_.

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

00217 { 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(), lat::endl(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), fedChannels(), key(), lld0x60_, mux0x43_, nApvPairs(), and pll0x44_.

Referenced by operator<<().

00346                                                      {
00347 
00348   ss << " [SiStripModule::" << __func__ << "]" << std::endl
00349      << " Crate/FEC/Ring/CCU/Module               : "
00350      << key().fecCrate() << "/"
00351      << key().fecSlot() << "/"
00352      << key().fecRing() << "/"
00353      << key().ccuAddr() << "/"
00354      << key().ccuChan() << std::endl;
00355 
00356   ss << " ActiveApvs                              : ";
00357   std::vector<uint16_t> apvs = activeApvs();
00358   if ( apvs.empty() ) { ss << "NONE!"; }
00359   std::vector<uint16_t>::const_iterator iapv = apvs.begin();
00360   for ( ; iapv != apvs.end(); iapv++ ) { ss << *iapv << ", "; }
00361   ss << std::endl;
00362   
00363   ss << " DcuId/DetId/nPairs                      : "
00364      << std::hex
00365      << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
00366      << "0x" << std::setfill('0') << std::setw(8) << detId() << "/"
00367      << std::dec
00368      << nApvPairs() << std::endl;
00369   
00370   FedCabling channels = fedChannels();
00371   ss << " ApvPairNum/FedCrate/FedSlot/FedId/FedCh : ";
00372   FedCabling::const_iterator ichan = channels.begin();
00373   for ( ; ichan != channels.end(); ichan++ ) {
00374     ss << ichan->first << "/"
00375        << ichan->second.fedCrate_ << "/"
00376        << ichan->second.fedSlot_ << "/"
00377        << ichan->second.fedId_ << "/"
00378        << ichan->second.fedCh_ << ", ";
00379   }
00380   ss << std::endl;
00381   
00382   ss << " DCU/MUX/PLL/LLD found                   : "
00383      << bool(dcu0x00_) << "/"
00384      << bool(mux0x43_) << "/"
00385      << bool(pll0x44_) << "/"
00386      << bool(lld0x60_);
00387   
00388 }

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(), lat::endl(), SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), fedChannels(), key(), lld0x60_, mux0x43_, nApvPairs(), and pll0x44_.

00392                                                      {
00393 
00394   ss << " [SiStripModule::" << __func__ << "]" << std::endl
00395      << " Crate/FEC/Ring/CCU/Module               : "
00396      << key().fecCrate() << "/"
00397      << key().fecSlot() << "/"
00398      << key().fecRing() << "/"
00399      << key().ccuAddr() << "/"
00400      << key().ccuChan() << std::endl;
00401 
00402   ss << " ActiveApvs                              : ";
00403   std::vector<uint16_t> apvs = activeApvs();
00404   if ( apvs.empty() ) { ss << "NONE!"; }
00405   std::vector<uint16_t>::const_iterator iapv = apvs.begin();
00406   for ( ; iapv != apvs.end(); iapv++ ) { ss << *iapv << ", "; }
00407   ss << std::endl;
00408   
00409   ss << " DcuId/DetId/nPairs                      : "
00410      << std::hex
00411      << "0x" << std::setfill('0') << std::setw(8) << dcuId() << "/"
00412      << "0x" << std::setfill('0') << std::setw(8) << detId() << "/"
00413      << std::dec
00414      << nApvPairs() << std::endl;
00415   
00416   FedCabling channels = fedChannels();
00417   ss << " ApvPairNum/FedCrate/FedSlot/FedId/FedCh : ";
00418   FedCabling::const_iterator ichan = channels.begin();
00419   for ( ; ichan != channels.end(); ichan++ ) {
00420     ss << ichan->first << "/"
00421        << ichan->second.fedCrate_ << "/"
00422        << ichan->second.fedSlot_ << "/"
00423        << ichan->second.fedId_ << "/"
00424        << ichan->second.fedCh_ << ", ";
00425   }
00426   ss << std::endl;
00427   
00428   ss << " DCU/MUX/PLL/LLD found                   : "
00429      << bool(dcu0x00_) << "/"
00430      << bool(mux0x43_) << "/"
00431      << bool(pll0x44_) << "/"
00432      << bool(lld0x60_);
00433   
00434 }


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

FedCabling SiStripModule::cabling_ [private]

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

SiStripFecKey SiStripModule::key_ [private]

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


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:25 2009 for CMSSW by  doxygen 1.5.4