CMS 3D CMS Logo

Classes | Public Member Functions | Private Member Functions | Private Attributes

CSCReadoutMapping Class Reference

#include <CSCReadoutMapping.h>

Inheritance diagram for CSCReadoutMapping:
CSCReadoutMappingForSliceTest CSCReadoutMappingFromFile

List of all members.

Classes

struct  CSCLabel

Public Member Functions

void addRecord (int endcap, int station, int ring, int chamber, int vmecrate, int dmb, int tmb, int tsector, int cscid, int ddu, int dcc)
int chamber (int endcap, int station, int vmecrate, int dmb, int tmb) const
int crate (const CSCDetId &) const
 returns vmecrate given CSCDetId
 CSCReadoutMapping ()
 Default constructor.
int dccId (const CSCDetId &) const
 returns DCC# given CSCDetId
int dduId (const CSCDetId &) const
 returns DDU# given CSCDetId
bool debugV (void) const
CSCDetId detId (int endcap, int station, int vmecrate, int dmb, int tmb, int cfeb, int layer=0) const
int dmbId (const CSCDetId &) const
 returns dmbId given CSCDetId
virtual void fill (const edm::ParameterSet &)=0
CSCLabel findHardwareId (const CSCDetId &) const
 returns hardware ids given chamber id
const std::string & myName (void) const
void setDebugV (bool dbg)
virtual ~CSCReadoutMapping ()
 Destructor.

Private Member Functions

virtual int hwId (int endcap, int station, int vme, int dmb, int tmb) const =0
int swId (int endcap, int station, int ring, int chamber) const

Private Attributes

bool debugV_
std::map< int, int > hw2sw_
std::vector< CSCLabelmapping_
std::string myName_
std::map< int, CSCLabelsw2hw_

Detailed Description

Author:
Tim Cox Abstract class to define mapping between CSC readout hardware ids and other labels.

Defines the ids and labels in the mapping and supplies translation interface. A derived class must define how hardware labels map to a unique integer. A derived, concrete, class must define from where the mapping information comes.

Definition at line 24 of file CSCReadoutMapping.h.


Constructor & Destructor Documentation

CSCReadoutMapping::CSCReadoutMapping ( )

Default constructor.

Definition at line 5 of file CSCReadoutMapping.cc.

: myName_("CSCReadoutMapping"), debugV_( false ) {}
CSCReadoutMapping::~CSCReadoutMapping ( ) [virtual]

Destructor.

Definition at line 7 of file CSCReadoutMapping.cc.

{}

Member Function Documentation

void CSCReadoutMapping::addRecord ( int  endcap,
int  station,
int  ring,
int  chamber,
int  vmecrate,
int  dmb,
int  tmb,
int  tsector,
int  cscid,
int  ddu,
int  dcc 
)

Add one record of info to mapping

reverse mapping for software -> hadrware labels

Definition at line 49 of file CSCReadoutMapping.cc.

References hw2sw_, hwId(), mapping_, evf::utils::sid, sw2hw_, and swId().

Referenced by CSCReadoutMappingFromFile::fill().

                                                                                      {

  CSCLabel newRecord( endcap, station, ring, chamber, vmecrate, dmb, tmb, tsector, cscid, ddu, dcc );
  mapping_.push_back( newRecord );
  int hid = hwId( endcap, station, vmecrate, dmb, tmb );
  int sid = swId( endcap, station, ring, chamber);
  // LogDebug("CSC") << " map hw " << hid << " to sw " << sid;
  if ( hw2sw_.insert( std::make_pair(hid, sid) ).second ) {
    // LogDebug("CSC") << " insert pair succeeded.";
  }
  else {
    edm::LogError("CSC") << " already have key = " << hid;
  }
  sw2hw_.insert( std::make_pair(sid, newRecord) );

} 
int CSCReadoutMapping::chamber ( int  endcap,
int  station,
int  vmecrate,
int  dmb,
int  tmb 
) const

