1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
//-------------------------------------------------
//
/** \class L1MuBMAddressArray
*
* Array of relative addresses
*
* Array of 4 relative addresses (one per station);<BR>
* the valid range of a relative address is 0 - 11
* thus a relative address is a 4 bit word;<BR>
* address = 15 indicates a negative extrapolation result
*
* \verbatim
* ------------------------
* | 4 5 | 6 7 |
* P ------------+-----------
* H | 0 1 | 2 3 |
* I ------------+-----------
* | 8 9 | 10 11 |
* ------------+-----------
* my Wheel next Wheel
* \endverbatim
*
*
*
* N. Neumeister CERN EP
*/
//
//--------------------------------------------------
#ifndef L1MUBM_ADDRESS_ARRAY_H
#define L1MUBM_ADDRESS_ARRAY_H
//---------------
// C++ Headers --
//---------------
#include <iosfwd>
//----------------------
// Base Class Headers --
//----------------------
//------------------------------------
// Collaborating Class Declarations --
//------------------------------------
// ---------------------
// -- Class Interface --
// ---------------------
class L1MuBMAddressArray {
public:
/// default constructor
L1MuBMAddressArray();
/// copy constructor
L1MuBMAddressArray(const L1MuBMAddressArray&);
/// destructor
virtual ~L1MuBMAddressArray();
/// assignment operator
L1MuBMAddressArray& operator=(const L1MuBMAddressArray&);
/// equal operator
bool operator==(const L1MuBMAddressArray&) const;
/// unequal operator
bool operator!=(const L1MuBMAddressArray&) const;
/// reset address array
void reset();
/// set address of a given station [1-4]
void setStation(int stat, int adr);
/// set addresses of all four stations
void setStations(int adr1, int adr2, int adr3, int adr4);
/// get address of a given station [1-4]
inline unsigned short station(int stat) const { return m_station[stat - 1]; }
/// get track address code (for eta track finder)
int trackAddressCode() const;
/// get converted Addresses
L1MuBMAddressArray converted() const;
/// output stream operator for address array
friend std::ostream& operator<<(std::ostream&, const L1MuBMAddressArray&);
/// convert address to corresponding VHDL addresse
static unsigned short int convert(unsigned short int adr);
/// is it a same wheel address?
static bool sameWheel(unsigned short int adr);
/// is it a next wheel address?
static bool nextWheel(unsigned short int adr);
private:
unsigned short int m_station[4];
};
#endif
|