CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 <functional>
31 #include <string>
32 
33 //----------------------
34 // Base Class Headers --
35 //----------------------
36 
38 
39 //------------------------------------
40 // Collaborating Class Declarations --
41 //------------------------------------
42 
43 // ---------------------
44 // -- Class Interface --
45 // ---------------------
46 
48 
49  public:
52 
54  L1MuGMTExtendedCand(unsigned data, unsigned rank, int bx=0);
55 
58 
60  virtual ~L1MuGMTExtendedCand();
61 
63  void reset();
64 
65  //
66  // Getters
67  //
68 
70  unsigned int rank() const { return m_rank; }
71 
73  unsigned getDTCSCIndex() const {
75  }
76 
78  unsigned getRPCIndex() const {
80  }
81 
83  bool isFwd() const { return readDataField( FWDBIT_START, FWDBIT_LENGTH) == 1; }
84 
86  bool isRPC() const { return readDataField( ISRPCBIT_START, ISRPCBIT_LENGTH) == 1; }
87 
89  void setRank(unsigned int rank) { m_rank = rank; }
90 
94  unsigned int detector() const ;
95 
96  //
97  // Setters
98  //
99 
101  void setDTCSCIndex(unsigned int idxdtcsc) {
103  }
104 
106  void setRPCIndex(unsigned int idxrpc) { writeDataField( IDXRPC_START, IDXRPC_LENGTH, idxrpc); }
107 
109  void setFwdBit(unsigned int fwdbit) { writeDataField( FWDBIT_START, FWDBIT_LENGTH, fwdbit); }
110 
112  void setRPCBit(unsigned int rpcbit) { writeDataField( ISRPCBIT_START, ISRPCBIT_LENGTH, rpcbit); }
113 
115  bool operator==(const L1MuGMTExtendedCand&) const;
116 
118  bool operator!=(const L1MuGMTExtendedCand&) const;
119 
121  void print() const;
122 
124  friend std::ostream& operator<<(std::ostream&, const L1MuGMTExtendedCand&);
125 
127  class Rank : std::binary_function< const L1MuGMTExtendedCand*, const L1MuGMTExtendedCand*, bool> {
128  public :
130  unsigned int rank_f = (first) ? first->rank(): 0;
131  unsigned int rank_s = (second) ? second->rank() : 0;
132  return rank_f > rank_s;
133  }
134  };
135 
137  class RankRef : std::binary_function< const L1MuGMTExtendedCand&, const L1MuGMTExtendedCand&, bool> {
138  public :
140  unsigned int rank_f = first.rank();
141  unsigned int rank_s = second.rank();
142  return rank_f > rank_s;
143  }
144  };
145 
146  private:
147  unsigned int m_rank;
148 
149  enum { IDXDTCSC_START=26}; enum { IDXDTCSC_LENGTH = 2}; // Bit 26:27 DT/CSC muon index
150  enum { IDXRPC_START=28}; enum { IDXRPC_LENGTH = 2}; // Bit 28:29 RPC muon index
151  enum { FWDBIT_START=30}; enum { FWDBIT_LENGTH = 1}; // Bit 30 fwd bit
152  enum { ISRPCBIT_START=31}; enum { ISRPCBIT_LENGTH = 1}; // Bit 31 isRPC bit
153 };
154 
155 #endif
void writeDataField(unsigned start, unsigned count, unsigned value)
Definition: L1MuGMTCand.h:238
define a rank for muon candidates
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
bool operator()(const L1MuGMTExtendedCand *first, const L1MuGMTExtendedCand *second) const
U second(std::pair< T, U > const &p)
bool operator==(const L1MuGMTExtendedCand &) const
equal operator
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
void setRPCBit(unsigned int rpcbit)
set RPC bit (1=RPC, 0=DT/CSC or matched)
void setRank(unsigned int rank)
set rank
virtual ~L1MuGMTExtendedCand()
destructor
bool operator()(const L1MuGMTExtendedCand &first, const L1MuGMTExtendedCand &second) const
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
define a rank for muon candidates