Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:50:07

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   HGCDataFrame(const HGCDataFrame& o) : data_(o.data_), id_(o.id_), maxSampleSize_(o.maxSampleSize_) {}
0027 
0028   /**
0029     @short det id
0030   */
0031   const D& id() const { return id_; }
0032 
0033   /** 
0034     @short total number of samples in the digi 
0035   */
0036   int size() const { return data_.size() & 0xf; }
0037 
0038   /**
0039      @short allow to set size
0040    */
0041   void resize(size_t s) { data_.resize(s); }
0042 
0043   /**
0044      @short assess/set specific samples
0045   */
0046   const S& operator[](int i) const { return data_[i]; }
0047   const S& sample(int i) const { return data_[i]; }
0048   void setSample(int i, const S& sample) {
0049     if (i < (int)data_.size())
0050       data_[i] = sample;
0051   }
0052   void print(std::ostream& out = std::cout) {
0053     for (size_t i = 0; i < data_.size(); i++) {
0054       out << "[" << i << "] ";
0055       data_[i].print(out);
0056     }
0057   }
0058   const std::vector<S>& data() const { return data_; }
0059   void setData(const std::vector<S>& d) { data_ = d; }
0060 
0061 private:
0062   //collection of samples
0063   std::vector<S> data_;
0064 
0065   // det id for this data frame
0066   D id_;
0067 
0068   //number of samples and maximum available
0069   size_t maxSampleSize_;
0070 };
0071 
0072 #endif