00001 #ifndef CALCALIBLOGS_H
00002 #define CALCALIBLOGS_H 1
00003
00004 #include <string>
00005
00006
00007
00008 #include "CalRecon/CalBase.h"
00009 #include "CalRecon/CalLogID.h"
00010
00011 class CalCalibLog : public CalLogID
00012 {
00013 public:
00014
00015
00016 CalCalibLog(int ilayer, int iview, int column);
00017 ~CalCalibLog() {}
00018
00019 double getBrkpt( int side, int range)const {return m_brkpt[side][range];}
00020 double getCoefa( int i,int side,int range)const {return m_coefa[i][side][range];}
00021 double getCoefb( int i,int side,int range)const {return m_coefb[i][side][range];}
00022 double getGain(int side,int range)const {return m_gain[side][range];}
00023 double getRail(int side,int range)const {return m_rail[side][range];}
00024 double getSlope(int range)const {return m_slope[range];}
00025 void readIntlin(std::istream& file,int side,int range);
00026 void readGain(std::istream& file, int side);
00027 void readRail(std::istream& file, int side);
00028 void readSlope(std::istream& file);
00029 double adc_to_MeV(double adc, int side, int range) const;
00030 private:
00031
00032 double m_brkpt[CALNSIDES][CALNRANGES];
00033 double m_coefa[3][CALNSIDES][CALNRANGES];
00034 double m_coefb[3][CALNSIDES][CALNRANGES];
00035 double m_gain[CALNSIDES][CALNRANGES];
00036 double m_rail[CALNSIDES][CALNRANGES];
00037 double m_slope[CALNRANGES];
00038 };
00039
00040 class CalCalibLogs
00041 {
00042 public:
00043
00044 CalCalibLogs(int nLogs = 10, int nLayers = 4) { ini(nLogs,nLayers);}
00045 ~CalCalibLogs();
00046
00047 void setFileNames(const std::string& IntlinFileName,
00048 const std::string& GainFileName,
00049 const std::string& RailFileName,
00050 const std::string& SlopeFileName)
00051 {
00052
00053 m_IntlinFile = IntlinFileName;
00054 m_GainFile = GainFileName;
00055 m_RailFile = RailFileName;
00056 m_SlopeFile = SlopeFileName;
00057
00058 }
00059
00060
00061 void readGain();
00062 void readIntlin();
00063 void readRail();
00064 void readSlope();
00065 virtual void make();
00066 virtual void clear() {}
00067 virtual void ini(int nLogs, int nLayers);
00068
00069
00070 int num() const {return m_List.size();}
00071 CalCalibLog* Log(int i) const {return m_List[i];}
00072 CalCalibLog* getLogID(int i) const;
00073
00074 private:
00075
00076 std::string m_IntlinFile;
00077 std::string m_GainFile;
00078 std::string m_RailFile;
00079 std::string m_SlopeFile;
00080 std::vector<CalCalibLog*> m_List;
00081
00082 };
00083 #endif