Back to home page

Project CMSSW displayed by LXR

 
 

    


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

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