Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader2013.h"
0002 #include "DataFormats/CSCDigi/interface/CSCConstants.h"
0003 #include <iostream>
0004 
0005 CSCDMBHeader2013::CSCDMBHeader2013() {
0006   bzero(data(), sizeInWords() * 2);
0007   bits.ddu_code_1 = bits.ddu_code_2 = bits.ddu_code_3 = bits.ddu_code_4 = 0xA;
0008   bits.newddu_code_1 = bits.newddu_code_2 = bits.newddu_code_3 = bits.newddu_code_4 = 0x9;
0009 }
0010 
0011 CSCDMBHeader2013::CSCDMBHeader2013(const uint16_t* buf) { memcpy(data(), buf, sizeInWords() * 2); }
0012 
0013 unsigned CSCDMBHeader2013::cfebMovlp() const { return bits.cfeb_movlp; }
0014 
0015 unsigned CSCDMBHeader2013::dmbCfebSync() const { return bits.dmb_cfeb_sync; }
0016 
0017 unsigned CSCDMBHeader2013::activeDavMismatch() const { return bits.clct_dav_mismatch; }
0018 
0019 unsigned CSCDMBHeader2013::format_version() const { return bits.fmt_version; }
0020 
0021 unsigned CSCDMBHeader2013::cfebAvailable() const { return bits.cfeb_dav; }
0022 
0023 unsigned CSCDMBHeader2013::nalct() const { return bits.alct_dav; }
0024 
0025 unsigned CSCDMBHeader2013::nclct() const { return bits.tmb_dav; }
0026 
0027 unsigned CSCDMBHeader2013::crateID() const { return bits.dmb_crate; }
0028 
0029 unsigned CSCDMBHeader2013::dmbID() const { return bits.dmb_id; }
0030 
0031 unsigned CSCDMBHeader2013::bxn() const { return bits.dmb_bxn; }
0032 
0033 unsigned CSCDMBHeader2013::bxn12() const { return bits.dmb_bxn1; }
0034 
0035 unsigned CSCDMBHeader2013::l1a() const { return bits.dmb_l1a; }
0036 
0037 unsigned CSCDMBHeader2013::l1a24() const { return (bits.dmb_l1a_lowo | (bits.dmb_l1a_hiwo << 12)); }
0038 
0039 void CSCDMBHeader2013::setL1A(int l1a) { bits.dmb_l1a = l1a & 0x1F; }
0040 
0041 void CSCDMBHeader2013::setL1A24(int l1a) {
0042   bits.dmb_l1a_lowo = l1a & 0xFFF;
0043   bits.dmb_l1a_hiwo = (l1a >> 12) & 0xFFF;
0044 }
0045 
0046 void CSCDMBHeader2013::setBXN(int bxn) {
0047   bits.dmb_bxn1 = bxn & 0xFFF;
0048   bits.dmb_bxn = bxn & 0x1F;
0049 }
0050 
0051 void CSCDMBHeader2013::setCrateAddress(int crate, int dmbId) {
0052   this->bits.dmb_crate = crate;
0053   this->bits.dmb_id = dmbId;
0054 }
0055 
0056 unsigned CSCDMBHeader2013::sizeInWords() const { return 8; }
0057 
0058 /// counts from zero
0059 bool CSCDMBHeader2013::cfebAvailable(unsigned icfeb) {
0060   assert(icfeb < CSCConstants::MAX_CFEBS_RUN2);
0061   return (cfebAvailable() >> icfeb) & 1;
0062 }
0063 
0064 void CSCDMBHeader2013::addCFEB(int icfeb) {
0065   assert(icfeb < CSCConstants::MAX_CFEBS_RUN2);
0066   bits.cfeb_dav |= (1 << icfeb);
0067   bits.cfeb_clct_sent |= (1 << icfeb);
0068 }
0069 
0070 void CSCDMBHeader2013::addNCLCT() { bits.tmb_dav = bits.tmb_dav_copy = bits.tmb_dav_copy2 = 1; }
0071 
0072 void CSCDMBHeader2013::addNALCT() { bits.alct_dav = bits.alct_dav_copy = bits.alct_dav_copy2 = 1; }
0073 
0074 bool CSCDMBHeader2013::check() const {
0075   return (bits.ddu_code_1 == 0xA && bits.ddu_code_2 == 0xA && bits.ddu_code_3 == 0xA && bits.ddu_code_4 == 0xA &&
0076           bits.newddu_code_1 == 0x9 && bits.newddu_code_2 == 0x9 && bits.newddu_code_3 == 0x9 &&
0077           bits.newddu_code_4 == 0x9);
0078 }