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
151
152
153
154
155
156
157
158
159
|
#ifndef L1GCTINTERNJETDATA_H
#define L1GCTINTERNJETDATA_H
#include <string>
#include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h"
/// \class L1GctInternJetData
/// \brief L1 GCT internal jet candidate
/// \author Jim Brooke
/// \date June 2006
///
class L1GctInternJetData {
public:
enum L1GctInternJetType { null, emulator, jet_cluster, jet_cluster_minimal, jet_precluster, gct_trig_object };
public:
/// default constructor (for vector initialisation etc.)
L1GctInternJetData();
/// construct from individual quantities
L1GctInternJetData(L1CaloRegionDetId rgn,
uint16_t capBlock,
uint16_t capIndex,
int16_t bx,
uint8_t sgnEta,
uint8_t oflow,
uint16_t et,
uint8_t eta,
uint8_t phi,
uint8_t tauVeto,
uint8_t rank);
// 'named' constructors to avoid confusion
// emulator calibrated jet ctor
static L1GctInternJetData fromEmulator(L1CaloRegionDetId rgn,
int16_t bx,
uint16_t et,
bool overFlow,
bool tauVeto,
uint8_t eta,
uint8_t phi,
uint16_t rank);
/// construct from "jet_cluster"
static L1GctInternJetData fromJetCluster(
L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data);
/// construct from "jet_precluster"
static L1GctInternJetData fromJetPreCluster(
L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data);
/// construct from "jet_cluster_minimal"
static L1GctInternJetData fromJetClusterMinimal(
L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data);
/// construct from "gct_trig_object"
static L1GctInternJetData fromGctTrigObject(
L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data);
/// destructor (virtual to prevent compiler warnings)
virtual ~L1GctInternJetData();
// getters
/// 'type' of object
L1GctInternJetData::L1GctInternJetType type() const { return type_; }
/// region associated with the candidate
L1CaloRegionDetId regionId() const { return regionId_; }
/// was an object really found?
bool empty() const { return (data_ == 0); }
/// get capture block
uint16_t capBlock() const { return capBlock_; }
/// get index within capture block
uint16_t capIndex() const { return capIndex_; }
/// get BX number
int16_t bx() const { return bx_; }
/// get the raw data
uint32_t raw() const { return data_; }
/// get rank bits
uint16_t rank() const { return data_ & 0x3f; }
/// get tau veto
uint16_t tauVeto() const { return (data_ >> 6) & 0x1; }
/// get phi
uint16_t phi() const { return (data_ >> 7) & 0x1f; }
/// get eta
uint16_t eta() const { return (data_ >> 12) & 0xf; }
/// get et
uint16_t et() const { return (data_ >> 16) & 0xfff; }
/// get oflow
uint16_t oflow() const { return (data_ >> 28) & 0x1; }
/// get sign of eta
uint16_t sgnEta() const { return (data_ >> 29) & 0x1; }
// setters
/// set region
void setRegionId(L1CaloRegionDetId rgn) { regionId_ = rgn; }
/// set cap block
void setCapBlock(uint16_t capBlock) { capBlock_ = capBlock; }
/// set cap index
void setCapIndex(uint16_t capIndex) { capIndex_ = capIndex; }
/// set bx
void setBx(uint16_t bx) { bx_ = bx; }
/// set type
void setType(L1GctInternJetType type) { type_ = type; }
/// set data
void setRawData(uint32_t data) { data_ = data; }
/// construct data word from components
void setData(uint8_t sgnEta, uint8_t oflow, uint16_t et, uint8_t eta, uint8_t phi, uint8_t tauVeto, uint8_t rank);
// operators
/// equality operator
bool operator==(const L1GctInternJetData& c) const;
/// inequality operator
bool operator!=(const L1GctInternJetData& c) const { return !(*this == c); }
private:
// location in calorimeter (optionally set by unpacker)
L1CaloRegionDetId regionId_;
// source of the data
uint16_t capBlock_;
uint16_t capIndex_;
int16_t bx_;
// type of data
L1GctInternJetType type_;
// the captured data
uint32_t data_;
};
std::ostream& operator<<(std::ostream& s, const L1GctInternJetData& cand);
#endif
|