Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:21

0001 #ifndef DIGIHGCAL_HGCDATAFRAME_H
0002 #define DIGIHGCAL_HGCDATAFRAME_H
0003 
0004 #include <vector>
0005 #include <ostream>
0006 #include <iostream>
0007 
0008 /**
0009    @class HGCDataFrame
0010    @short Readout digi for HGC
0011 */
0012 
0013 template <class D, class S>
0014 class HGCDataFrame {
0015 public:
0016   /**
0017      @short key to sort the collection
0018    */
0019   typedef D key_type;
0020 
0021   /**
0022      @short CTOR
0023   */
0024   HGCDataFrame() : id_(0), maxSampleSize_(15) { data_.resize(maxSampleSize_); }
0025   HGCDataFrame(const D& id) : id_(id), maxSampleSize_(15) { data_.resize(maxSampleSize_); }
0026 
0027   /**
0028     @short det id
0029   */
0030   const D& id() const { return id_; }
0031 
0032   /** 
0033     @short total number of samples in the digi 
0034   */
0035   int size() const { return data_.size() & 0xf; }
0036 
0037   /**
0038      @short allow to set size
0039    */
0040   void resize(size_t s) { data_.resize(s); }
0041 
0042   /**
0043      @short assess/set specific samples
0044   */
0045   const S& operator[](int i) const { return data_[i]; }
0046   const S& sample(int i) const { return data_[i]; }
0047   void setSample(int i, const S& sample) {
0048     if (i < (int)data_.size())
0049       data_[i] = sample;
0050   }
0051   void print(std::ostream& out = std::cout) {
0052     for (size_t i = 0; i < data_.size(); i++) {
0053       out << "[" << i << "] ";
0054       data_[i].print(out);
0055     }
0056   }
0057   const std::vector<S>& data() const { return data_; }
0058   void setData(const std::vector<S>& d) { data_ = d; }
0059 
0060 private:
0061   //collection of samples
0062   std::vector<S> data_;
0063 
0064   // det id for this data frame
0065   D id_;
0066 
0067   //number of samples and maximum available
0068   size_t maxSampleSize_;
0069 };
0070 
0071 #endif