CMS 3D CMS Logo

OmtfEleIndex.h
Go to the documentation of this file.
1 #ifndef EventFilter_L1TRawToDigi_Omtf_EleIndex_H
2 #define EventFilter_L1TRawToDigi_Omtf_EleIndex_H
3 
4 #include <cstdint>
5 #include <string>
6 #include <ostream>
7 
8 namespace omtf {
9  class EleIndex {
10  public:
11  EleIndex() : packed_(0) {}
12  EleIndex(const std::string &board, unsigned int link) {
13  unsigned int fed = 0;
14  if (board.substr(4, 1) == "n")
15  fed = 1380;
16  else if (board.substr(4, 1) == "p")
17  fed = 1381;
18  unsigned int amc = std::stoi(board.substr(5, 1));
19  packed_ = fed * 1000 + amc * 100 + link;
20  }
21  EleIndex(unsigned int fed, unsigned int amc, unsigned int link) { packed_ = fed * 1000 + amc * 100 + link; }
22  unsigned int fed() const { return packed_ / 1000; }
23  unsigned int amc() const { return ((packed_ / 100) % 10); }
24  unsigned int link() const { return packed_ % 100; }
25  friend std::ostream &operator<<(std::ostream &out, const EleIndex &o) {
26  out << "OMTF";
27  if (o.fed() == 1380)
28  out << "n";
29  if (o.fed() == 1381)
30  out << "p";
31  out << o.amc();
32  out << " (fed: " << o.fed() << "), ln: " << o.link();
33  return out;
34  }
35  inline bool operator<(const EleIndex &o) const { return this->packed_ < o.packed_; }
36 
37  private:
38  uint32_t packed_;
39  };
40 
41 } // namespace omtf
42 #endif
unsigned int amc() const
Definition: OmtfEleIndex.h:23
bool operator<(const EleIndex &o) const
Definition: OmtfEleIndex.h:35
EleIndex(const std::string &board, unsigned int link)
Definition: OmtfEleIndex.h:12
unsigned int link() const
Definition: OmtfEleIndex.h:24
friend std::ostream & operator<<(std::ostream &out, const EleIndex &o)
Definition: OmtfEleIndex.h:25
unsigned int fed() const
Definition: OmtfEleIndex.h:22
EleIndex(unsigned int fed, unsigned int amc, unsigned int link)
Definition: OmtfEleIndex.h:21
Definition: AMCSpec.h:8
uint32_t packed_
Definition: OmtfEleIndex.h:38