00001 #ifndef L1GCTINTERNJETDATA_H
00002 #define L1GCTINTERNJETDATA_H
00003
00004 #include <string>
00005
00006 #include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h"
00007
00013
00014
00015 class L1GctInternJetData {
00016
00017 public:
00018
00019 enum L1GctInternJetType { null, jet_cluster, jet_cluster_minimal, jet_precluster,gct_trig_object };
00020
00021 public:
00022
00024 L1GctInternJetData();
00025
00027 L1GctInternJetData(L1CaloRegionDetId rgn,
00028 uint16_t capBlock,
00029 uint16_t capIndex,
00030 int16_t bx,
00031 uint8_t sgnEta,
00032 uint8_t oflow,
00033 uint16_t et,
00034 uint8_t eta,
00035 uint8_t phi,
00036 uint8_t tauVeto,
00037 uint8_t rank);
00038
00039
00041 static L1GctInternJetData fromJetCluster(L1CaloRegionDetId rgn,
00042 uint16_t capBlock,
00043 uint16_t capIndex,
00044 int16_t bx,
00045 uint32_t data);
00046
00048 static L1GctInternJetData fromJetPreCluster(L1CaloRegionDetId rgn,
00049 uint16_t capBlock,
00050 uint16_t capIndex,
00051 int16_t bx,
00052 uint32_t data);
00053
00055 static L1GctInternJetData fromJetClusterMinimal(L1CaloRegionDetId rgn,
00056 uint16_t capBlock,
00057 uint16_t capIndex,
00058 int16_t bx,
00059 uint32_t data);
00060
00062 static L1GctInternJetData fromGctTrigObject(L1CaloRegionDetId rgn,
00063 uint16_t capBlock,
00064 uint16_t capIndex,
00065 int16_t bx,
00066 uint32_t data);
00067
00068
00070 virtual ~L1GctInternJetData();
00071
00072
00073
00074
00076 L1GctInternJetData::L1GctInternJetType type() const { return type_; }
00077
00079 L1CaloRegionDetId regionId() const { return regionId_; }
00080
00082 bool empty() const { return (data_ == 0); }
00083
00085 uint16_t capBlock() const { return capBlock_; }
00086
00088 uint16_t capIndex() const { return capIndex_; }
00089
00091 int16_t bx() const { return bx_; }
00092
00094 uint32_t raw() const { return data_; }
00095
00097 uint16_t rank() const { return data_ & 0x3f; }
00098
00100 uint16_t tauVeto() const { return (data_>>6) & 0x1; }
00101
00103 uint16_t phi() const { return (data_>>7) & 0x1f; }
00104
00106 uint16_t eta() const { return (data_>>12) & 0xf; }
00107
00109 uint16_t et() const { return (data_>>16) & 0xfff; }
00110
00112 uint16_t oflow() const { return (data_>>28) & 0x1; }
00113
00115 uint16_t sgnEta() const { return (data_>>29) & 0x1; }
00116
00117
00118
00119
00121 void setRegionId(L1CaloRegionDetId rgn) { regionId_ = rgn; }
00122
00124 void setCapBlock(uint16_t capBlock) { capBlock_ = capBlock; }
00125
00127 void setCapIndex(uint16_t capIndex) { capIndex_ = capIndex; }
00128
00130 void setBx(uint16_t bx) { bx_ = bx; }
00131
00133 void setType(L1GctInternJetType type) { type_ = type; }
00134
00136 void setRawData(uint32_t data) { data_ = data; }
00137
00139 void setData(uint8_t sgnEta,
00140 uint8_t oflow,
00141 uint16_t et,
00142 uint8_t eta,
00143 uint8_t phi,
00144 uint8_t tauVeto,
00145 uint8_t rank);
00146
00147
00148
00149
00151 bool operator==(const L1GctInternJetData& c) const;
00152
00154 bool operator!=(const L1GctInternJetData& c) const { return !(*this == c); }
00155
00156
00157 private:
00158
00159
00160 L1CaloRegionDetId regionId_;
00161
00162
00163 uint16_t capBlock_;
00164 uint16_t capIndex_;
00165 int16_t bx_;
00166
00167
00168 L1GctInternJetType type_;
00169
00170
00171 uint32_t data_;
00172
00173 };
00174
00175 std::ostream& operator<<(std::ostream& s, const L1GctInternJetData& cand);
00176
00177 #endif