Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

TDataItem.h

Go to the documentation of this file.
00001 //  TDataItem.h.
00020 #ifndef TDATAITEM_H
00021 #define TDATAITEM_H
00022 
00023 #include <iostream>
00024 #include <functional>
00025 
00026 #include <Rtypes.h>
00027 
00028 using std::cout;
00029 using std::endl;
00030 using std::dec;
00031 using std::unary_function;
00032 using std::binary_function;
00033 
00034 template<typename T>
00035 class TDataItem;
00036 
00037 template<typename T>
00038 class TDataItem {
00039 public:
00040   TDataItem();
00041   TDataItem(UShort_t, T);
00042   virtual ~TDataItem();
00043   void SetItem(UShort_t, T);
00044   void SetChannel(UShort_t);
00045   void SetValue(T);
00046   UShort_t GetChannel() const;
00047   T GetValue() const;
00048   void Print(const Char_t * = "") const;
00049  
00050 private:
00053   UShort_t fChannel;
00056   T fValue;
00057 
00058   // Class definition tag for ROOT.
00059   //
00060   ClassDef(TDataItem, 1)
00061 };
00062  
00063 // Class implementation tag for ROOT.
00064 //
00065 templateClassImp(TDataItem)
00066  
00067 template<typename T>
00068 inline TDataItem<T>::TDataItem()
00069   : fChannel(0), fValue(0)
00070 {
00074 }
00075  
00076 template<typename T>
00077 inline TDataItem<T>::TDataItem(UShort_t chan, T val)
00078   : fChannel(chan), fValue(val)
00079 {
00083 }
00084  
00085 template<typename T>
00086 inline TDataItem<T>::~TDataItem()
00087 {
00090 }
00091 
00092 template<typename T>
00093 inline void TDataItem<T>::SetItem(UShort_t chan, T val)
00094 {
00098   fChannel = chan;
00099   fValue = val;
00100 }
00101  
00102 template<typename T>
00103 inline void TDataItem<T>::SetChannel(UShort_t chan)
00104 {
00110   fChannel = chan;
00111 }
00112  
00113 template<typename T>
00114 inline void TDataItem<T>::SetValue(T val)
00115 {
00121   fValue = val;
00122 }
00123  
00124 template<typename T>
00125 inline UShort_t TDataItem<T>::GetChannel() const
00126 {
00130   return fChannel;
00131 }
00132  
00133 template<typename T>
00134 inline T TDataItem<T>::GetValue() const
00135 {
00139   return fValue;
00140 }
00141 
00142 template<typename T>
00143 inline void TDataItem<T>::Print(const Char_t *what) const
00144 {
00149   cout << what << "channel=" << dec << fChannel << " value=" << fValue << endl;
00150 }
00151 
00161 template<typename T>
00162 class EqualChannel;
00163 
00164 template<typename T>
00165 class EqualChannel : public unary_function<TDataItem<T>, Bool_t> {
00166 public:
00167   EqualChannel(T);
00168   Bool_t operator()(const TDataItem<T> &) const;
00169 
00170 private:
00173   T fChannel;
00174 };
00175 
00176 template<typename T>
00177 inline EqualChannel<T>::EqualChannel(T channel) : fChannel(channel)
00178 {
00182 }
00183 
00184 template<typename T>
00185 inline Bool_t EqualChannel<T>::operator()(const TDataItem<T> &item) const
00186 {
00192   return item.GetChannel() == fChannel;
00193 }
00194 
00204 template<typename T>
00205 class GreaterValue;
00206 
00207 template<typename T>
00208 class GreaterValue : public
00209 binary_function<const TDataItem<T> *, const TDataItem<T> *, Bool_t> {
00210 public:
00211   Bool_t operator()(const TDataItem<T> *, const TDataItem<T> *) const;
00212 };
00213 
00214 template<typename T>
00215 inline Bool_t GreaterValue<T>::operator()(const TDataItem<T> *a,
00216                                           const TDataItem<T> *b) const
00217 {
00223   return a->GetValue() > b->GetValue();
00224 }
00225 
00226 #endif // TDataItem.h

Generated on Mon Jan 8 11:54:31 2007 for DragonRoot by  doxygen 1.3.9.1