00001 #ifndef EMC_CALIBRATION_H
00002 #define EMC_CALIBRATION_H
00003
00004 #include <iostream>
00005
00006
00007 using namespace std;
00008
00009 class l3EmcTowerInfo
00010 {
00011 public:
00012 l3EmcTowerInfo();
00013
00014 inline float getPhi() { return phi; };
00015 inline float getEta() { return eta; };
00016 inline float getEtaMin() { return etamin; };
00017 inline float getEtaMax() { return etamax; };
00018 inline float getPed() { return ped; };
00019 inline float getGain() { return gain; };
00020 inline int getID() { return id; };
00021 inline int getDaqID() { return daqId; };
00022
00023 inline void setPhi(float _phi) { phi = _phi ; };
00024 inline void setEta(float _eta) { eta = _eta ; };
00025 inline void setEtaMin(float _etamin) { etamin = _etamin ; };
00026 inline void setEtaMax(float _etamax) { etamax = _etamax ; };
00027 inline void setPed(float _ped) { ped= _ped ; };
00028 inline void setGain(float _gain) { gain = _gain ; }
00029 inline void setID(int _id) { id = _id ; } ;
00030 inline void setDaqID(int _daqid) { daqId = _daqid ; } ;
00031
00032 inline void set(float _phi, float _eta, float _etamin, float _etamax,
00033 float _ped, float _gain, int _id, int _daqID) {
00034 setPhi(_phi);
00035 setEta(_eta);
00036 setEtaMin(_etamin);
00037 setEtaMax(_etamax);
00038 setPed(_ped);
00039 setGain(_gain);
00040 setID(_id);
00041 setDaqID(_daqID);
00042 }
00043
00044 private:
00045 float phi;
00046 float eta;
00047 float etamin;
00048 float etamax;
00049 float ped;
00050 float gain;
00051 int id;
00052 int daqId;
00053 };
00054
00055
00056
00057
00058
00059 class l3EmcCalibration
00060 {
00061 public:
00062 l3EmcCalibration(int nTow);
00063 ~l3EmcCalibration();
00064
00065 int loadMap(const char *filename);
00066 int loadTextMap(const char *filename);
00067 int saveTextMap(const char *filename);
00068
00069 inline l3EmcTowerInfo *getTowerInfo(int ID) {
00070 return &(tower[ID]);
00071 }
00072
00073 inline int daqToId(int daq) { if(daq > nTowers) return 0; else return daq2id[daq]; }
00074
00075 inline int getNTowers() { return nTowers; }
00076
00077 private:
00078
00079 int nTowers;
00080 l3EmcTowerInfo *tower;
00081
00082 int *daq2id;
00083
00084 struct colDef_t {
00085
00086 void set(int _nCols, int _id, int _daqId, int _phi,
00087 int _eta, int _etamin, int _etamax, int _ped, int _gain) {
00088
00089 nCols = _nCols;
00090 id = _id;
00091 daqId = _daqId;
00092 phi = _phi;
00093 eta = _eta;
00094 etamin = _etamin;
00095 etamax = _etamax;
00096 ped = _ped;
00097 gain = _gain;
00098
00099 }
00100
00101
00102 int nCols;
00103
00104 int id;
00105 int daqId;
00106
00107 int phi;
00108 int eta;
00109 int etamin;
00110 int etamax;
00111
00112 int ped;
00113 int gain;
00114 };
00115
00116 int readCalib(ifstream *from, colDef_t colDef);
00117
00118 };
00119
00120
00121
00122 #endif