00001 #ifndef DIGIHCAL_HODATAFRAME_H 00002 #define DIGIHCAL_HODATAFRAME_H 00003 00004 #include "DataFormats/HcalDetId/interface/HcalDetId.h" 00005 #include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" 00006 #include "DataFormats/HcalDigi/interface/HcalQIESample.h" 00007 #include <vector> 00008 #include <ostream> 00009 00010 00016 class HODataFrame { 00017 public: 00018 typedef HcalDetId key_type; 00019 00020 HODataFrame(); // for persistence 00021 explicit HODataFrame(const HcalDetId& id); 00022 00023 const HcalDetId& id() const { return id_; } 00024 const HcalElectronicsId& elecId() const { return electronicsId_; } 00025 00027 int size() const { return size_&0xF; } 00029 int presamples() const { return hcalPresamples_&0xF; } 00031 bool zsMarkAndPass() const { return (hcalPresamples_&0x10); } 00033 bool zsUnsuppressed() const { return (hcalPresamples_&0x20); } 00034 00036 const HcalQIESample& operator[](int i) const { return data_[i]; } 00038 const HcalQIESample& sample(int i) const { return data_[i]; } 00039 00041 bool validate(int firstSample=0, int nSamples=100) const; 00042 00043 void setSize(int size); 00044 void setPresamples(int ps); 00045 void setZSInfo(bool unsuppressed, bool markAndPass); 00046 void setSample(int i, const HcalQIESample& sam) { data_[i]=sam; } 00047 void setReadoutIds(const HcalElectronicsId& eid); 00048 00049 static const int MAXSAMPLES = 10; 00050 private: 00051 HcalDetId id_; 00052 HcalElectronicsId electronicsId_; 00053 int size_; 00054 int hcalPresamples_; 00055 HcalQIESample data_[MAXSAMPLES]; 00056 }; 00057 00058 std::ostream& operator<<(std::ostream&, const HODataFrame&); 00059 00060 00061 #endif