00001 #ifndef L1CSCSPStatusDigi_h 00002 #define L1CSCSPStatusDigi_h 00003 00004 #include <string.h> 00005 00006 class CSCTFUnpacker; 00007 00008 class L1CSCSPStatusDigi { 00009 private: 00010 unsigned short sp_slot; // 00011 unsigned short l1a_bxn; // Take from the SP header 00012 unsigned short fmm_status; // Take from the SP header 00013 00014 unsigned short se; // Make logical OR of all tbins for each of 15(endcap) SE bits 00015 unsigned short sm; // Make logical OR of all tbins for each of 15(endcap) SM bits 00016 unsigned long bx; // Make logical OR of all tbins for each of 15(endcap)+2(barrel) BX bits 00017 unsigned long af; // Make logical OR of all tbins for each of 15(endcap)+2(barrel) AF bits 00018 unsigned long vp; // Make logical OR of all tbins for each of 15(endcap)+2(barrel) VP/VQ bits 00019 enum {IDLE=1, CARRIER=2, NORMAL=4, ERROR=8, FIFO=16}; // States of optical receivers + Alignment FIFO full OR empty status 00020 unsigned short link_status[15]; // Optical receiver status ORed for all tbins 00021 unsigned short mpc_link_id; // MPC_id and link# from MEx Data Record ORed for all tbins 00022 00023 unsigned long track_cnt; 00024 unsigned long orbit_cnt; 00025 00026 friend class CSCTFUnpacker; 00027 00028 public: 00029 00030 unsigned short slot(void) const throw() { return sp_slot; } 00031 unsigned short BXN (void) const throw() { return l1a_bxn; } 00032 unsigned short FMM (void) const throw() { return fmm_status; } 00033 unsigned short SEs (void) const throw() { return se; } 00034 unsigned short SMs (void) const throw() { return sm; } 00035 unsigned long BXs (void) const throw() { return bx; } 00036 unsigned long AFs (void) const throw() { return af; } 00037 unsigned long VPs (void) const throw() { return vp; } 00038 unsigned short link(int link) const throw() { return link_status[link]; } 00039 00040 unsigned long track_counter(void) const throw() { return track_cnt; } 00041 unsigned long orbit_counter(void) const throw() { return orbit_cnt; } 00042 00043 L1CSCSPStatusDigi(void){ bzero(this,sizeof(L1CSCSPStatusDigi)); } 00044 ~L1CSCSPStatusDigi(void){} 00045 }; 00046 00047 #endif