Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:10:57

0001 #ifndef EventFilter_RPCRawToDigi_RPCMP7Record_icc
0002 #define EventFilter_RPCRawToDigi_RPCMP7Record_icc
0003 
0004 #include "EventFilter/RPCRawToDigi/interface/RPCMP7Record.h"
0005 
0006 namespace rpcmp7 {
0007 
0008   inline void Header::reset() {
0009     record_[0] = 0x0;
0010     record_[1] = (std::uint64_t(l1a_type_) << event_type_offset_);
0011   }
0012 
0013   inline unsigned int Header::getEventType() const { return (record_[1] & event_type_mask_) >> event_type_offset_; }
0014 
0015   inline void Header::setEventType(unsigned int event_type) {
0016     record_[1] &= ~event_type_mask_;
0017     record_[1] |= (((std::uint64_t)(event_type) << event_type_offset_) & event_type_mask_);
0018   }
0019 
0020   inline void SubHeader::set(std::uint64_t const record) { record_ = record; }
0021 
0022   inline void SubHeader::reset() { record_ = 0x0; }
0023 
0024   inline std::uint64_t const& SubHeader::getRecord() const { return record_; }
0025 
0026   inline unsigned int SubHeader::getAlgoVersion() const { return ((record_ & algo_rev_mask_) >> algo_rev_offset_); }
0027 
0028   inline unsigned int SubHeader::getFirmwareVersion() const { return ((record_ & fw_rev_mask_) >> fw_rev_offset_); }
0029 
0030   inline void SubHeader::setAlgoVersion(unsigned int algo_rev) {
0031     record_ &= ~algo_rev_mask_;
0032     record_ |= (((std::uint64_t)(algo_rev) << algo_rev_offset_) & algo_rev_mask_);
0033   }
0034 
0035   inline void SubHeader::setFirmwareVersion(unsigned int fw_rev) {
0036     record_ &= ~fw_rev_mask_;
0037     record_ |= (((std::uint64_t)(fw_rev) << fw_rev_offset_) & fw_rev_mask_);
0038   }
0039 
0040   inline void BlockHeader::set(std::uint32_t const record) { record_ = record; }
0041 
0042   inline void BlockHeader::reset() { record_ = 0x0; }
0043 
0044   inline std::uint32_t const& BlockHeader::getRecord() const { return record_; }
0045 
0046   inline unsigned int BlockHeader::getId() const { return (record_ & id_mask_) >> id_offset_; }
0047 
0048   inline unsigned int BlockHeader::getLength() const { return (record_ & length_mask_) >> length_offset_; }
0049 
0050   inline unsigned int BlockHeader::getCaptionId() const { return (record_ & caption_id_mask_) >> caption_id_offset_; }
0051 
0052   inline bool BlockHeader::hasZeroSuppressionPerBX() const { return ((record_ & zs_per_bx_mask_) ? true : false); }
0053 
0054   inline bool BlockHeader::isZeroSuppressed() const { return ((record_ & is_zs_mask_) ? true : false); }
0055 
0056   inline bool BlockHeader::isZeroSuppressionInverted() const {
0057     return (hasZeroSuppressionPerBX() && isZeroSuppressed());
0058   }
0059 
0060   inline void BlockHeader::setId(unsigned int id) {
0061     record_ &= ~id_mask_;
0062     record_ |= (((std::uint32_t)(id) << id_offset_) & id_mask_);
0063   }
0064 
0065   inline void BlockHeader::setLength(unsigned int length) {
0066     record_ &= ~length_mask_;
0067     record_ |= (((std::uint32_t)(length) << length_offset_) & length_mask_);
0068   }
0069 
0070   inline void BlockHeader::setCaptionId(unsigned int caption_id) {
0071     record_ &= ~caption_id_mask_;
0072     record_ |= (((std::uint32_t)(caption_id) << caption_id_offset_) & caption_id_mask_);
0073   }
0074 
0075   inline void BlockHeader::setZeroSuppressionPerBX(bool zs_per_bx) {
0076     if (zs_per_bx)
0077       record_ |= zs_per_bx_mask_;
0078     else
0079       record_ &= ~(zs_per_bx_mask_);
0080   }
0081 
0082   inline void BlockHeader::setZeroSuppressed(bool is_zs) {
0083     if (is_zs)
0084       record_ |= is_zs_mask_;
0085     else
0086       record_ &= ~(is_zs_mask_);
0087   }
0088 
0089   inline void BlockHeader::setZeroSuppressionInverted(bool zs_inverted) { setZeroSuppressed(zs_inverted); }
0090 
0091   inline void BXHeader::set(std::uint32_t const record) { record_ = record; }
0092 
0093   inline void BXHeader::reset() { record_ = 0x0; }
0094 
0095   inline std::uint32_t const& BXHeader::getRecord() const { return record_; }
0096 
0097   inline unsigned int BXHeader::getFirstWord() const { return (record_ & first_word_mask_) >> first_word_offset_; }
0098 
0099   inline unsigned int BXHeader::getTotalLength() const {
0100     return (record_ & total_length_mask_) >> total_length_offset_;
0101   }
0102 
0103   inline bool BXHeader::isZeroSuppressed() const { return ((record_ & is_zs_mask_) ? true : false); }
0104 
0105   inline unsigned int BXHeader::getBXId() const { return getFirstWord() / 6; }
0106 
0107   inline unsigned int BXHeader::getTotalBX() const { return getTotalLength() / 6; }
0108 
0109   inline void BXHeader::setFirstWord(unsigned int first_word) {
0110     record_ &= ~first_word_mask_;
0111     record_ |= (((std::uint32_t)(first_word) << first_word_offset_) & first_word_mask_);
0112   }
0113 
0114   inline void BXHeader::setTotalLength(unsigned int total_length) {
0115     record_ &= ~total_length_mask_;
0116     record_ |= (((std::uint32_t)(total_length) << total_length_offset_) & total_length_mask_);
0117   }
0118 
0119   inline void BXHeader::setZeroSuppressed(bool is_zs) {
0120     if (is_zs)
0121       record_ |= is_zs_mask_;
0122     else
0123       record_ &= ~(is_zs_mask_);
0124   }
0125 
0126 }  // namespace rpcmp7
0127 
0128 #endif  // EventFilter_RPCRawToDigi_RPCMP7Record_icc