Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-24 22:51:11

0001 /** \file
0002  * 
0003  *
0004  * \author N.Terentiev, CMU
0005  */
0006 #include "DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h"
0007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0008 #include <iostream>
0009 #include <cstdint>
0010 
0011 /// Shift and select
0012 int CSCCFEBStatusDigi::ShiftSel(int nmb, int nshift, int nsel) const { return (nmb >> nshift) & nsel; }
0013 /// Get SCA Full Condition
0014 std::vector<uint16_t> CSCCFEBStatusDigi::getSCAFullCond() const {
0015   /*    std::vector<int> vec(4,0);
0016     vec[0]=ShiftSel(SCAFullCond_,0,15);  // 4-bit FIFO1 word count
0017     vec[1]=ShiftSel(SCAFullCond_,4,15);  // 4-bit Block Number if Error Code=1
0018                                          // (CFEB: SCA Capacitors Full)
0019                                          // 4-bit FIFO3 word count if Error Code=2
0020                                          // (CFEB: FPGA FIFO full)
0021     vec[2]=ShiftSel(SCAFullCond_,9,7);   // Error Code
0022     vec[3]=ShiftSel(SCAFullCond_,12,15); // DDU Code, should be 0xB
0023     return vec;*/
0024   return bWords_;
0025 }
0026 /// Get TS_FLAG bit from SCA Controller data  per each time slice
0027 std::vector<int> CSCCFEBStatusDigi::getTS_FLAG() const {
0028   std::vector<int> vec(contrWords_.size(), 0);
0029   int nmb;
0030   for (unsigned int i = 0; i < vec.size(); i++) {
0031     nmb = contrWords_[i];
0032     vec[i] = ShiftSel(nmb, 15, 1);
0033   }
0034   return vec;
0035 }
0036 
0037 /// Get SCA_FULL bit from SCA Controller data  per each time slice
0038 std::vector<int> CSCCFEBStatusDigi::getSCA_FULL() const {
0039   std::vector<int> vec(contrWords_.size(), 0);
0040   int nmb;
0041   for (unsigned int i = 0; i < vec.size(); i++) {
0042     nmb = contrWords_[i];
0043     vec[i] = ShiftSel(nmb, 14, 1);
0044   }
0045   return vec;
0046 }
0047 
0048 /// Get LCT_PHASE bit from SCA Controller data  per each time slice
0049 std::vector<int> CSCCFEBStatusDigi::getLCT_PHASE() const {
0050   std::vector<int> vec(contrWords_.size(), 0);
0051   int nmb;
0052   for (unsigned int i = 0; i < vec.size(); i++) {
0053     nmb = contrWords_[i];
0054     vec[i] = ShiftSel(nmb, 13, 1);
0055   }
0056   return vec;
0057 }
0058 
0059 /// Get L1A_PHASE bit from SCA Controller data  per each time slice
0060 std::vector<int> CSCCFEBStatusDigi::getL1A_PHASE() const {
0061   std::vector<int> vec(contrWords_.size(), 0);
0062   int nmb;
0063   for (unsigned int i = 0; i < vec.size(); i++) {
0064     nmb = contrWords_[i];
0065     vec[i] = ShiftSel(nmb, 12, 1);
0066   }
0067   return vec;
0068 }
0069 
0070 /// Get SCA_BLK 4 bit word from SCA Controller data  per each time slice
0071 std::vector<int> CSCCFEBStatusDigi::getSCA_BLK() const {
0072   std::vector<int> vec(contrWords_.size(), 0);
0073   int nmb;
0074   for (unsigned int i = 0; i < vec.size(); i++) {
0075     nmb = contrWords_[i];
0076     vec[i] = ShiftSel(nmb, 8, 15);
0077   }
0078   return vec;
0079 }
0080 
0081 /// Get TRIG_TIME 8 bit word from SCA Controller data  per each time  slice
0082 std::vector<int> CSCCFEBStatusDigi::getTRIG_TIME() const {
0083   std::vector<int> vec(contrWords_.size(), 0);
0084   int nmb;
0085   for (unsigned int i = 0; i < vec.size(); i++) {
0086     nmb = contrWords_[i];
0087     vec[i] = ShiftSel(nmb, 0, 255);
0088   }
0089   return vec;
0090 }
0091 
0092 /// Debug
0093 void CSCCFEBStatusDigi::print() const {
0094   edm::LogVerbatim("CSCDigi") << "CSC CFEB # : " << getCFEBNmb();
0095 
0096   std::ostringstream ost;
0097   ost << " SCAFullCond: ";
0098   if (!getSCAFullCond().empty()) {
0099     for (size_t i = 0; i < 4; ++i) {
0100       ost << " " << (getSCAFullCond())[i];
0101     }
0102   } else {
0103     ost << " "
0104         << "BWORD is not valid";
0105   }
0106   edm::LogVerbatim("CSCDigi") << ost.str();
0107 
0108   ost.clear();
0109   ost << " CRC: ";
0110   for (size_t i = 0; i < getCRC().size(); ++i) {
0111     ost << " " << (getCRC())[i];
0112   }
0113   edm::LogVerbatim("CSCDigi") << ost.str();
0114 
0115   ost.clear();
0116   ost << " TS_FLAG: ";
0117   for (size_t i = 0; i < getTS_FLAG().size(); ++i) {
0118     ost << " " << (getTS_FLAG())[i];
0119   }
0120   edm::LogVerbatim("CSCDigi") << ost.str();
0121 
0122   ost.clear();
0123   ost << " SCA_FULL: ";
0124   for (size_t i = 0; i < getSCA_FULL().size(); ++i) {
0125     ost << " " << (getSCA_FULL())[i];
0126   }
0127   edm::LogVerbatim("CSCDigi") << ost.str();
0128 
0129   ost.clear();
0130   ost << " LCT_PHASE: ";
0131   for (size_t i = 0; i < getLCT_PHASE().size(); ++i) {
0132     ost << " " << (getLCT_PHASE())[i];
0133   }
0134   edm::LogVerbatim("CSCDigi") << ost.str();
0135 
0136   ost.clear();
0137   ost << " L1A_PHASE: ";
0138   for (size_t i = 0; i < getL1A_PHASE().size(); ++i) {
0139     ost << " " << (getL1A_PHASE())[i];
0140   }
0141   edm::LogVerbatim("CSCDigi") << ost.str();
0142 
0143   ost.clear();
0144   ost << " SCA_BLK: ";
0145   for (size_t i = 0; i < getSCA_BLK().size(); ++i) {
0146     ost << " " << (getSCA_BLK())[i];
0147   }
0148   edm::LogVerbatim("CSCDigi") << ost.str();
0149 
0150   ost.clear();
0151   ost << " TRIG_TIME: ";
0152   for (size_t i = 0; i < getTRIG_TIME().size(); ++i) {
0153     ost << " " << (getTRIG_TIME())[i];
0154   }
0155   edm::LogVerbatim("CSCDigi") << ost.str();
0156 }
0157 
0158 std::ostream& operator<<(std::ostream& o, const CSCCFEBStatusDigi& digi) {
0159   o << " " << digi.getCFEBNmb() << "\n";
0160   for (size_t i = 0; i < 4; ++i) {
0161     o << " " << (digi.getSCAFullCond())[i];
0162   }
0163   o << "\n";
0164   for (size_t i = 0; i < digi.getCRC().size(); ++i) {
0165     o << " " << (digi.getCRC())[i];
0166   }
0167   o << "\n";
0168   for (size_t i = 0; i < digi.getTS_FLAG().size(); ++i) {
0169     o << " " << (digi.getTS_FLAG())[i];
0170   }
0171   o << "\n";
0172   for (size_t i = 0; i < digi.getSCA_FULL().size(); ++i) {
0173     o << " " << (digi.getSCA_FULL())[i];
0174   }
0175   o << "\n";
0176   for (size_t i = 0; i < digi.getLCT_PHASE().size(); ++i) {
0177     o << " " << (digi.getLCT_PHASE())[i];
0178   }
0179   o << "\n";
0180   for (size_t i = 0; i < digi.getL1A_PHASE().size(); ++i) {
0181     o << " " << (digi.getL1A_PHASE())[i];
0182   }
0183   o << "\n";
0184   for (size_t i = 0; i < digi.getSCA_BLK().size(); ++i) {
0185     o << " " << (digi.getSCA_BLK())[i];
0186   }
0187   o << "\n";
0188   for (size_t i = 0; i < digi.getTRIG_TIME().size(); ++i) {
0189     o << " " << (digi.getTRIG_TIME())[i];
0190   }
0191   o << "\n";
0192 
0193   return o;
0194 }