emcPedestalFEM.h

Go to the documentation of this file.
00001 #ifndef __EMCPEDESTALFEM_H__
00002 #define __EMCPEDESTALFEM_H__
00003 
00004 #ifndef __EMCCALFEM_H__
00005 #include "emcCalFEM.h"
00006 #endif
00007 
00008 #include <vector>
00009 #include <map>
00010 #include <string>
00011 #include <iostream>
00012 
00022 class emcPedestalFEM : public emcCalFEM
00023 {
00024 
00025 public:
00026 
00028   explicit emcPedestalFEM(int absPosition,
00029                           int version = 0);
00030 
00032   emcPedestalFEM(int absPosition,
00033                  const PHTimeStamp& t1, const PHTimeStamp& t2,
00034                  int version = 0);
00035 
00037   emcPedestalFEM(const emcPedestalFEM& o);
00038 
00040   emcPedestalFEM& operator=(const emcPedestalFEM&);
00041 
00043   virtual ~emcPedestalFEM();
00044 
00045   virtual emcPedestalFEM* clone(void) const
00046   {
00047     return new emcPedestalFEM(*this);
00048   }
00049 
00050 
00051   virtual emcPedestalFEM* create(void) const
00052   {
00053     return new emcPedestalFEM(AbsolutePosition(),
00054                               GetStartValTime(),
00055                               GetEndValTime(),
00056                               Version());
00057   }
00058 
00059 #ifndef __CINT__
00060 public:
00061 
00062   typedef std::vector<int> AmuVector;
00063   typedef std::vector<AmuVector> ChannelVector;
00064   typedef std::map<std::string, ChannelVector*> PedMap;
00065   typedef std::map<std::string, std::vector<int> > PedAverageMap;
00066   typedef std::map<std::string, std::vector<float> > PedRMSMap;
00067 
00069   void AppendOneChannel(const char* ped_type, AmuVector& vec);
00070 
00073   static emcPedestalFEM* Default(const int& absPosition,
00074                                  const PHTimeStamp& t1,
00075                                  const PHTimeStamp& t2,
00076                                  int version = 0);
00077 
00079   void GetListOfValidTypes(std::vector<std::string>& list)
00080   {
00081     list = fValidTypes;
00082   }
00083 #endif
00084 
00086   virtual size_t GetNumberOfChannels(void) const;
00087 
00089   virtual const char* GetCategory(void) const;
00090 
00091   using emcCalFEM::getValue;
00092   using emcCalFEM::getValueFast;
00093 
00095   virtual float getValue(int ichannel, int amucell, const std::string& kind) const;
00096 
00098   virtual float getValueFast(int ch_index, int amu_number,
00099                              const std::string& ped_type) const;
00100 
00102   virtual float getValue(int ich, const std::string& kind, float& out) const;
00103 
00105   virtual float getValueFast(int ich, const std::string& kind, float& out) const;
00106 
00108   void GetValues(int ch_index, int amu_number,
00109                  int& low, int& high, int& tac);
00110 
00112   virtual bool IsEqual(const emcCalFEM&) const;
00113 
00115   bool IsValidType(const std::string& ped_type) const;
00116 
00117   // Reset the object
00118   virtual void Reset(void);
00119 
00121   virtual std::ostream& Print(std::ostream& out = std::cout, int level = 0) const;
00122 
00124   static std::vector<std::string> ValidTypes(int version);
00125 
00126 #ifndef __CINT__
00127 private:
00128   void Copy(emcPedestalFEM&) const;
00129 
00130   private:
00131     std::vector<std::string> fValidTypes;
00132     mutable PedMap fPed;
00133     mutable PedAverageMap fPedAverage;
00134     mutable PedRMSMap fPedRMS;
00135 #endif
00136 
00137   };
00138 
00139 #endif