Return chamber label corresponding to readout ids vme, tmb and dmb for given endcap endcap = 1 (+z), 2 (-z), station, vme crate number, dmb slot number, tmb slot number.

Definition at line 9 of file CSCReadoutMapping.cc.

References hw2sw_, and hwId().

Referenced by detId(), and findHardwareId().

                                                                                         {
  // Build hw id from input, find sw id to match
  int cid = 0;
  int hid = hwId( endcap, station, vme, dmb, tmb );
  // Search for that hw id in mapping
  std::map<int,int>::const_iterator it = hw2sw_.find( hid );
  if ( it != hw2sw_.end() ) {
    cid = it->second;
    //    std::cout << "hwid = " << hid << ", swid = " << cid << std::endl;
    //    LogDebug("CSC") << " for requested hw id = " << hid << ", found sw id = " << cid;
  }
  else {
    edm::LogError("CSC") << " cannot find requested hw id = " << hid << " in mapping.";
  }
  return cid;
}
int CSCReadoutMapping::crate ( const CSCDetId id) const

returns vmecrate given CSCDetId

Definition at line 89 of file CSCReadoutMapping.cc.

References findHardwareId(), and CSCReadoutMapping::CSCLabel::vmecrate_.

                                                      {
  CSCLabel hid = findHardwareId(id);
  return hid.vmecrate_;
}
int CSCReadoutMapping::dccId ( const CSCDetId id) const

returns DCC# given CSCDetId

Definition at line 101 of file CSCReadoutMapping.cc.

References CSCReadoutMapping::CSCLabel::dcc_, and findHardwareId().

                                                      {
  CSCLabel hid = findHardwareId(id);
  return hid.dcc_;
}
int CSCReadoutMapping::dduId ( const CSCDetId id) const

returns DDU# given CSCDetId

Definition at line 97 of file CSCReadoutMapping.cc.

References CSCReadoutMapping::CSCLabel::ddu_, and findHardwareId().

                                                      {
  CSCLabel hid = findHardwareId(id);
  return hid.ddu_;
}
bool CSCReadoutMapping::debugV ( void  ) const [inline]

Status of debug printout flag

Definition at line 104 of file CSCReadoutMapping.h.

References debugV_.

{ return debugV_; }
CSCDetId CSCReadoutMapping::detId ( int  endcap,
int  station,
int  vmecrate,
int  dmb,
int  tmb,
int  cfeb,
int  layer = 0 
) const

Return CSCDetId for layer corresponding to readout ids vme, tmb, and dmb for given endcap and layer no. 1-6, or for chamber if no layer no. supplied. Args: endcap = 1 (+z), 2 (-z), station, vme crate number, dmb slot number, tmb slot number, cfeb number (so we can identify ME1a/b within ME11), layer number

Definition at line 26 of file CSCReadoutMapping.cc.

References chamber(), CSCDetId, Reference_intrackfit_cff::endcap, relativeConstraints::ring, and relativeConstraints::station.

                          {

  // Find CSCDetId index of chamber corresponding to the hardware readout arguments
  int cid = chamber( endcap, station, vme, dmb, tmb );

  // Decode the individual labels
  // ... include endcap & station for MTCC when they are unique in the mapping file
  // and so do not need to be specified as input arguments
      endcap  = CSCDetId::endcap( cid );
      station = CSCDetId::station( cid );
  int chamber = CSCDetId::chamber( cid );
  int ring    = CSCDetId::ring( cid );

  // Now sort out ME1a from ME11-combined
  // cfeb =0-3 for ME1b, cfeb=4 for ME1a
  if ( station == 1  && ring == 1 && cfeb == 4 ) {
      // This is ME1a region
      ring = 4; // reset from 1 to 4 which flags ME1a
  }
  return CSCDetId( endcap, station, ring, chamber, layer );
}
int CSCReadoutMapping::dmbId ( const CSCDetId id) const

