9 #include <top/dbobjects/TOPCalModuleAlignment.h>
10 #include <framework/logging/Logger.h>
20 void TOPCalModuleAlignment::setAlpha(
int moduleID,
double alpha,
double errAlpha)
22 unsigned module = moduleID - 1;
23 if (module >= c_numModules) {
24 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
27 m_alpha[module] = alpha;
28 m_errAlpha[module] = errAlpha;
31 void TOPCalModuleAlignment::setBeta(
int moduleID,
double beta,
double errBeta)
33 unsigned module = moduleID - 1;
34 if (module >= c_numModules) {
35 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
38 m_beta[module] = beta;
39 m_errBeta[module] = errBeta;
42 void TOPCalModuleAlignment::setGamma(
int moduleID,
double gamma,
double errGamma)
44 unsigned module = moduleID - 1;
45 if (module >= c_numModules) {
46 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
49 m_gamma[module] = gamma;
50 m_errGamma[module] = errGamma;
53 void TOPCalModuleAlignment::setX(
int moduleID,
double x,
double errX)
55 unsigned module = moduleID - 1;
56 if (module >= c_numModules) {
57 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
61 m_errX[module] = errX;
64 void TOPCalModuleAlignment::setY(
int moduleID,
double y,
double errY)
66 unsigned module = moduleID - 1;
67 if (module >= c_numModules) {
68 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
72 m_errY[module] = errY;
75 void TOPCalModuleAlignment::setZ(
int moduleID,
double z,
double errZ)
77 unsigned module = moduleID - 1;
78 if (module >= c_numModules) {
79 B2ERROR(
"Invalid module number, constant not set (" << ClassName() <<
")");
83 m_errZ[module] = errZ;
86 void TOPCalModuleAlignment::setCalibrated(
int moduleID)
88 unsigned module = moduleID - 1;
89 if (module >= c_numModules) {
90 B2ERROR(
"Invalid module number, status not set (" << ClassName() <<
")");
93 m_status[module] = c_Calibrated;
96 void TOPCalModuleAlignment::setUnusable(
int moduleID)
98 unsigned module = moduleID - 1;
99 if (module >= c_numModules) {
100 B2ERROR(
"Invalid module number, status not set (" << ClassName() <<
")");
103 m_status[module] = c_Unusable;
106 double TOPCalModuleAlignment::getAlpha(
int moduleID)
const
108 unsigned module = moduleID - 1;
109 if (module >= c_numModules) {
110 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
113 return m_alpha[module];
116 double TOPCalModuleAlignment::getBeta(
int moduleID)
const
118 unsigned module = moduleID - 1;
119 if (module >= c_numModules) {
120 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
123 return m_beta[module];
126 double TOPCalModuleAlignment::getGamma(
int moduleID)
const
128 unsigned module = moduleID - 1;
129 if (module >= c_numModules) {
130 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
133 return m_gamma[module];
136 double TOPCalModuleAlignment::getX(
int moduleID)
const
138 unsigned module = moduleID - 1;
139 if (module >= c_numModules) {
140 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
146 double TOPCalModuleAlignment::getY(
int moduleID)
const
148 unsigned module = moduleID - 1;
149 if (module >= c_numModules) {
150 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
156 double TOPCalModuleAlignment::getZ(
int moduleID)
const
158 unsigned module = moduleID - 1;
159 if (module >= c_numModules) {
160 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
166 double TOPCalModuleAlignment::getAlphaErr(
int moduleID)
const
168 unsigned module = moduleID - 1;
169 if (module >= c_numModules) {
170 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
173 return m_errAlpha[module];
176 double TOPCalModuleAlignment::getBetaErr(
int moduleID)
const
178 unsigned module = moduleID - 1;
179 if (module >= c_numModules) {
180 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
183 return m_errBeta[module];
186 double TOPCalModuleAlignment::getGammaErr(
int moduleID)
const
188 unsigned module = moduleID - 1;
189 if (module >= c_numModules) {
190 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
193 return m_errGamma[module];
196 double TOPCalModuleAlignment::getXErr(
int moduleID)
const
198 unsigned module = moduleID - 1;
199 if (module >= c_numModules) {
200 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
203 return m_errX[module];
206 double TOPCalModuleAlignment::getYErr(
int moduleID)
const
208 unsigned module = moduleID - 1;
209 if (module >= c_numModules) {
210 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
213 return m_errY[module];
216 double TOPCalModuleAlignment::getZErr(
int moduleID)
const
218 unsigned module = moduleID - 1;
219 if (module >= c_numModules) {
220 B2WARNING(
"Invalid module number, returning 0 (" << ClassName() <<
")");
223 return m_errZ[module];
226 bool TOPCalModuleAlignment::isCalibrated(
int moduleID)
const
228 unsigned module = moduleID - 1;
229 if (module >= c_numModules)
return false ;
230 return m_status[module] == c_Calibrated;
233 bool TOPCalModuleAlignment::isDefault(
int moduleID)
const
235 unsigned module = moduleID - 1;
236 if (module >= c_numModules)
return false ;
237 return m_status[module] == c_Default;
240 bool TOPCalModuleAlignment::isUnusable(
int moduleID)
const
242 unsigned module = moduleID - 1;
243 if (module >= c_numModules)
return false ;
244 return m_status[module] == c_Unusable;
247 bool TOPCalModuleAlignment::areAllCalibrated()
const
249 for (
int i = 0; i < c_numModules; i++) {
250 if (m_status[i] != c_Calibrated)
return false;
255 bool TOPCalModuleAlignment::areAllPrecise(
double spatialPrecision,
256 double angularPrecision)
const
258 for (
int i = 0; i < c_numModules; i++) {
259 if (m_errAlpha[i] > angularPrecision)
return false;
260 if (m_errBeta[i] > angularPrecision)
return false;
261 if (m_errGamma[i] > angularPrecision)
return false;
262 if (m_errX[i] > spatialPrecision)
return false;
263 if (m_errY[i] > spatialPrecision)
return false;
264 if (m_errZ[i] > spatialPrecision)
return false;
269 void TOPCalModuleAlignment::setTransformations()
const
271 for (
int i = 0; i < c_numModules; i++) {
274 if (m_status[i] == c_Calibrated) {
275 rot.RotateX(m_alpha[i]).RotateY(m_beta[i]).RotateZ(m_gamma[i]);
276 vec.SetXYZ(m_x[i], m_y[i], m_z[i]);
278 m_rotations.push_back(rot);
279 m_translations.push_back(vec);
281 m_rotations.push_back(TRotation());
282 m_translations.push_back(TVector3());
285 const TRotation& TOPCalModuleAlignment::getRotation(
int moduleID)
const
287 if (m_rotations.empty()) setTransformations();
288 unsigned module = moduleID - 1;
289 if (module >= c_numModules) {
290 B2ERROR(
"Invalid module number, returning identity rotation (" << ClassName() <<
")");
291 return m_rotations[c_numModules];
293 return m_rotations[module];
296 const TVector3& TOPCalModuleAlignment::getTranslation(
int moduleID)
const
298 if (m_translations.empty()) setTransformations();
299 unsigned module = moduleID - 1;
300 if (module >= c_numModules) {
301 B2ERROR(
"Invalid module number, returning null vector (" << ClassName() <<
")");
302 return m_translations[c_numModules];
304 return m_translations[module];
Abstract base class for different kinds of events.