00001 #ifndef CALOTSAMPLESBASE_H 00002 #define CALOTSAMPLESBASE_H 1 00003 00004 #include <ostream> 00005 #include "DataFormats/DetId/interface/DetId.h" 00006 #include <assert.h> 00007 00008 template <class Ttype> 00009 class CaloTSamplesBase 00010 { 00011 public: 00012 00013 CaloTSamplesBase<Ttype>( Ttype* mydata, 00014 uint32_t size ) ; 00015 00016 CaloTSamplesBase<Ttype>( const CaloTSamplesBase<Ttype>& cs ) ; 00017 00018 CaloTSamplesBase<Ttype>( Ttype* mydata , 00019 uint32_t length , 00020 const DetId& id , 00021 uint32_t size , 00022 uint32_t pre ) ; 00023 00024 virtual ~CaloTSamplesBase<Ttype>() ; 00025 00026 void setZero() ; 00027 00028 DetId id() const ; 00029 uint32_t size() const ; 00030 uint32_t pre() const ; 00031 bool zero() const ; 00032 00033 Ttype& operator[]( uint32_t i ) ; 00034 00035 const Ttype& operator[]( uint32_t i ) const ; 00036 00037 CaloTSamplesBase<Ttype>& operator=( const CaloTSamplesBase<Ttype>& cs ) ; 00038 00039 CaloTSamplesBase<Ttype>& operator*=( Ttype value ) ; 00040 00041 CaloTSamplesBase<Ttype>& operator+=( Ttype value ) ; 00042 00043 CaloTSamplesBase<Ttype>& operator+=( const CaloTSamplesBase<Ttype>& cs ) ; 00044 00045 virtual uint32_t capacity() const = 0 ; 00046 00047 private: 00048 00049 virtual Ttype* data( uint32_t i ) = 0 ; 00050 virtual const Ttype* cdata( uint32_t i ) const = 0 ; 00051 00052 DetId m_id ; 00053 uint32_t m_size ; 00054 uint32_t m_pre ; 00055 } ; 00056 00057 template <class Ttype> 00058 std::ostream& operator<<( std::ostream& s, 00059 const CaloTSamplesBase<Ttype>& sam ) ; 00060 00061 #endif