|
||||
File indexing completed on 2024-04-06 12:10:22
0001 #ifndef EventFilter_CSCRawToDigi_CSCDMBHeader2013_h 0002 #define EventFilter_CSCRawToDigi_CSCDMBHeader2013_h 0003 0004 /* 0005 DMB-DDU 2013 Header/Trailer bit definitions (some bits get repeated for bit error mitigation) 0006 0007 DMB_L1A: L1A Event Number, count from DMB 0008 DMB_BXN: Bunch Crossing Number, count from DMB 0009 TMB_DAV: non-zero indicates TMB data exists for this event 0010 ALCT_DAV: non-zero indicates ALCT data exists for this event 0011 CFEB_CLCT_SENT: indicates which CFEBs should have sent data to DMB 0012 CFEB_DAV: indicates which CFEBs have sent data to DMB 0013 CLCT-DAV-Mismatch: the CFEB_DAVs do not match the CLCTs sent 0014 DMB_CRATE: peripheral crate ID from DMB 0015 DMB_ID: board number of DMB 0016 CFEB_MOVLP: the time sample for this event has multiple overlaps with samples from previous events 0017 DMB-CFEB-Sync: bits used for DMB-CFEB synchronization check 0018 ALCT_HALF: zero indicates that the ALCT FIFO on the DMB is half-full 0019 TMB_HALF: zero indicates that the TMB FIFO on the DMB is half-full 0020 CFEB_HALF: zero indicates that the CFEB FIFO on the DMB is half-full 0021 DMB_L1PIPE: number of L1A Events backed-up in the DMB 0022 ALCT_EMPTY: one indicates that the ALCT FIFO on the DMB is empty 0023 TMB_EMPTY: one indicates that the TMB FIFO on the DMB is empty 0024 CFEB_EMPTY: one indicates that the CFEB FIFO on the DMB is empty 0025 ALCT_Start_Timeout: indicates that the start of ALCT data was not detected within the time-out period 0026 TMB_Start_Timeout: indicates that the start of TMB data was not detected within the time-out period 0027 CFEB_Start_Timeout: indicates that the start of CFEB data was not detected within the time-out period. 0028 CFEB_End_Timeout: indicates that the end of CFEB data was not detected within the time-out period 0029 ALCT_End_Timeout: indicates that the end of ALCT data was not detected within the time-out period 0030 TMB_End_Timeout: indicates that the end of TMB data was not detected within the time-out period 0031 ALCT_FULL: one indicates that the ALCT FIFO on the DMB is full 0032 TMB_FULL: one indicates that the TMB FIFO on the DMB is full 0033 CFEB_FULL: one indicates that the CFEB FIFO on the DMB is full 0034 DMB_CRC: each DMB generates a 22-bit CRC that encompasses all CSC data from the first 9-code to the last F-code in the event 0035 */ 0036 0037 #include <cassert> 0038 #include <iosfwd> 0039 #include <cstring> // bzero 0040 #include "DataFormats/CSCDigi/interface/CSCDMBStatusDigi.h" 0041 #include "EventFilter/CSCRawToDigi/interface/CSCVDMBHeaderFormat.h" 0042 0043 struct CSCDMBHeader2013 : public CSCVDMBHeaderFormat { 0044 // public: 0045 0046 CSCDMBHeader2013(); 0047 0048 CSCDMBHeader2013(const uint16_t *buf); 0049 /* 0050 CSCDMBHeader2013(const CSCDMBStatusDigi & digi) 0051 { 0052 memcpy(this, digi.header(), sizeInWords()*2); 0053 } 0054 */ 0055 bool cfebAvailable(unsigned icfeb) override; 0056 0057 void addCFEB(int icfeb) override; 0058 void addNCLCT() override; 0059 void addNALCT() override; 0060 void setBXN(int bxn) override; 0061 void setL1A(int l1a) override; 0062 void setL1A24(int l1a) override; 0063 void setCrateAddress(int crate, int dmbId) override; 0064 void setdmbID(int newDMBID) override { bits.dmb_id = newDMBID; } 0065 void setdmbVersion(unsigned int version) override { bits.fmt_version = (version < 4) ? version : 0; } 0066 0067 unsigned cfebActive() const override { return bits.cfeb_clct_sent; } 0068 unsigned crateID() const override; 0069 unsigned dmbID() const override; 0070 unsigned bxn() const override; 0071 unsigned bxn12() const override; 0072 unsigned l1a() const override; 0073 unsigned l1a24() const override; 0074 unsigned cfebAvailable() const override; 0075 unsigned nalct() const override; 0076 unsigned nclct() const override; 0077 unsigned cfebMovlp() const override; 0078 unsigned dmbCfebSync() const override; 0079 unsigned activeDavMismatch() const override; 0080 unsigned format_version() const override; 0081 0082 unsigned sizeInWords() const override; 0083 0084 bool check() const override; 0085 0086 unsigned short *data() override { return (unsigned short *)(&bits); } 0087 unsigned short *data() const override { return (unsigned short *)(&bits); } 0088 0089 //ostream & operator<<(ostream &, const CSCDMBHeader &); 0090 0091 // private: 0092 0093 struct { 0094 /// 1st Header word 0095 unsigned dmb_l1a_lowo : 12; /// DMB_L1A[11:0] 0096 unsigned newddu_code_1 : 4; /// constant, should be 1001 0097 0098 /// 2nd Header word 0099 unsigned dmb_l1a_hiwo : 12; /// DMB_L1A[23:12] 0100 unsigned newddu_code_2 : 4; /// constant, should be 1001 0101 0102 /// 3rd Header word 0103 unsigned cfeb_clct_sent : 7; /// CFEB_CLCT_SENT(7:1) 0104 unsigned clct_dav_mismatch : 1; /// CLCT-DAV-Mismatch(1) 0105 unsigned fmt_version : 2; /// Fmt_Vers(1:0) 0106 unsigned tmb_dav : 1; /// TMB_DAV(1) 0107 unsigned alct_dav : 1; /// ALCT_DAV(1) 0108 unsigned newddu_code_3 : 4; /// constant, should be 1001 0109 0110 /// 4th Header word 0111 unsigned dmb_bxn1 : 12; /// DMB_BXN[11:0] 0112 unsigned newddu_code_4 : 4; /// constant, should be 1001 0113 0114 /// 5th Header word 0115 unsigned cfeb_dav : 7; /// CFEB_DAV(7:1) 0116 unsigned clct_dav_mismatch_copy : 1; /// CLCT-DAV-Mismatch(1) 0117 unsigned fmt_version_copy : 2; /// Fmt_Vers(1:0) 0118 unsigned tmb_dav_copy : 1; /// TMB_DAV(1) 0119 unsigned alct_dav_copy : 1; /// ALCT_DAV(1) 0120 unsigned ddu_code_1 : 4; /// constant, should be '1010' 0121 0122 /// 6th Header word 0123 unsigned dmb_id : 4; /// DMB_ID(4) 0124 unsigned dmb_crate : 8; /// DMB_CRATE(8) 0125 unsigned ddu_code_2 : 4; /// constant, should be '1010' 0126 0127 /// 7th Header word 0128 unsigned dmb_bxn : 5; /// DMB_BXN[4:0] 0129 /// the time sample for this event has multiple overlaps 0130 /// with samples from previous events 0131 unsigned cfeb_movlp : 5; /// CFEB_MOVLP(5:1) 0132 unsigned tmb_dav_copy2 : 1; /// TMB_DAV(1) 0133 unsigned alct_dav_copy2 : 1; /// ALCT_DAV(1) 0134 unsigned ddu_code_3 : 4; /// constant, should be '1010' 0135 0136 /// 8th Header word 0137 unsigned dmb_l1a : 5; /// DMB_L1A[4:0] 0138 unsigned clct_dav_mismatch_copy2 : 1; /// CLCT-DAV-Mismatch(1) 0139 unsigned fmt_version_copy2 : 2; /// Fmt_Vers(1:0) 0140 unsigned dmb_cfeb_sync : 4; /// DMB-CFEB-Sync[3:0] 0141 unsigned ddu_code_4 : 4; /// constant, should be '1010' 0142 } bits; 0143 }; 0144 0145 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |