File indexing completed on 2024-04-06 12:03:59
0001 #ifndef DataFormats_CSCDigi_CSCStripDigi_h
0002 #define DataFormats_CSCDigi_CSCStripDigi_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <vector>
0014 #include <iosfwd>
0015 #include <cstdint>
0016
0017 class CSCStripDigi {
0018 public:
0019
0020 CSCStripDigi(const int& istrip,
0021 const std::vector<int>& vADCCounts,
0022 const std::vector<uint16_t>& vADCOverflow,
0023 const std::vector<uint16_t>& vOverlap,
0024 const std::vector<uint16_t>& vErrorstat)
0025 : strip(istrip),
0026 ADCCounts(vADCCounts),
0027 ADCOverflow(vADCOverflow),
0028 OverlappedSample(vOverlap),
0029 Errorstat(vErrorstat) {}
0030
0031
0032 CSCStripDigi(const int& istrip, const std::vector<int>& vADCCounts)
0033 : strip(istrip), ADCCounts(vADCCounts), ADCOverflow(8, 0), OverlappedSample(8, 0), Errorstat(8, 0) {}
0034
0035 CSCStripDigi() : strip(0), ADCCounts(8, 0), ADCOverflow(8, 0), OverlappedSample(8, 0), Errorstat(8, 0) {}
0036
0037
0038 bool operator==(const CSCStripDigi& digi) const;
0039
0040
0041 int getStrip() const { return strip; }
0042
0043
0044 int getCFEB() const;
0045
0046
0047 std::vector<int> const& getADCCounts() const { return ADCCounts; }
0048
0049
0050 std::vector<int> getL1APhase() const {
0051 std::vector<int> L1APhaseResult(getOverlappedSample().size());
0052 for (int i = 0; i < (int)getOverlappedSample().size(); i++)
0053 L1APhaseResult[i] = (getOverlappedSample()[i] >> 8) & 0x1;
0054 return L1APhaseResult;
0055 }
0056
0057 int getL1APhase(int i) const { return (getOverlappedSample()[i] >> 8) & 0x1; }
0058
0059
0060 std::vector<uint16_t> const& getADCOverflow() const { return ADCOverflow; }
0061 std::vector<uint16_t> const& getOverlappedSample() const { return OverlappedSample; }
0062 std::vector<uint16_t> const& getErrorstat() const { return Errorstat; }
0063
0064
0065 void setStrip(int istrip) { strip = istrip; }
0066
0067
0068 void setADCCounts(const std::vector<int>& ADCCounts);
0069
0070
0071 void print() const;
0072
0073
0074 float pedestal() const { return 0.5f * (ADCCounts[0] + ADCCounts[1]); }
0075 float amplitude() const { return ADCCounts[4] - pedestal(); }
0076
0077 private:
0078 uint16_t strip;
0079 std::vector<int> ADCCounts;
0080 std::vector<uint16_t> ADCOverflow;
0081 std::vector<uint16_t> OverlappedSample;
0082 std::vector<uint16_t> Errorstat;
0083 };
0084
0085 std::ostream& operator<<(std::ostream& o, const CSCStripDigi& digi);
0086
0087 #endif