CMS 3D CMS Logo

Utilities.cc
Go to the documentation of this file.
2 #include <utility>
3 
4 namespace hcaldqm {
5  using namespace constants;
6  namespace utilities {
7  /*
8  * Useful Detector Functions. For Fast Detector Validity Check
9  */
10  std::pair<uint16_t, uint16_t> fed2crate(int fed) {
11  // uTCA Crate is split in half
12  uint16_t slot = 0;
13  if (fed <= FED_VME_MAX) {
14  slot = fed % 2 == 0 ? SLOT_uTCA_MIN : SLOT_uTCA_MIN + 6;
15  } else {
16  slot = fed % 2 == 0 ? SLOT_uTCA_MIN : SLOT_uTCA_MIN + 6;
17  }
18  std::pair<uint16_t, uint16_t> crate_slot = std::make_pair<uint16_t, uint16_t>(0, 0);
19  auto it_fed2crate = constants::fed2crate_map.find(fed);
20  if (it_fed2crate != constants::fed2crate_map.end()) {
21  crate_slot =
22  std::make_pair<uint16_t const, uint16_t const>((uint16_t const)it_fed2crate->second, (uint16_t const)slot);
23  }
24  return crate_slot;
25  }
26 
27  uint16_t crate2fed(int crate, int slot) {
28  // for the details see Constants.h
29  int fed = 0;
30  auto it_crate2fed = constants::crate2fed_map.find(crate);
31  if (it_crate2fed != constants::crate2fed_map.end()) {
32  fed = it_crate2fed->second;
33  if (fed <= FED_VME_MAX && fed > 0) {
34  if (slot > 10 && (std::find(constants::crateListVME.begin(), constants::crateListVME.end(), crate) !=
36  ++fed;
37  }
38  } else {
40  constants::crateListuTCA.end())) { // needed to handle dual fed readout
41  ++fed;
42  }
43  }
44  }
45  return fed;
46  }
47 
48  uint32_t hash(HcalDetId const &did) { return did.rawId(); }
49  uint32_t hash(HcalElectronicsId const &eid) { return eid.rawId(); }
50  uint32_t hash(HcalTrigTowerDetId const &tid) { return tid.rawId(); }
51 
52  std::vector<int> getCrateList(HcalElectronicsMap const *emap) {
53  std::vector<int> vCrates;
54  std::vector<HcalElectronicsId> vids = emap->allElectronicsIdPrecision();
55  for (std::vector<HcalElectronicsId>::const_iterator it = vids.begin(); it != vids.end(); ++it) {
57  int crate = eid.crateId();
58  if (std::find(vCrates.begin(), vCrates.end(), crate) == vCrates.end()) {
59  vCrates.push_back(crate);
60  }
61  }
62  std::sort(vCrates.begin(), vCrates.end());
63  return vCrates;
64  }
65 
66  std::map<int, uint32_t> getCrateHashMap(HcalElectronicsMap const *emap) {
67  std::map<int, uint32_t> crateHashMap;
68  std::vector<HcalElectronicsId> vids = emap->allElectronicsIdPrecision();
69  for (std::vector<HcalElectronicsId>::const_iterator it = vids.begin(); it != vids.end(); ++it) {
71  int this_crate = eid.crateId();
72  uint32_t this_hash =
73  (eid.isVMEid()
76  if (crateHashMap.find(this_crate) == crateHashMap.end()) {
77  crateHashMap[this_crate] = this_hash;
78  }
79  }
80  return crateHashMap;
81  }
82 
83  std::vector<int> getFEDList(HcalElectronicsMap const *emap) {
84  std::vector<int> vfeds;
85  std::vector<HcalElectronicsId> vids = emap->allElectronicsIdPrecision();
86  for (std::vector<HcalElectronicsId>::const_iterator it = vids.begin(); it != vids.end(); ++it) {
87  int fed = it->isVMEid() ? it->dccid() + FED_VME_MIN : crate2fed(it->crateId(), it->slot());
88  uint32_t n = 0;
89  for (std::vector<int>::const_iterator jt = vfeds.begin(); jt != vfeds.end(); ++jt)
90  if (fed == *jt)
91  break;
92  else
93  n++;
94  if (n == vfeds.size())
95  vfeds.push_back(fed);
96  }
97 
98  std::sort(vfeds.begin(), vfeds.end());
99  return vfeds;
100  }
101  std::vector<int> getFEDVMEList(HcalElectronicsMap const *emap) {
102  std::vector<int> vfeds;
103  std::vector<HcalElectronicsId> vids = emap->allElectronicsIdPrecision();
104  for (std::vector<HcalElectronicsId>::const_iterator it = vids.begin(); it != vids.end(); ++it) {
105  if (!it->isVMEid())
106  continue;
107  int fed = it->isVMEid() ? it->dccid() + FED_VME_MIN : crate2fed(it->crateId(), it->slot());
108  uint32_t n = 0;
109  for (std::vector<int>::const_iterator jt = vfeds.begin(); jt != vfeds.end(); ++jt)
110  if (fed == *jt)
111  break;
112  else
113  n++;
114  if (n == vfeds.size())
115  vfeds.push_back(fed);
116  }
117 
118  std::sort(vfeds.begin(), vfeds.end());
119  return vfeds;
120  }
121  std::vector<int> getFEDuTCAList(HcalElectronicsMap const *emap) {
122  std::vector<int> vfeds;
123  std::vector<HcalElectronicsId> vids = emap->allElectronicsIdPrecision();
124  for (std::vector<HcalElectronicsId>::const_iterator it = vids.begin(); it != vids.end(); ++it) {
125  if (it->isVMEid())
126  continue;
127  int fed = it->isVMEid() ? it->dccid() + FED_VME_MIN : crate2fed(it->crateId(), it->slot());
128  uint32_t n = 0;
129  for (std::vector<int>::const_iterator jt = vfeds.begin(); jt != vfeds.end(); ++jt)
130  if (fed == *jt)
131  break;
132  else
133  n++;
134  if (n == vfeds.size())
135  vfeds.push_back(fed);
136  }
137 
138  std::sort(vfeds.begin(), vfeds.end());
139  return vfeds;
140  }
141 
143  if (eid.isVMEid()) {
144  return false;
145  } else {
146  int fed = crate2fed(eid.crateId(), eid.slot());
147  if (fed >= 1100 && fed < 1118)
148  return true;
149  else
150  return false;
151  }
152 
153  return false;
154  }
155 
157  /*
158  if (eid.isVMEid())
159  {
160  int fed = eid.dccid()+FED_VME_MIN;
161  if (fed>=718 && fed<=723)
162  return true;
163  else
164  return false;
165  }*/
166  // else
167  // {
168  if (eid.isVMEid())
169  return false;
170  int fed = crate2fed(eid.crateId(), eid.slot());
171  if (fed >= 1118 && fed <= 1123)
172  return true;
173  else
174  return false;
175  // }
176 
177  return false;
178  }
179 
181  if (!eid.isVMEid())
182  return false;
183 
184  int fed = eid.dccid() + FED_VME_MIN;
185  if (fed >= 724 && fed <= 731)
186  return true;
187  else
188  return false;
189 
190  return false;
191  }
192 
193  /*
194  * Orbit Gap Related
195  */
197  switch (type) {
198  case tNull:
199  return "Null";
200  case tPedestal:
201  return "Pedestal";
202  case tLED:
203  return "LED";
204  case tHFRaddam:
205  return "HFRaddam";
206  case tHBHEHPD:
207  return "HBHEHPD";
208  case tHO:
209  return "HO";
210  case tHF:
211  return "HF";
212  case tZDC:
213  return "ZDC";
214  case tHEPMega:
215  return "HEPMegatile";
216  case tHEMMega:
217  return "HEMMegatile";
218  case tHBPMega:
219  return "HBPMegatile";
220  case tHBMMega:
221  return "HBMMegatile";
222  case tCRF:
223  return "CRF";
224  case tCalib:
225  return "Calib";
226  case tSafe:
227  return "Safe";
228  default:
229  return "Unknown";
230  }
231  }
232 
233  int getRBX(uint32_t iphi) { return (((iphi + 2) % 72) + 4 - 1) / 4; }
234 
235  } // namespace utilities
236 } // namespace hcaldqm
constexpr uint32_t rawId() const
type
Definition: HCALResponse.h:21
std::vector< unsigned int > const crateListuTCA
Definition: Constants.h:70
std::map< unsigned int, unsigned int > const fed2crate_map
Definition: Constants.h:53
std::vector< HcalElectronicsId > allElectronicsIdPrecision() const
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:10
uint16_t crate2fed(int crate, int slot)
Definition: Utilities.cc:27
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
constexpr int dccid() const
get the (Hcal local) DCC id for VME, crate number for uTCA
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
int const FIBER_VME_MIN
Definition: Constants.h:121
std::map< unsigned int, unsigned int > const crate2fed_map
Definition: Constants.h:28
int const FIBERCH_MIN
Definition: Constants.h:130
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:101
uint32_t hash(HcalDetId const &)
Definition: Utilities.cc:48
constexpr bool isVMEid() const
int const FED_VME_MIN
Definition: Constants.h:78
int const FIBER_uTCA_MIN1
Definition: Constants.h:124
constexpr int spigot() const
get the spigot (input number on DCC, AMC card number for uTCA)
constexpr int crateId() const
get the readout VME crate number
#define end
Definition: vmac.h:39
std::map< int, uint32_t > getCrateHashMap(HcalElectronicsMap const *emap)
Definition: Utilities.cc:66
std::string ogtype2string(constants::OrbitGapType type)
Definition: Utilities.cc:196
std::vector< int > getCrateList(HcalElectronicsMap const *emap)
Definition: Utilities.cc:52
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:142
std::vector< unsigned int > const crateListVME
Definition: Constants.h:72
constexpr int slot() const
get the htr or uHTR slot
#define begin
Definition: vmac.h:32
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:83
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:121
int getRBX(uint32_t iphi)
Definition: Utilities.cc:233
bool isFEDHO(HcalElectronicsId const &)
Definition: Utilities.cc:180
int const FED_VME_MAX
Definition: Constants.h:79
Readout chain identification for Hcal.
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:156
int const SLOT_uTCA_MIN
Definition: Constants.h:103