BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Calibration/CalibData/include/CalibData/Muc/MucCalibData.h
Go to the documentation of this file.
1#ifndef CalibData_Muc_MucCalibData_h
2#define CalibData_Muc_MucCalibData_h
3
4/* @class CalibData_MucCalibData_h
5
6 calibration data class
7 calibration infrastructure
8
9 @author ChunXiu Liu
10*/
11#include "CalibData/CalibBase1.h"
12#include "CalibData/CalibModel.h"
13#include "CalibData/Muc/MucCalibConst.h"
14#include <cmath>
15#include <vector>
16
17using namespace std;
18
19namespace CalibData {
20 class MucCalibData : public CalibBase1 {
21
22 public:
24 virtual ~MucCalibData() {}
25
26 // Re-implemented from DataObject
27 inline virtual const CLID& clID() const { return classID(); }
28
29 inline static const CLID& classID() { return CLID_Calib_MucCal; }
30
31 virtual StatusCode update( CalibBase1& other, MsgStream* log );
32
33 // int setDefault(); // set default uniform constants value
34
35 //--------- Access by users -------------
36 inline double getUniformEff() const { return m_uniformEff; }
37 inline double getUniformNos() const { return m_uniformNos; }
38 inline double getUniformClst() const {
39 return m_uniformClst;
40 } // probability = 1(biggest strip window for tracking)
41 inline double getUniformCnt() const { return m_uniformCnt; }
42 inline double getUniformNosRatio() const { return m_uniformNosRatio; }
43
44 inline double getLayerEff( int layer ) const { return m_layerEff[layer]; }
45 inline double getLayerNos( int layer ) const { return m_layerNos[layer]; }
46 inline double getLayerNosRatio( int layer ) const { return m_layerNosRatio[layer]; }
47 inline double getLayerCnt( int layer ) const { return m_layerCnt[layer]; }
48 inline double getLayerClstPro( int layer, int size ) const {
49 return m_layerClstPro[layer][size];
50 }
51 inline double getLayerClst( int layer, double prob ) const {
52 double diff = 2.0;
53 int size = 0;
54 for ( int i = 0; i < CLST_MAX; i++ )
55 {
56 if ( fabs( prob - m_layerClstPro[layer][i] ) < diff )
57 {
58 diff = fabs( prob - m_layerClstPro[layer][i] );
59 size = i + 1;
60 }
61 }
62 return size;
63 }
64
65 inline double getBoxEff( int part, int segment, int layer ) const {
66 return m_boxEff[part][segment][layer];
67 }
68 inline double getBoxNos( int part, int segment, int layer ) const {
69 return m_boxNos[part][segment][layer];
70 }
71 inline double getBoxCnt( int part, int segment, int layer ) const {
72 return m_boxCnt[part][segment][layer];
73 }
74 inline double getBoxNosRatio( int part, int segment, int layer ) const {
75 return m_boxNosRatio[part][segment][layer];
76 }
77 inline double getBoxClstPro( int part, int segment, int layer, int size ) const {
78 return m_boxClstPro[part][segment][layer][size];
79 }
80 inline double getBoxClst( int part, int segment, int layer, double prob ) const {
81 double diff = 2.0;
82 int size = 0;
83 for ( int i = 0; i < CLST_MAX; i++ )
84 {
85 if ( fabs( prob - m_boxClstPro[part][segment][layer][i] ) < diff )
86 {
87 diff = fabs( prob - m_boxClstPro[part][segment][layer][i] );
88 size = i + 1;
89 }
90 }
91 return size;
92 }
93
94 inline double getStripEff( int part, int segment, int layer, int strip ) const {
95 return m_stripEff[part][segment][layer][strip];
96 }
97 inline double getStripNos( int part, int segment, int layer, int strip ) const {
98 return m_stripNos[part][segment][layer][strip];
99 }
100 inline double getStripCnt( int part, int segment, int layer, int strip ) const {
101 return m_stripCnt[part][segment][layer][strip];
102 }
103 inline double getStripNosRatio( int part, int segment, int layer, int strip ) const {
104 return m_stripNosRatio[part][segment][layer][strip];
105 }
106
107 // set uniform constants for all detector units manually
108 void setUniformEff( double eff ) { m_uniformEff = eff; }
109 void setUniformNos( double nos ) { m_uniformNos = nos; }
110 void setUniformClst( double clst ) { m_uniformClst = clst; }
111 void setUniformCnt( double cnt ) { m_uniformCnt = cnt; }
112 void setUniformNosRatio( double nosratio ) { m_uniformNosRatio = nosratio; }
113
114 // set value
115 void setLayerEff( const double layereff, int i ) { m_layerEff[i] = layereff; }
116 void setLayerNos( const double layernos, int i ) { m_layerNos[i] = layernos; }
117 void setLayerCnt( const double layercnt, int i ) { m_layerCnt[i] = layercnt; }
118 void setLayerNosRatio( const double layernosratio, int i ) {
119 m_layerNosRatio[i] = layernosratio;
120 }
121 void setLayerClstPro( const double layerpro, int i, int j ) {
122 m_layerClstPro[i][j] = layerpro;
123 }
124
125 void setBoxEff( const double boxeff, int i, int j, int k ) { m_boxEff[i][j][k] = boxeff; }
126 void setBoxNos( const double boxnos, int i, int j, int k ) { m_boxNos[i][j][k] = boxnos; }
127 void setBoxCnt( const double boxcnt, int i, int j, int k ) { m_boxCnt[i][j][k] = boxcnt; }
128 void setBoxNosRatio( const double boxratio, int i, int j, int k ) {
129 m_boxNosRatio[i][j][k] = boxratio;
130 }
131 void setBoxClstPro( const double boxpro, int i, int j, int k, int l ) {
132 m_boxClstPro[i][j][k][l] = boxpro;
133 }
134
135 void setStripEff( const double stripeff, int i, int j, int k, int l ) {
136 m_stripEff[i][j][k][l] = stripeff;
137 }
138 void setStripNos( const double stripnos, int i, int j, int k, int l ) {
139 m_stripNos[i][j][k][l] = stripnos;
140 }
141 void setStripCnt( const double stripcnt, int i, int j, int k, int l ) {
142 m_stripCnt[i][j][k][l] = stripcnt;
143 }
144 void setStripNosRatio( const double stripnosratio, int i, int j, int k, int l ) {
145 m_stripNosRatio[i][j][k][l] = stripnosratio;
146 }
147
148 private:
149 // MucIdTransform* m_ptrIdTr;
150
151 double m_uniformEff;
152 double m_uniformNos;
153 double m_uniformClst;
154 double m_uniformCnt;
155 double m_uniformNosRatio;
156 // double m_average[3][3];
157
158 double m_layerEff[LAYER_MAX];
159 double m_layerNos[LAYER_MAX];
160 double m_layerClstPro[LAYER_MAX][CLST_MAX];
161 double m_layerCnt[LAYER_MAX];
162 double m_layerNosRatio[LAYER_MAX];
163
164 double m_boxEff[PART_MAX][SEGMENT_MAX][LAYER_MAX];
165 double m_boxNos[PART_MAX][SEGMENT_MAX][LAYER_MAX];
166 double m_boxClstPro[PART_MAX][SEGMENT_MAX][LAYER_MAX][CLST_MAX];
167 double m_boxCnt[PART_MAX][SEGMENT_MAX][LAYER_MAX];
168 double m_boxNosRatio[PART_MAX][SEGMENT_MAX][LAYER_MAX];
169
170 double m_stripEff[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
171 double m_stripNos[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
172 double m_stripCnt[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
173 double m_stripNosRatio[PART_MAX][SEGMENT_MAX][LAYER_MAX][STRIP_INBOX_MAX];
174 };
175} // namespace CalibData
176
177#endif // CalibData_MucCalibData_h
void setLayerClstPro(const double layerpro, int i, int j)
double getBoxClst(int part, int segment, int layer, double prob) const
double getBoxNos(int part, int segment, int layer) const
double getBoxClstPro(int part, int segment, int layer, int size) const
double getStripNos(int part, int segment, int layer, int strip) const
double getStripCnt(int part, int segment, int layer, int strip) const
double getBoxNosRatio(int part, int segment, int layer) const
double getStripNosRatio(int part, int segment, int layer, int strip) const
void setBoxCnt(const double boxcnt, int i, int j, int k)
void setStripNos(const double stripnos, int i, int j, int k, int l)
double getBoxCnt(int part, int segment, int layer) const
void setBoxNosRatio(const double boxratio, int i, int j, int k)
void setStripEff(const double stripeff, int i, int j, int k, int l)
void setStripNosRatio(const double stripnosratio, int i, int j, int k, int l)
virtual StatusCode update(CalibBase1 &other, MsgStream *log)
void setStripCnt(const double stripcnt, int i, int j, int k, int l)
double getBoxEff(int part, int segment, int layer) const
void setBoxEff(const double boxeff, int i, int j, int k)
double getStripEff(int part, int segment, int layer, int strip) const
void setBoxNos(const double boxnos, int i, int j, int k)
void setBoxClstPro(const double boxpro, int i, int j, int k, int l)