CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes | Friends
CSCReadoutMapping Class Referenceabstract

#include <CSCReadoutMapping.h>

Inheritance diagram for CSCReadoutMapping:
CSCReadoutMappingForSliceTest CSCReadoutMappingFromFile

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 More...
 
 CSCReadoutMapping ()
 Default constructor. More...
 
int dccId (const CSCDetId &) const
 returns DCC# given CSCDetId More...
 
int dduId (const CSCDetId &) const
 returns DDU# given CSCDetId More...
 
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 More...
 
virtual void fill (const edm::ParameterSet &)=0
 
CSCLabel findHardwareId (const CSCDetId &) const
 returns hardware ids given chamber id More...
 
const std::string & myName (void) const
 
void setDebugV (bool dbg)
 
virtual ~CSCReadoutMapping ()
 Destructor. More...
 

Private Member Functions

virtual int hwId (int endcap, int station, int vme, int dmb, int tmb) const =0
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
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_
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

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 26 of file CSCReadoutMapping.h.

Constructor & Destructor Documentation

◆ CSCReadoutMapping()

CSCReadoutMapping::CSCReadoutMapping ( )

Default constructor.

Definition at line 5 of file CSCReadoutMapping.cc.

5 : myName_("CSCReadoutMapping"), debugV_(false) {}

◆ ~CSCReadoutMapping()

CSCReadoutMapping::~CSCReadoutMapping ( )
virtual

Destructor.

Definition at line 7 of file CSCReadoutMapping.cc.

7 {}

Member Function Documentation

◆ addRecord()

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 47 of file CSCReadoutMapping.cc.

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

References chamber(), makeMuonMisalignmentScenario::endcap, hw2sw_, hwId(), mapping_, relativeConstraints::ring, relativeConstraints::station, sw2hw_, and swId().

Referenced by CSCReadoutMappingFromFile::fill().

◆ chamber()

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.

9  {
10  // Build hw id from input, find sw id to match
11  int cid = 0;
12  int hid = hwId(endcap, station, vme, dmb, tmb);
13  // Search for that hw id in mapping
14  std::map<int, int>::const_iterator it = hw2sw_.find(hid);
15  if (it != hw2sw_.end()) {
16  cid = it->second;
17  // std::cout << "hwid = " << hid << ", swid = " << cid << std::endl;
18  // LogDebug("CSC") << " for requested hw id = " << hid << ", found sw id = " << cid;
19  } else {
20  edm::LogError("CSC") << " cannot find requested hw id = " << hid << " in mapping.";
21  }
22  return cid;
23 }

References makeMuonMisalignmentScenario::endcap, hw2sw_, hwId(), and relativeConstraints::station.

Referenced by addRecord(), detId(), findHardwareId(), geometryXMLparser.CSCAlignable::index(), and swId().

◆ crate()

int CSCReadoutMapping::crate ( const CSCDetId id) const

returns vmecrate given CSCDetId

Definition at line 92 of file CSCReadoutMapping.cc.

92  {
93  CSCLabel hid = findHardwareId(id);
94  return hid.vmecrate_;
95 }

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

◆ dccId()

int CSCReadoutMapping::dccId ( const CSCDetId id) const

returns DCC# given CSCDetId

Definition at line 104 of file CSCReadoutMapping.cc.

104  {
105  CSCLabel hid = findHardwareId(id);
106  return hid.dcc_;
107 }

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

◆ dduId()

int CSCReadoutMapping::dduId ( const CSCDetId id) const

returns DDU# given CSCDetId

Definition at line 100 of file CSCReadoutMapping.cc.

100  {
101  CSCLabel hid = findHardwareId(id);
102  return hid.ddu_;
103 }

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

◆ debugV()

bool CSCReadoutMapping::debugV ( void  ) const
inline

Status of debug printout flag

Definition at line 132 of file CSCReadoutMapping.h.

132 { return debugV_; }

References debugV_.

◆ detId()

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 25 of file CSCReadoutMapping.cc.

25  {
26  // Find CSCDetId index of chamber corresponding to the hardware readout arguments
27  int cid = chamber(endcap, station, vme, dmb, tmb);
28 
29  // Decode the individual labels
30  // ... include endcap & station for MTCC when they are unique in the mapping file
31  // and so do not need to be specified as input arguments
32  endcap = CSCDetId::endcap(cid);
34  int chamber = CSCDetId::chamber(cid);
35  int ring = CSCDetId::ring(cid);
36 
37  // Now sort out ME1a from ME11-combined
38  // cfeb =0-3 for ME1b, cfeb=4 for ME1a (pre-LS1) cfeb=4-6 (post-LS1)
39  if (station == 1 && ring == 1 && cfeb >= 4 && cfeb <= 6) {
40  // This is ME1a region
41  ring = 4; // reset from 1 to 4 which flags ME1a
42  }
43 
44  return CSCDetId(endcap, station, ring, chamber, layer);
45 }

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

