Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 62 additions & 61 deletions DataFormats/FTLDigi/interface/BTLSample.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,80 +9,81 @@
@class BTLSample
@short wrapper for a data word
*/
namespace io_v1 {
class BTLSample {
public:
enum BTLSampleDataMasks { kToA2Mask = 0x3ff, kToAMask = 0x3ff, kDataMask = 0x3ff };
enum BTLSampleDataShifts { kToA2Shift = 20, kToAShift = 10, kDataShift = 0 };

class BTLSample {
public:
enum BTLSampleDataMasks { kToA2Mask = 0x3ff, kToAMask = 0x3ff, kDataMask = 0x3ff };
enum BTLSampleDataShifts { kToA2Shift = 20, kToAShift = 10, kDataShift = 0 };
enum BTLSampleFlagMasks { kThreshMask = 0x1, kModeMask = 0x1 };
enum BTLSampleFlagShifts { kThreshShift = 1, kModeShift = 0 };

enum BTLSampleFlagMasks { kThreshMask = 0x1, kModeMask = 0x1 };
enum BTLSampleFlagShifts { kThreshShift = 1, kModeShift = 0 };

/**
/**
@short CTOR
*/
BTLSample() : value_(0), flag_(0), row_(0), col_(0) {}
BTLSample(uint32_t value, uint16_t flag, uint8_t row, uint8_t col)
: value_(value), flag_(flag), row_(row), col_(col) {}
BTLSample(const BTLSample& o) : value_(o.value_), flag_(o.flag_), row_(o.row_), col_(o.col_) {}
BTLSample& operator=(const BTLSample&) = default;
BTLSample() : value_(0), flag_(0), row_(0), col_(0) {}
BTLSample(uint32_t value, uint16_t flag, uint8_t row, uint8_t col)
: value_(value), flag_(flag), row_(row), col_(col) {}
BTLSample(const BTLSample& o) : value_(o.value_), flag_(o.flag_), row_(o.row_), col_(o.col_) {}
BTLSample& operator=(const BTLSample&) = default;

/**
/**
@short setters
*/
void setThreshold(bool thr) { setFlagWord(thr, kThreshMask, kThreshShift); }
void setMode(bool mode) { setFlagWord(mode, kModeMask, kModeShift); }
void setToA(uint16_t toa) { setDataWord(toa, kToAMask, kToAShift); }
void setToA2(uint16_t toa2) { setDataWord(toa2, kToA2Mask, kToA2Shift); }
void setData(uint16_t data) { setDataWord(data, kDataMask, kDataShift); }
void set(bool thr, bool mode, uint16_t toa2, uint16_t toa, uint16_t data, uint8_t row, uint8_t col) {
flag_ = (((uint16_t)thr & kThreshMask) << kThreshShift | ((uint16_t)mode & kModeMask) << kModeShift);
void setThreshold(bool thr) { setFlagWord(thr, kThreshMask, kThreshShift); }
void setMode(bool mode) { setFlagWord(mode, kModeMask, kModeShift); }
void setToA(uint16_t toa) { setDataWord(toa, kToAMask, kToAShift); }
void setToA2(uint16_t toa2) { setDataWord(toa2, kToA2Mask, kToA2Shift); }
void setData(uint16_t data) { setDataWord(data, kDataMask, kDataShift); }
void set(bool thr, bool mode, uint16_t toa2, uint16_t toa, uint16_t data, uint8_t row, uint8_t col) {
flag_ = (((uint16_t)thr & kThreshMask) << kThreshShift | ((uint16_t)mode & kModeMask) << kModeShift);

value_ = (((uint32_t)toa2 & kToA2Mask) << kToA2Shift | ((uint32_t)toa & kToAMask) << kToAShift |
((uint32_t)data & kDataMask) << kDataShift);
row_ = row;
col_ = col;
}
void print(std::ostream& out = std::cout) {
out << "THR: " << threshold() << " Mode: " << mode() << " ToA2: " << toa2() << " ToA: " << toa()
<< " Data: " << data() << " Row: " << (uint32_t)row() << " Column: " << (uint32_t)column() << " Raw Flag=0x"
<< std::hex << raw_flag() << std::dec << " Raw Data=0x" << std::hex << raw_data() << std::dec << std::endl;
}
value_ = (((uint32_t)toa2 & kToA2Mask) << kToA2Shift | ((uint32_t)toa & kToAMask) << kToAShift |
((uint32_t)data & kDataMask) << kDataShift);
row_ = row;
col_ = col;
}
void print(std::ostream& out = std::cout) {
out << "THR: " << threshold() << " Mode: " << mode() << " ToA2: " << toa2() << " ToA: " << toa()
<< " Data: " << data() << " Row: " << (uint32_t)row() << " Column: " << (uint32_t)column() << " Raw Flag=0x"
<< std::hex << raw_flag() << std::dec << " Raw Data=0x" << std::hex << raw_data() << std::dec << std::endl;
}

/**
/**
@short getters
*/
uint32_t raw_data() const { return value_; }
uint16_t raw_flag() const { return flag_; }
bool threshold() const { return ((flag_ >> kThreshShift) & kThreshMask); }
bool mode() const { return ((flag_ >> kModeShift) & kModeMask); }
uint32_t toa() const { return ((value_ >> kToAShift) & kToAMask); }
uint32_t toa2() const { return ((value_ >> kToA2Shift) & kToA2Mask); }
uint32_t data() const { return ((value_ >> kDataShift) & kDataMask); }
uint8_t row() const { return row_; }
uint8_t column() const { return col_; }
uint32_t raw_data() const { return value_; }
uint16_t raw_flag() const { return flag_; }
bool threshold() const { return ((flag_ >> kThreshShift) & kThreshMask); }
bool mode() const { return ((flag_ >> kModeShift) & kModeMask); }
uint32_t toa() const { return ((value_ >> kToAShift) & kToAMask); }
uint32_t toa2() const { return ((value_ >> kToA2Shift) & kToA2Mask); }
uint32_t data() const { return ((value_ >> kDataShift) & kDataMask); }
uint8_t row() const { return row_; }
uint8_t column() const { return col_; }

private:
/**
private:
/**
@short wrapper to reset words at a given position
*/
void setDataWord(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
value_ &= ~(mask << pos);
//now set the new value
value_ |= ((word & mask) << pos);
}
void setFlagWord(uint16_t word, uint16_t mask, uint16_t pos) {
//clear required bits
flag_ &= ~(mask << pos);
//now set the new value
flag_ |= ((word & mask) << pos);
}

// bit-words for data and flags
uint32_t value_;
uint16_t flag_;
uint8_t row_, col_;
};
void setDataWord(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
value_ &= ~(mask << pos);
//now set the new value
value_ |= ((word & mask) << pos);
}
void setFlagWord(uint16_t word, uint16_t mask, uint16_t pos) {
//clear required bits
flag_ &= ~(mask << pos);
//now set the new value
flag_ |= ((word & mask) << pos);
}

// bit-words for data and flags
uint32_t value_;
uint16_t flag_;
uint8_t row_, col_;
};
} // namespace io_v1
using BTLSample = io_v1::BTLSample;
#endif
151 changes: 76 additions & 75 deletions DataFormats/FTLDigi/interface/ETLSample.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,93 +9,94 @@
@class ETLSample
@short wrapper for a data word
*/
namespace io_v1 {
class ETLSample {
public:
enum ETLSampleMasks {
kThreshMask = 0x1,
kModeMask = 0x1,
kColumnMask = 0x1f,
kRowMask = 0x3f,
kToAMask = 0x7ff,
kDataMask = 0xff,
kToTMask = 0x7ff
};
enum ETLSampleShifts {
kThreshShift = 31,
kModeShift = 30,
kColumnShift = 25,
kRowShift = 19,
kToAShift = 8,
kDataShift = 0,
kToTShift = 0
};

class ETLSample {
public:
enum ETLSampleMasks {
kThreshMask = 0x1,
kModeMask = 0x1,
kColumnMask = 0x1f,
kRowMask = 0x3f,
kToAMask = 0x7ff,
kDataMask = 0xff,
kToTMask = 0x7ff
};
enum ETLSampleShifts {
kThreshShift = 31,
kModeShift = 30,
kColumnShift = 25,
kRowShift = 19,
kToAShift = 8,
kDataShift = 0,
kToTShift = 0
};

/**
/**
@short CTOR
*/
ETLSample() : value_(0), valueToT_(0) {}
ETLSample(uint32_t value) : value_(value), valueToT_(0) {}
ETLSample(uint32_t value, uint32_t valueToT) : value_(value), valueToT_(valueToT) {}
ETLSample(const ETLSample& o) : value_(o.value_), valueToT_(o.valueToT_) {}
ETLSample& operator=(const ETLSample&) = default;
ETLSample() : value_(0), valueToT_(0) {}
ETLSample(uint32_t value) : value_(value), valueToT_(0) {}
ETLSample(uint32_t value, uint32_t valueToT) : value_(value), valueToT_(valueToT) {}
ETLSample(const ETLSample& o) : value_(o.value_), valueToT_(o.valueToT_) {}
ETLSample& operator=(const ETLSample&) = default;

/**
/**
@short setters
*/
void setThreshold(bool thr) { setWord(thr, kThreshMask, kThreshShift); }
void setMode(bool mode) { setWord(mode, kModeMask, kModeShift); }
void setColumn(uint8_t col) { setWord(col, kColumnMask, kColumnShift); }
void setRow(uint8_t row) { setWord(row, kRowMask, kRowShift); }
void setToA(uint16_t toa) { setWord(toa, kToAMask, kToAShift); }
void setToT(uint16_t tot) { setWordToT(tot, kToTMask, kToTShift); }
void setData(uint16_t data) { setWord(data, kDataMask, kDataShift); }
void set(bool thr, bool mode, uint16_t toa, uint16_t tot, uint16_t data, uint8_t row, uint8_t col) {
value_ = (((uint32_t)thr & kThreshMask) << kThreshShift | ((uint32_t)mode & kModeMask) << kModeShift |
((uint32_t)col & kColumnMask) << kColumnShift | ((uint32_t)row & kRowMask) << kRowShift |
((uint32_t)toa & kToAMask) << kToAShift | ((uint32_t)data & kDataMask) << kDataShift);
valueToT_ = ((uint32_t)tot & kToTMask) << kToTShift;
}
void print(std::ostream& out = std::cout) {
out << "(row,col) : (" << row() << ',' << column() << ") "
<< "THR: " << threshold() << " Mode: " << mode() << " ToA: " << toa() << " ToT: " << tot()
<< " Data: " << data() << " Raw=0x" << std::hex << raw() << std::dec << std::endl;
}
void setThreshold(bool thr) { setWord(thr, kThreshMask, kThreshShift); }
void setMode(bool mode) { setWord(mode, kModeMask, kModeShift); }
void setColumn(uint8_t col) { setWord(col, kColumnMask, kColumnShift); }
void setRow(uint8_t row) { setWord(row, kRowMask, kRowShift); }
void setToA(uint16_t toa) { setWord(toa, kToAMask, kToAShift); }
void setToT(uint16_t tot) { setWordToT(tot, kToTMask, kToTShift); }
void setData(uint16_t data) { setWord(data, kDataMask, kDataShift); }
void set(bool thr, bool mode, uint16_t toa, uint16_t tot, uint16_t data, uint8_t row, uint8_t col) {
value_ = (((uint32_t)thr & kThreshMask) << kThreshShift | ((uint32_t)mode & kModeMask) << kModeShift |
((uint32_t)col & kColumnMask) << kColumnShift | ((uint32_t)row & kRowMask) << kRowShift |
((uint32_t)toa & kToAMask) << kToAShift | ((uint32_t)data & kDataMask) << kDataShift);
valueToT_ = ((uint32_t)tot & kToTMask) << kToTShift;
}
void print(std::ostream& out = std::cout) {
out << "(row,col) : (" << row() << ',' << column() << ") "
<< "THR: " << threshold() << " Mode: " << mode() << " ToA: " << toa() << " ToT: " << tot()
<< " Data: " << data() << " Raw=0x" << std::hex << raw() << std::dec << std::endl;
}

/**
/**
@short getters
*/
uint32_t raw() const { return value_; }
bool threshold() const { return ((value_ >> kThreshShift) & kThreshMask); }
bool mode() const { return ((value_ >> kModeShift) & kModeMask); }
uint32_t column() const { return ((value_ >> kColumnShift) & kColumnMask); }
uint32_t row() const { return ((value_ >> kRowShift) & kRowMask); }
uint32_t toa() const { return ((value_ >> kToAShift) & kToAMask); }
uint32_t tot() const { return ((valueToT_ >> kToTShift) & kToTMask); }
uint32_t data() const { return ((value_ >> kDataShift) & kDataMask); }
uint32_t operator()() { return value_; }
uint32_t raw() const { return value_; }
bool threshold() const { return ((value_ >> kThreshShift) & kThreshMask); }
bool mode() const { return ((value_ >> kModeShift) & kModeMask); }
uint32_t column() const { return ((value_ >> kColumnShift) & kColumnMask); }
uint32_t row() const { return ((value_ >> kRowShift) & kRowMask); }
uint32_t toa() const { return ((value_ >> kToAShift) & kToAMask); }
uint32_t tot() const { return ((valueToT_ >> kToTShift) & kToTMask); }
uint32_t data() const { return ((value_ >> kDataShift) & kDataMask); }
uint32_t operator()() { return value_; }

private:
/**
private:
/**
@short wrapper to reset words at a given position
*/
void setWord(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
value_ &= ~(mask << pos);
//now set the new value
value_ |= ((word & mask) << pos);
}
void setWord(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
value_ &= ~(mask << pos);
//now set the new value
value_ |= ((word & mask) << pos);
}

void setWordToT(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
valueToT_ &= ~(mask << pos);
//now set the new value
valueToT_ |= ((word & mask) << pos);
}

// a 32-bit word
uint32_t value_;
uint32_t valueToT_;
};
void setWordToT(uint32_t word, uint32_t mask, uint32_t pos) {
//clear required bits
valueToT_ &= ~(mask << pos);
//now set the new value
valueToT_ |= ((word & mask) << pos);
}

// a 32-bit word
uint32_t value_;
uint32_t valueToT_;
};
} // namespace io_v1
using ETLSample = io_v1::ETLSample;
#endif
11 changes: 6 additions & 5 deletions DataFormats/FTLDigi/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
<class name="std::vector<FTLDataFrame>"/>
<class name="FTLDigiCollection"/>
<class name="edm::Wrapper<FTLDigiCollection>" />
<class name="BTLSample"/>
<class name="io_v1::BTLSample" ClassVersion="3">
<version ClassVersion="3" checksum="2717714428"/>
</class>
<class name="std::vector<BTLSample>"/>
<class name="ETLSample" ClassVersion="11">
<version ClassVersion="11" checksum="1290724074"/>
<version ClassVersion="10" checksum="1790811181"/>
<class name="io_v1::ETLSample" ClassVersion="3">
<version ClassVersion="3" checksum="3310437482"/>
</class>
<class name="std::vector<ETLSample>"/>
<class name="std::vector<io_v1::ETLSample>"/>
<class name="BTLDataFrame"/>
<class name="std::vector<BTLDataFrame>"/>
<class name="BTLDigiCollection"/>
Expand Down