returns dmbId given CSCDetId

Definition at line 93 of file CSCReadoutMapping.cc.

References CSCReadoutMapping::CSCLabel::dmb_, and findHardwareId().

                                                      {
  CSCLabel hid = findHardwareId(id);
  return hid.dmb_;
}
virtual void CSCReadoutMapping::fill ( const edm::ParameterSet ) [pure virtual]

Fill mapping store

Implemented in CSCReadoutMappingFromFile.

CSCReadoutMapping::CSCLabel CSCReadoutMapping::findHardwareId ( const CSCDetId id) const

returns hardware ids given chamber id

Search for that sw id in mapping

Definition at line 73 of file CSCReadoutMapping.cc.

References chamber(), Reference_intrackfit_cff::endcap, CSCDetId::rawIdMaker(), relativeConstraints::ring, evf::utils::sid, relativeConstraints::station, and sw2hw_.

Referenced by crate(), dccId(), dduId(), and dmbId().

                                                                                    {
  CSCLabel hid;
  int sid=CSCDetId::rawIdMaker(id.endcap(), id.station(), id.ring(), id.chamber(), 0 );  
  std::map<int,CSCLabel>::const_iterator it = sw2hw_.find( sid );
  if ( it != sw2hw_.end() ) {
    hid = it->second;
    //    std::cout << "hwid = " << hid << ", swid = " << cid << std::endl;
    //    LogDebug("CSC") << " for requested hw id = " << hid << ", found sw id = " << cid;
  }
  else {
    edm::LogError("CSC") << " cannot find requested sw id = " << id << " in mapping.";
  }
  return hid;
}
virtual int CSCReadoutMapping::hwId ( int  endcap,
int  station,
int  vme,
int  dmb,
int  tmb 
) const [private, pure virtual]

Build a unique integer out of the readout electronics labels.

In general this must depend on endcap and station, as well as vme crate number and dmb slot number. And possibly tmb slot?

Implemented in CSCReadoutMappingForSliceTest.

Referenced by addRecord(), and chamber().

const std::string& CSCReadoutMapping::myName ( void  ) const [inline]

Return class name

Definition at line 109 of file CSCReadoutMapping.h.

References myName_.

{ return myName_; }
void CSCReadoutMapping::setDebugV ( bool  dbg) [inline]

Set debug printout flag

Definition at line 99 of file CSCReadoutMapping.h.

References debugV_.

{ debugV_ = dbg; }
int CSCReadoutMapping::swId ( int  endcap,
int  station,
int  ring,
int  chamber 
) const [private]

Build a unique integer out of chamber labels.

We'll probably use rawId of CSCDetId... You know it makes sense!

Definition at line 68 of file CSCReadoutMapping.cc.

References CSCDetId::rawIdMaker().

Referenced by addRecord().

                                                                                  {
  // Software id is just CSCDetId for the chamber - but no distinction within ME11
  return CSCDetId::rawIdMaker( endcap, station, ring, chamber, 0 ); // usual detid for chamber, i.e. layer=0
}

Member Data Documentation

Definition at line 129 of file CSCReadoutMapping.h.

Referenced by debugV(), and setDebugV().

std::map< int, int > CSCReadoutMapping::hw2sw_ [private]

Definition at line 131 of file CSCReadoutMapping.h.

Referenced by addRecord(), and chamber().

std::vector< CSCLabel > CSCReadoutMapping::mapping_ [private]

Definition at line 130 of file CSCReadoutMapping.h.

Referenced by addRecord().

std::string CSCReadoutMapping::myName_ [private]

Definition at line 128 of file CSCReadoutMapping.h.

Referenced by myName().

std::map< int, CSCLabel > CSCReadoutMapping::sw2hw_ [private]

Definition at line 132 of file CSCReadoutMapping.h.

Referenced by addRecord(), and findHardwareId().