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

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

Referenced by CSCReadoutMappingFromFile::fill().

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 }
virtual int hwId(int endcap, int station, int vme, int dmb, int tmb) const =0
Log< level::Error, false > LogError
std::vector< CSCLabel > mapping_
int swId(int endcap, int station, int ring, int chamber) const
int chamber(int endcap, int station, int vmecrate, int dmb, int tmb) const
std::map< int, CSCLabel > sw2hw_
std::map< int, int > hw2sw_

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

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

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

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 }
virtual int hwId(int endcap, int station, int vme, int dmb, int tmb) const =0
Log< level::Error, false > LogError
std::map< int, int > hw2sw_

◆ crate()

int CSCReadoutMapping::crate ( const CSCDetId id) const

returns vmecrate given CSCDetId

Definition at line 92 of file CSCReadoutMapping.cc.

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

92  {
93  CSCLabel hid = findHardwareId(id);
94  return hid.vmecrate_;
95 }
CSCLabel findHardwareId(const CSCDetId &) const
returns hardware ids given chamber id

◆ dccId()

int CSCReadoutMapping::dccId ( const CSCDetId id) const

returns DCC# given CSCDetId

Definition at line 104 of file CSCReadoutMapping.cc.

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

104  {
105  CSCLabel hid = findHardwareId(id);
106  return hid.dcc_;
107 }
CSCLabel findHardwareId(const CSCDetId &) const
returns hardware ids given chamber id

◆ dduId()

int CSCReadoutMapping::dduId ( const CSCDetId id) const

returns DDU# given CSCDetId

Definition at line 100 of file CSCReadoutMapping.cc.

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

100  {
101  CSCLabel hid = findHardwareId(id);
102  return hid.ddu_;
103 }
CSCLabel findHardwareId(const CSCDetId &) const
returns hardware ids given chamber id

◆ debugV()

bool CSCReadoutMapping::debugV ( void  ) const
inline

Status of debug printout flag

Definition at line 123 of file CSCReadoutMapping.h.

References debugV_.

123 { return 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.

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

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 
45 }
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
int chamber() const
Definition: CSCDetId.h:62
int chamber(int endcap, int station, int vmecrate, int dmb, int tmb) const
int station() const
Definition: CSCDetId.h:79
int endcap() const
Definition: CSCDetId.h:85
int ring() const
Definition: CSCDetId.h:68

◆ dmbId()

int CSCReadoutMapping::dmbId ( const CSCDetId id) const

returns dmbId given CSCDetId

Definition at line 96 of file CSCReadoutMapping.cc.

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

96  {
97  CSCLabel hid = findHardwareId(id);
98  return hid.dmb_;
99 }
CSCLabel findHardwareId(const CSCDetId &) const
returns hardware ids given chamber id

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

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

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

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 }
static int rawIdMaker(int iendcap, int istation, int iring, int ichamber, int ilayer)
Definition: CSCDetId.h:146
Log< level::Error, false > LogError
int chamber(int endcap, int station, int vmecrate, int dmb, int tmb) const
std::map< int, CSCLabel > sw2hw_

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

References myName_.

128 { return 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 118 of file CSCReadoutMapping.h.

References debugV_.

118 { debugV_ = dbg; }

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

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

Referenced by addRecord().

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 }
static int rawIdMaker(int iendcap, int istation, int iring, int ichamber, int ilayer)
Definition: CSCDetId.h:146
int chamber(int endcap, int station, int vmecrate, int dmb, int tmb) const

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Definition at line 152 of file CSCReadoutMapping.h.

◆ cond::serialization::access

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

Definition at line 152 of file CSCReadoutMapping.h.

Member Data Documentation

◆ debugV_

bool CSCReadoutMapping::debugV_
private

Definition at line 147 of file CSCReadoutMapping.h.

Referenced by debugV(), and setDebugV().

◆ hw2sw_

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

Definition at line 149 of file CSCReadoutMapping.h.

Referenced by addRecord(), and chamber().

◆ mapping_

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

Definition at line 148 of file CSCReadoutMapping.h.

Referenced by addRecord().

◆ myName_

std::string CSCReadoutMapping::myName_
private

Definition at line 146 of file CSCReadoutMapping.h.

Referenced by myName().

◆ sw2hw_

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

Definition at line 150 of file CSCReadoutMapping.h.

Referenced by addRecord(), and findHardwareId().