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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#ifndef DataFormats_L1Trigger_Muon_h
#define DataFormats_L1Trigger_Muon_h
#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/L1Trigger/interface/L1Candidate.h"
#include "DataFormats/L1Trigger/interface/BXVector.h"
#include "DataFormats/L1Trigger/interface/L1TObjComparison.h"
namespace l1t {
class Muon;
typedef BXVector<Muon> MuonBxCollection;
typedef edm::Ref<MuonBxCollection> MuonRef;
typedef edm::RefVector<MuonBxCollection> MuonRefVector;
typedef std::vector<MuonRef> MuonVectorRef;
typedef ObjectRefBxCollection<Muon> MuonRefBxCollection;
typedef ObjectRefPair<Muon> MuonRefPair;
typedef ObjectRefPairBxCollection<Muon> MuonRefPairBxCollection;
class Muon : public L1Candidate {
public:
Muon();
Muon(const LorentzVector& p4,
int pt = 0,
int eta = 0,
int phi = 0,
int qual = 0,
int charge = 0,
int chargeValid = 0,
int iso = 0,
int tfMuonIndex = -1,
int tag = 0,
bool debug = false,
int isoSum = 0,
int dPhi = 0,
int dEta = 0,
int rank = 0,
int hwEtaAtVtx = 0,
int hwPhiAtVtx = 0,
double etaAtVtx = 0.,
double phiAtVtx = 0.,
int hwPtUnconstrained = 0,
double ptUnconstrained = 0.,
int dXY = 0);
Muon(const PolarLorentzVector& p4,
int pt = 0,
int eta = 0,
int phi = 0,
int qual = 0,
int charge = 0,
int chargeValid = 0,
int iso = 0,
int tfMuonIndex = -1,
int tag = 0,
bool debug = false,
int isoSum = 0,
int dPhi = 0,
int dEta = 0,
int rank = 0,
int hwEtaAtVtx = 0,
int hwPhiAtVtx = 0,
double etaAtVtx = 0.,
double phiAtVtx = 0.,
int hwPtUnconstrained = 0,
double ptUnconstrained = 0.,
int dXY = 0);
~Muon() override;
// set values
inline void setHwCharge(int charge) { hwCharge_ = charge; };
inline void setHwChargeValid(int valid) { hwChargeValid_ = valid; };
inline void setTfMuonIndex(int index) { tfMuonIndex_ = index; };
inline void setHwTag(int tag) { hwTag_ = tag; };
inline void setHwEtaAtVtx(int hwEtaAtVtx) { hwEtaAtVtx_ = hwEtaAtVtx; };
inline void setHwPhiAtVtx(int hwPhiAtVtx) { hwPhiAtVtx_ = hwPhiAtVtx; };
inline void setEtaAtVtx(double etaAtVtx) { etaAtVtx_ = etaAtVtx; };
inline void setPhiAtVtx(double phiAtVtx) { phiAtVtx_ = phiAtVtx; };
inline void setHwIsoSum(int isoSum) { hwIsoSum_ = isoSum; };
inline void setHwDPhiExtra(int dPhi) { hwDPhiExtra_ = dPhi; };
inline void setHwDEtaExtra(int dEta) { hwDEtaExtra_ = dEta; };
inline void setHwRank(int rank) { hwRank_ = rank; };
inline void setHwPtUnconstrained(int hwPtUnconstrained) { hwPtUnconstrained_ = hwPtUnconstrained; };
inline void setPtUnconstrained(double ptUnconstrained) { ptUnconstrained_ = ptUnconstrained; };
inline void setHwDXY(int hwDXY) { hwDXY_ = hwDXY; };
inline void setDebug(bool debug) { debug_ = debug; };
// methods to retrieve values
inline int hwCharge() const { return hwCharge_; };
inline int hwChargeValid() const { return hwChargeValid_; };
inline int tfMuonIndex() const { return tfMuonIndex_; };
inline int hwTag() const { return hwTag_; };
inline int hwEtaAtVtx() const { return hwEtaAtVtx_; };
inline int hwPhiAtVtx() const { return hwPhiAtVtx_; };
inline double etaAtVtx() const { return etaAtVtx_; };
inline double phiAtVtx() const { return phiAtVtx_; };
inline int hwIsoSum() const { return hwIsoSum_; };
inline int hwDPhiExtra() const { return hwDPhiExtra_; };
inline int hwDEtaExtra() const { return hwDEtaExtra_; };
inline int hwRank() const { return hwRank_; };
inline int hwPtUnconstrained() const { return hwPtUnconstrained_; };
inline double ptUnconstrained() const { return ptUnconstrained_; };
inline int hwDXY() const { return hwDXY_; };
inline bool debug() const { return debug_; };
bool operator==(const l1t::Muon& rhs) const;
inline bool operator!=(const l1t::Muon& rhs) const { return !(operator==(rhs)); };
private:
using L1Candidate::operator==;
using L1Candidate::operator!=;
// additional hardware quantities common to L1 global jet
int hwCharge_;
int hwChargeValid_;
int tfMuonIndex_;
int hwTag_;
// additional hardware quantities only available if debug flag is set
bool debug_;
int hwIsoSum_;
int hwDPhiExtra_;
int hwDEtaExtra_;
int hwRank_;
// muon coordinates at the vertex
int hwEtaAtVtx_;
int hwPhiAtVtx_;
double etaAtVtx_;
double phiAtVtx_;
// displacement information
int hwPtUnconstrained_;
double ptUnconstrained_;
int hwDXY_;
};
} // namespace l1t
#endif
|