00001
00002 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctInternHFData.h"
00003
00004 L1GctInternHFData::L1GctInternHFData() :
00005 type_(null),
00006 capBlock_(0),
00007 capIndex_(0),
00008 bx_(0),
00009 data_(0)
00010 { }
00011
00013 L1GctInternHFData::~L1GctInternHFData() { }
00014
00015 L1GctInternHFData L1GctInternHFData::fromConcRingSums(const uint16_t capBlock,
00016 const uint16_t capIndex,
00017 const int16_t bx,
00018 const uint32_t data) {
00019 L1GctInternHFData d;
00020 d.setType(conc_hf_ring_et_sums);
00021 d.setCapIndex(capIndex);
00022 d.setCapBlock(capBlock);
00023 d.setBx(bx);
00024 d.setData(data);
00025 return d;
00026 }
00027
00028 L1GctInternHFData L1GctInternHFData::fromConcBitCounts(const uint16_t capBlock,
00029 const uint16_t capIndex,
00030 const int16_t bx,
00031 const uint32_t data) {
00032 L1GctInternHFData d;
00033 d.setType(conc_hf_bit_counts);
00034 d.setCapIndex(capIndex);
00035 d.setCapBlock(capBlock);
00036 d.setBx(bx);
00037 for (unsigned i=0; i<4; ++i) {
00038 d.setCount(i, (data>>(6*i))&0x3f);
00039 }
00040 return d;
00041 }
00042
00043
00044
00045 uint16_t L1GctInternHFData::value(unsigned const i) {
00046 return (data_>>(i*8)) & 0xff;
00047 }
00048
00050 uint16_t L1GctInternHFData::et(unsigned const i) {
00051 return value(i);
00052 }
00053
00055 uint16_t L1GctInternHFData::count(unsigned const i) {
00056 return value(i);
00057 }
00058
00059
00061 bool L1GctInternHFData::operator==(const L1GctInternHFData& c) const {
00062 return ( this->raw() == c.raw() );
00063 }
00064
00065
00066
00067 void L1GctInternHFData::setValue(unsigned i, uint16_t val) {
00068 data_ &= ~(0xff<<(i*8));
00069 data_ |= (val&0xff)<<(i*8);
00070 }
00071
00073 void L1GctInternHFData::setEt(unsigned i, uint16_t et) {
00074 setValue(i, et);
00075 }
00076
00078 void L1GctInternHFData::setCount(unsigned i, uint16_t count) {
00079 setValue(i, count);
00080 }
00081
00082
00083 std::ostream& operator<<(std::ostream& s, const L1GctInternHFData& cand);
00084