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
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