CMS 3D CMS Logo

GEMROmap.h
Go to the documentation of this file.
1 #ifndef CondFormats_GEMObjects_GEMROmap_h
2 #define CondFormats_GEMObjects_GEMROmap_h
4 #include <map>
5 
6 class GEMROmap {
7 public:
8  struct eCoord {
9  uint16_t amcId;
10  uint16_t gebId;
11  uint16_t vfatId;
12  bool operator<(const eCoord& r) const {
13  if (amcId == r.amcId) {
14  if (gebId == r.gebId) {
15  return vfatId < r.vfatId;
16  } else {
17  return gebId < r.gebId;
18  }
19  } else {
20  return amcId < r.amcId;
21  }
22  }
23  };
24 
25  struct dCoord {
26  int vfatType;
28  int iPhi;
29  bool operator<(const dCoord& r) const {
30  if (vfatType == r.vfatType) {
31  if (gemDetId == r.gemDetId) {
32  return iPhi < r.iPhi;
33  } else {
34  return gemDetId < r.gemDetId;
35  }
36  } else {
37  return vfatType < r.vfatType;
38  }
39  }
40  };
41 
42  struct channelNum {
43  int vfatType;
44  int chNum;
45  bool operator<(const channelNum& c) const {
46  if (vfatType == c.vfatType)
47  return chNum < c.chNum;
48  else
49  return vfatType < c.vfatType;
50  }
51  };
52 
53  struct stripNum {
54  int vfatType;
55  int stNum;
56  bool operator<(const stripNum& s) const {
57  if (vfatType == s.vfatType)
58  return stNum < s.stNum;
59  else
60  return vfatType < s.vfatType;
61  }
62  };
63 
64  GEMROmap(){};
65 
66  bool isValidChipID(const eCoord& r) const { return roMapED_.find(r) != roMapED_.end(); }
67  const dCoord& hitPosition(const eCoord& r) const { return roMapED_.at(r); }
68  const eCoord& hitPosition(const dCoord& r) const { return roMapDE_.at(r); }
69 
70  void add(eCoord e, dCoord d) { roMapED_[e] = d; }
71  void add(dCoord d, eCoord e) { roMapDE_[d] = e; }
72 
73  const std::map<eCoord, dCoord>* getRoMap() const { return &roMapED_; }
74 
75  void add(channelNum c, stripNum s) { chStMap_[c] = s; }
76  void add(stripNum s, channelNum c) { stChMap_[s] = c; }
77 
78  const channelNum& hitPosition(const stripNum& s) const { return stChMap_.at(s); }
79  const stripNum& hitPosition(const channelNum& c) const { return chStMap_.at(c); }
80 
81 private:
82  std::map<eCoord, dCoord> roMapED_;
83  std::map<dCoord, eCoord> roMapDE_;
84 
85  std::map<channelNum, stripNum> chStMap_;
86  std::map<stripNum, channelNum> stChMap_;
87 };
88 #endif
std::map< eCoord, dCoord > roMapED_
Definition: GEMROmap.h:82
GEMROmap()
Definition: GEMROmap.h:64
std::map< dCoord, eCoord > roMapDE_
Definition: GEMROmap.h:83
void add(stripNum s, channelNum c)
Definition: GEMROmap.h:76
bool operator<(const eCoord &r) const
Definition: GEMROmap.h:12
const std::map< eCoord, dCoord > * getRoMap() const
Definition: GEMROmap.h:73
void add(eCoord e, dCoord d)
Definition: GEMROmap.h:70
uint16_t gebId
Definition: GEMROmap.h:10
bool isValidChipID(const eCoord &r) const
Definition: GEMROmap.h:66
const stripNum & hitPosition(const channelNum &c) const
Definition: GEMROmap.h:79
void add(dCoord d, eCoord e)
Definition: GEMROmap.h:71
bool operator<(const channelNum &c) const
Definition: GEMROmap.h:45
GEMDetId gemDetId
Definition: GEMROmap.h:27
const channelNum & hitPosition(const stripNum &s) const
Definition: GEMROmap.h:78
std::map< stripNum, channelNum > stChMap_
Definition: GEMROmap.h:86
const dCoord & hitPosition(const eCoord &r) const
Definition: GEMROmap.h:67
d
Definition: ztail.py:151
void add(channelNum c, stripNum s)
Definition: GEMROmap.h:75
bool operator<(const stripNum &s) const
Definition: GEMROmap.h:56
uint16_t vfatId
Definition: GEMROmap.h:11
uint16_t amcId
Definition: GEMROmap.h:9
const eCoord & hitPosition(const dCoord &r) const
Definition: GEMROmap.h:68
std::map< channelNum, stripNum > chStMap_
Definition: GEMROmap.h:85
bool operator<(const dCoord &r) const
Definition: GEMROmap.h:29