CMS 3D CMS Logo

L1MuGMTExtendedCand.h
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
13 //
14 //
15 // Author :
16 // H. Sakulin HEPHY Vienna
17 //
18 // Migrated to CMSSW:
19 // I. Mikulec
20 //
21 //--------------------------------------------------
22 #ifndef DataFormatsL1GlobalMuonTrigger_L1MuGMTExtendedCand_h
23 #define DataFormatsL1GlobalMuonTrigger_L1MuGMTExtendedCand_h
24 
25 //---------------
26 // C++ Headers --
27 //---------------
28 
29 #include <iosfwd>
30 #include <string>
31 
32 //----------------------
33 // Base Class Headers --
34 //----------------------
35 
37 
38 //------------------------------------
39 // Collaborating Class Declarations --
40 //------------------------------------
41 
42 // ---------------------
43 // -- Class Interface --
44 // ---------------------
45 
47 
48  public:
51 
53  L1MuGMTExtendedCand(unsigned data, unsigned rank, int bx=0);
54 
57 
59  ~L1MuGMTExtendedCand() override;
60 
62  void reset();
63 
64  //
65  // Getters
66  //
67 
69  unsigned int rank() const { return m_rank; }
70 
72  unsigned getDTCSCIndex() const {
74  }
75 
77  unsigned getRPCIndex() const {
79  }
80 
82  bool isFwd() const { return readDataField( FWDBIT_START, FWDBIT_LENGTH) == 1; }
83 
85  bool isRPC() const { return readDataField( ISRPCBIT_START, ISRPCBIT_LENGTH) == 1; }
86 
88  void setRank(unsigned int rank) { m_rank = rank; }
89 
93  unsigned int detector() const ;
94 
95  //
96  // Setters
97  //
98 
100  void setDTCSCIndex(unsigned int idxdtcsc) {
102  }
103 
105  void setRPCIndex(unsigned int idxrpc) { writeDataField( IDXRPC_START, IDXRPC_LENGTH, idxrpc); }
106 
108  void setFwdBit(unsigned int fwdbit) { writeDataField( FWDBIT_START, FWDBIT_LENGTH, fwdbit); }
109 
111  void setRPCBit(unsigned int rpcbit) { writeDataField( ISRPCBIT_START, ISRPCBIT_LENGTH, rpcbit); }
112 
114  bool operator==(const L1MuGMTExtendedCand&) const;
115 
117  bool operator!=(const L1MuGMTExtendedCand&) const;
118 
120  void print() const;
121 
123  friend std::ostream& operator<<(std::ostream&, const L1MuGMTExtendedCand&);
124 
127  unsigned int rank_f = (first) ? first->rank(): 0;
128  unsigned int rank_s = (second) ? second->rank() : 0;
129  return rank_f > rank_s;
130  }
131 
134  unsigned int rank_f = first.rank();
135  unsigned int rank_s = second.rank();
136  return rank_f > rank_s;
137  }
138 
139  private:
140  unsigned int m_rank;
141 
142  enum { IDXDTCSC_START=26}; enum { IDXDTCSC_LENGTH = 2}; // Bit 26:27 DT/CSC muon index
143  enum { IDXRPC_START=28}; enum { IDXRPC_LENGTH = 2}; // Bit 28:29 RPC muon index
144  enum { FWDBIT_START=30}; enum { FWDBIT_LENGTH = 1}; // Bit 30 fwd bit
145  enum { ISRPCBIT_START=31}; enum { ISRPCBIT_LENGTH = 1}; // Bit 31 isRPC bit
146 };
147 
148 #endif
void writeDataField(unsigned start, unsigned count, unsigned value)
Definition: L1MuGMTCand.h:238
bool operator!=(const L1MuGMTExtendedCand &) const
unequal operator
void setDTCSCIndex(unsigned int idxdtcsc)
set index of contributing DT/CSC muon
unsigned readDataField(unsigned start, unsigned count) const
Definition: L1MuGMTCand.h:233
unsigned int rank() const
get rank
U second(std::pair< T, U > const &p)
bool operator==(const L1MuGMTExtendedCand &) const
equal operator
~L1MuGMTExtendedCand() override
destructor
unsigned int detector() const
int bx() const
get bunch crossing identifier
Definition: L1MuGMTCand.h:120
bool isRPC() const
get RPC bit (true=RPC, false = DT/CSC or matched)
void setFwdBit(unsigned int fwdbit)
set forward bit (1=forward, 0=barrel)
friend std::ostream & operator<<(std::ostream &, const L1MuGMTExtendedCand &)
output stream operator
void reset()
reset muon candidate
unsigned getRPCIndex() const
get index of contributing RPC muon
L1MuGMTExtendedCand()
constructor
unsigned getDTCSCIndex() const
get index of contributing DT/CSC muon
static bool compareRank(const L1MuGMTExtendedCand *first, const L1MuGMTExtendedCand *second)
define a rank for muon candidates
static bool rankRef(const L1MuGMTExtendedCand &first, const L1MuGMTExtendedCand &second)
define a rank for muon candidates
void setRPCBit(unsigned int rpcbit)
set RPC bit (1=RPC, 0=DT/CSC or matched)
void setRank(unsigned int rank)
set rank
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
bool isFwd() const
get forward bit (true=forward, false=barrel)
void setRPCIndex(unsigned int idxrpc)
set index of contributing RPC muon
void print() const
print parameters of muon candidate