#include <CSCReadoutMapping.h>
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< CSCLabel > | mapping_ |
std::string | myName_ |
std::map< int, CSCLabel > | sw2hw_ |
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.
CSCReadoutMapping::CSCReadoutMapping | ( | ) |
Default constructor.
Definition at line 5 of file CSCReadoutMapping.cc.
CSCReadoutMapping::~CSCReadoutMapping | ( | ) | [virtual] |
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 }
bool CSCReadoutMapping::debugV_ [private] |
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().