00001 #ifndef CalibData_Muc_MucCalibData_h
00002 #define CalibData_Muc_MucCalibData_h
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "CalibData/Muc/MucCalibConst.h"
00012 #include "CalibData/CalibModel.h"
00013 #include "CalibData/CalibBase1.h"
00014 #include <vector>
00015 #include <cmath>
00016
00017 using namespace std;
00018
00019 namespace CalibData {
00020 class MucCalibData: public CalibBase1{
00021
00022 public:
00023 MucCalibData();
00024 virtual ~MucCalibData(){}
00025
00026
00027 inline virtual const CLID& clID() const { return classID(); }
00028
00029 inline static const CLID& classID() { return CLID_Calib_MucCal; }
00030
00031 virtual StatusCode update(CalibBase1& other, MsgStream* log);
00032
00033
00034
00035
00036 inline double getUniformEff() const { return m_uniformEff;}
00037 inline double getUniformNos() const { return m_uniformNos;}
00038 inline double getUniformClst() const { return m_uniformClst;}
00039 inline double getUniformCnt() const {return m_uniformCnt;}
00040 inline double getUniformNosRatio() const{return m_uniformNosRatio;}
00041
00042 inline double getLayerEff( int layer ) const { return m_layerEff[layer];}
00043 inline double getLayerNos( int layer ) const {return m_layerNos[layer];}
00044 inline double getLayerNosRatio( int layer ) const{return m_layerNosRatio[layer];}
00045 inline double getLayerCnt( int layer ) const{return m_layerCnt[layer];}
00046 inline double getLayerClstPro( int layer, int size ) const{ return m_layerClstPro[layer][size]; }
00047 inline double getLayerClst( int layer, double prob ) const{
00048 double diff = 2.0;
00049 int size = 0;
00050 for(int i=0; i<CLST_MAX; i++)
00051 {
00052 if( fabs(prob - m_layerClstPro[layer][i] ) < diff ) {
00053 diff = fabs(prob - m_layerClstPro[layer][i]);
00054 size = i+1;
00055 }
00056 }
00057 return size;
00058 }
00059
00060 inline double getBoxEff( int part, int segment, int layer ) const{ return m_boxEff[part][segment][layer];}
00061 inline double getBoxNos( int part, int segment, int layer ) const{ return m_boxNos[part][segment][layer];}
00062 inline double getBoxCnt( int part, int segment, int layer ) const{ return m_boxCnt[part][segment][layer];}
00063 inline double getBoxNosRatio( int part, int segment, int layer ) const{return m_boxNosRatio[part][segment][layer];}
00064 inline double getBoxClstPro( int part, int segment, int layer, int size ) const{ return m_boxClstPro[part][segment][layer][size]; }
00065 inline double getBoxClst( int part, int segment, int layer, double prob ) const{
00066 double diff = 2.0;
00067 int size = 0;
00068 for(int i=0; i<CLST_MAX; i++)
00069 {
00070 if( fabs(prob - m_boxClstPro[part][segment][layer][i]) < diff ) {
00071 diff = fabs(prob - m_boxClstPro[part][segment][layer][i]);
00072 size = i+1;
00073 }
00074 }
00075 return size;
00076 }
00077
00078 inline double getStripEff( int part, int segment, int layer, int strip ) const{ return m_stripEff[part][segment][layer][strip];}
00079 inline double getStripNos( int part, int segment, int layer, int strip ) const{ return m_stripNos[part][segment][layer][strip];}
00080 inline double getStripCnt( int part, int segment, int layer, int strip ) const{ return m_stripCnt[part][segment][layer][strip];}
00081 inline double getStripNosRatio( int part, int segment, int layer, int strip ) const{ return m_stripNosRatio[part][segment][layer][strip];}
00082
00083
00084 void setUniformEff( double eff ) {m_uniformEff=eff;}
00085 void setUniformNos( double nos ) {m_uniformNos=nos;}
00086 void setUniformClst( double clst ) {m_uniformClst=clst;}
00087 void setUniformCnt( double cnt ){m_uniformCnt=cnt;}
00088 void setUniformNosRatio(double nosratio){m_uniformNosRatio=nosratio;}
00089
00090
00091 void setLayerEff(const double layereff,int i){ m_layerEff[i]=layereff;}
00092 void setLayerNos(const double layernos,int i){ m_layerNos[i]=layernos;}
00093 void setLayerCnt(const double layercnt,int i){ m_layerCnt[i]=layercnt;}
00094 void setLayerNosRatio(const double layernosratio,int i){ m_layerNosRatio[i]=layernosratio;}
00095 void setLayerClstPro(const double layerpro,int i,int j){m_layerClstPro[i][j]= layerpro;}
00096
00097 void setBoxEff(const double boxeff,int i,int j, int k){m_boxEff[i][j][k] = boxeff;}
00098 void setBoxNos(const double boxnos,int i,int j, int k){m_boxNos[i][j][k] = boxnos;}
00099 void setBoxCnt(const double boxcnt,int i,int j, int k){m_boxCnt[i][j][k] = boxcnt;}
00100 void setBoxNosRatio(const double boxratio,int i,int j, int k){m_boxNosRatio[i][j][k]=boxratio;}
00101 void setBoxClstPro(const double boxpro,int i,int j,int k,int l){m_boxClstPro[i][j][k][l]=boxpro;}
00102
00103 void setStripEff(const double stripeff,int i,int j,int k,int l){m_stripEff[i][j][k][l]=stripeff;}
00104 void setStripNos(const double stripnos,int i,int j,int k,int l){m_stripNos[i][j][k][l]=stripnos;}
00105 void setStripCnt(const double stripcnt,int i,int j,int k,int l){m_stripCnt[i][j][k][l]=stripcnt;}
00106 void setStripNosRatio(const double stripnosratio,int i,int j,int k,int l){m_stripNosRatio[i][j][k][l]=stripnosratio;}
00107
00108 private:
00109
00110
00111 double m_uniformEff;
00112 double m_uniformNos;
00113 double m_uniformClst;
00114 double m_uniformCnt;
00115 double m_uniformNosRatio;
00116
00117
00118 double m_layerEff[LAYER_MAX];
00119 double m_layerNos[LAYER_MAX];
00120 double m_layerClstPro[LAYER_MAX][CLST_MAX];
00121 double m_layerCnt[LAYER_MAX];
00122 double m_layerNosRatio[LAYER_MAX];
00123
00124 double m_boxEff[PART_MAX][SEGMENT_MAX][LAYER_MAX];
00125 double m_boxNos[PART_MAX][SEGMENT_MAX][LAYER_MAX];
00126 double m_boxClstPro[PART_MAX][SEGMENT_MAX][LAYER_MAX][CLST_MAX];
00127 double m_boxCnt[PART_MAX][SEGMENT_MAX][LAYER_MAX];
00128 double m_boxNosRatio[PART_MAX][SEGMENT_MAX][LAYER_MAX];
00129
00130 double m_stripEff[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
00131 double m_stripNos[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
00132 double m_stripCnt[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
00133 double m_stripNosRatio[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
00134 };
00135 }
00136
00137
00138 #endif //CalibData_MucCalibData_h