◆ dmbId()

int CSCReadoutMapping::dmbId ( const CSCDetId id) const

returns dmbId given CSCDetId

Definition at line 96 of file CSCReadoutMapping.cc.

96  {
97  CSCLabel hid = findHardwareId(id);
98  return hid.dmb_;
99 }

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

◆ fill()

virtual void CSCReadoutMapping::fill ( const edm::ParameterSet )
pure virtual

Fill mapping store

Implemented in CSCReadoutMappingFromFile.

◆ findHardwareId()

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

returns hardware ids given chamber id

Search for that sw id in mapping

Definition at line 77 of file CSCReadoutMapping.cc.

77  {
78  CSCLabel hid;
79  int sid = CSCDetId::rawIdMaker(id.endcap(), id.station(), id.ring(), id.chamber(), 0);
81  std::map<int, CSCLabel>::const_iterator it = sw2hw_.find(sid);
82  if (it != sw2hw_.end()) {
83  hid = it->second;
84  // std::cout << "hwid = " << hid << ", swid = " << cid << std::endl;
85  // LogDebug("CSC") << " for requested hw id = " << hid << ", found sw id = " << cid;
86  } else {
87  edm::LogError("CSC") << " cannot find requested sw id = " << id << " in mapping.";
88  }
89  return hid;
90 }

References chamber(), makeMuonMisalignmentScenario::endcap, CSCDetId::rawIdMaker(), relativeConstraints::ring, relativeConstraints::station, and sw2hw_.

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

◆ hwId()

virtual int CSCReadoutMapping::hwId ( int  endcap,
int  station,
int  vme,
int  dmb,
int  tmb 
) const
privatepure 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().

◆ myName()

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

Return class name

Definition at line 137 of file CSCReadoutMapping.h.

137 { return myName_; }

References myName_.

◆ serialize()

template<class Archive >
void CSCReadoutMapping::serialize ( Archive &  ar,
const unsigned int  version 
)
private

◆ setDebugV()

void CSCReadoutMapping::setDebugV ( bool  dbg)
inline

Set debug printout flag

Definition at line 127 of file CSCReadoutMapping.h.

127 { debugV_ = dbg; }

References debugV_.

◆ swId()

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 72 of file CSCReadoutMapping.cc.

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

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

Referenced by addRecord().

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Definition at line 161 of file CSCReadoutMapping.h.

◆ cond::serialization::access

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 161 of file CSCReadoutMapping.h.

Member Data Documentation

◆ debugV_

bool CSCReadoutMapping::debugV_
private

Definition at line 156 of file CSCReadoutMapping.h.

Referenced by debugV(), and setDebugV().

◆ hw2sw_

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

Definition at line 158 of file CSCReadoutMapping.h.

Referenced by addRecord(), and chamber().

◆ mapping_

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

Definition at line 157 of file CSCReadoutMapping.h.

Referenced by addRecord().

◆ myName_

std::string CSCReadoutMapping::myName_
private

Definition at line 155 of file CSCReadoutMapping.h.

Referenced by myName().

◆ sw2hw_

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

Definition at line 159 of file CSCReadoutMapping.h.

Referenced by addRecord(), and findHardwareId().

relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCDetId::ring
int ring() const
Definition: CSCDetId.h:68
CSCDetId::rawIdMaker
static int rawIdMaker(int iendcap, int istation, int iring, int ichamber, int ilayer)
Definition: CSCDetId.h:131
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCReadoutMapping::hwId
virtual int hwId(int endcap, int station, int vme, int dmb, int tmb) const =0
CSCReadoutMapping::mapping_
std::vector< CSCLabel > mapping_
Definition: CSCReadoutMapping.h:157
CSCReadoutMapping::chamber
int chamber(int endcap, int station, int vmecrate, int dmb, int tmb) const
Definition: CSCReadoutMapping.cc:9
CSCReadoutMapping::findHardwareId
CSCLabel findHardwareId(const CSCDetId &) const
returns hardware ids given chamber id
Definition: CSCReadoutMapping.cc:77
CSCReadoutMapping::hw2sw_
std::map< int, int > hw2sw_
Definition: CSCReadoutMapping.h:158
CSCDetId
Definition: CSCDetId.h:26
CSCReadoutMapping::sw2hw_
std::map< int, CSCLabel > sw2hw_
Definition: CSCReadoutMapping.h:159
CSCReadoutMapping::swId
int swId(int endcap, int station, int ring, int chamber) const
Definition: CSCReadoutMapping.cc:72
CSCDetId::chamber
int chamber() const
Definition: CSCDetId.h:62
CSCReadoutMapping::myName_
std::string myName_
Definition: CSCReadoutMapping.h:155
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCReadoutMapping::debugV_
bool debugV_
Definition: CSCReadoutMapping.h:156
CSCDetId::endcap
int endcap() const
Definition: CSCDetId.h:85
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
CSCDetId::station
int station() const
Definition: CSCDetId.h:79