Alignment correction or result of alignment procedure for a single RP sensor. Within the geometry description, every sensor (more generally every element) is given its translation and rotation. These two quantities shall be understood in local-to-global coordinate transform. That is, if r_l is a point in local coordinate system and x_g in global, then it holds. More...
#include <RPAlignmentCorrectionData.h>
Public Types | |
typedef ROOT::Math::Rotation3D | RotationMatrix |
Public Member Functions | |
void | add (const RPAlignmentCorrectionData &, bool sumErrors=true, bool addShR=true, bool addShZ=true, bool addRotZ=true) |
RotationMatrix | getRotationMatrix () const |
const math::XYZVectorD & | getTranslation () const |
const math::XYZVectorD & | getTranslationError () const |
void | normalizeRotationZ () |
adds a multiple of 2pi, such that the rotation is then in range (-pi, +pi) More... | |
void | print () const |
prints the contents on the screen More... | |
void | readoutTranslationToXY (double dx, double dy) |
double | rot_z () const |
double | rot_z_e () const |
double | rotationZ () const |
double | rotationZError () const |
RPAlignmentCorrectionData (double sh_r, double sh_r_e, double sh_x, double sh_x_e, double sh_y, double sh_y_e, double sh_z, double sh_z_e, double rot_x, double rot_x_e, double rot_y, double rot_y_e, double rot_z, double rot_z_e) | |
full constructor, shifts in mm, rotations in rad More... | |
RPAlignmentCorrectionData (double sh_r, double sh_r_e, double sh_x, double sh_x_e, double sh_y, double sh_y_e, double sh_z, double sh_z_e, double rot_z, double rot_z_e) | |
constructor TB alignment, shifts in mm, rotation in rad More... | |
RPAlignmentCorrectionData (double sh_x=0., double sh_y=0., double sh_z=0., double rot_z=0.) | |
no error constructor, shifts in mm, rotation in rad More... | |
void | setRotationZ (double rot_z, double rot_z_e=0.) |
void | setTranslationR (double sh_r, double sh_r_e=0.) |
void | setTranslationZ (double sh_z, double sh_z_e=0.) |
double | sh_r () const |
double | sh_r_e () const |
double | sh_x () const |
double | sh_x_e () const |
double | sh_y () const |
double | sh_y_e () const |
double | sh_z () const |
double | sh_z_e () const |
void | xyTranslationToReadout (double dx, double dy) |
Protected Attributes | |
double | rotation_x |
double | rotation_x_error |
double | rotation_y |
double | rotation_y_error |
double | rotation_z |
double | rotation_z_error |
math::XYZVectorD | translation |
math::XYZVectorD | translation_error |
the uncertainty of shift in mm (if known) More... | |
double | translation_r |
double | translation_r_error |
the uncertainty of readout-dir. translation More... | |
Alignment correction or result of alignment procedure for a single RP sensor. Within the geometry description, every sensor (more generally every element) is given its translation and rotation. These two quantities shall be understood in local-to-global coordinate transform. That is, if r_l is a point in local coordinate system and x_g in global, then it holds.
x_g = rotation * x_l + translation
This class presents an alignment correction to the translation and rotation. It follows these formulae:
translation_final = translation_correction * translation_original rotation_final = rotation_correction * rotation_original
(see DetGeomDesc::ApplyAlignment)
Alignment corrections can be added, following this prescription:
translation_final = translation_added * translation_original rotation_final = rotation_added * rotation_original
NB: As follows from the above definitions, all translations are in the global space. This means that the rotations do not act on them.
Besides the values of rotations and translations, this class contains also uncertainties for these paramaters (the _error data memebers).
The RP silicon sensors are strip detectors and as such they measure one coordinate only. Thus the basic outcome of any track-based alignment involves shifts in read-out direction. This class contains these values in the `_r' data members.
The rotation is parameterized by 3 rotation parameters, the matrix is obtained by calling ROOT::Math::RotationZYX(r_z, r_y, r_x), which corresponds to:
| 1 0 0 | | cos r_y 0 +sin r_y | | cos r_z -sin r_z 0 | R = | 0 cos r_x -sin r_x | * | 0 1 0 | * | sin r_z cos r_z 0 | | 0 sin r_x cos r_x | |-sin r_y 0 cos r_y | | 0 0 1 |
Definition at line 59 of file RPAlignmentCorrectionData.h.
typedef ROOT::Math::Rotation3D RPAlignmentCorrectionData::RotationMatrix |
Definition at line 63 of file RPAlignmentCorrectionData.h.
RPAlignmentCorrectionData::RPAlignmentCorrectionData | ( | double | sh_r, |
double | sh_r_e, | ||
double | sh_x, | ||
double | sh_x_e, | ||
double | sh_y, | ||
double | sh_y_e, | ||
double | sh_z, | ||
double | sh_z_e, | ||
double | rot_x, | ||
double | rot_x_e, | ||
double | rot_y, | ||
double | rot_y_e, | ||
double | rot_z, | ||
double | rot_z_e | ||
) |
full constructor, shifts in mm, rotations in rad
Definition at line 18 of file RPAlignmentCorrectionData.cc.
RPAlignmentCorrectionData::RPAlignmentCorrectionData | ( | double | sh_r, |
double | sh_r_e, | ||
double | sh_x, | ||
double | sh_x_e, | ||
double | sh_y, | ||
double | sh_y_e, | ||
double | sh_z, | ||
double | sh_z_e, | ||
double | rot_z, | ||
double | rot_z_e | ||
) |
constructor TB alignment, shifts in mm, rotation in rad
Definition at line 30 of file RPAlignmentCorrectionData.cc.
RPAlignmentCorrectionData::RPAlignmentCorrectionData | ( | double | sh_x = 0. , |
double | sh_y = 0. , |
||
double | sh_z = 0. , |
||
double | rot_z = 0. |
||
) |
no error constructor, shifts in mm, rotation in rad
Definition at line 41 of file RPAlignmentCorrectionData.cc.
void RPAlignmentCorrectionData::add | ( | const RPAlignmentCorrectionData & | a, |
bool | sumErrors = true , |
||
bool | addShR = true , |
||
bool | addShZ = true , |
||
bool | addRotZ = true |
||
) |
merges (cumulates) alignements match between x, y and read-out shifts is not checked
sumErrors | if it is true, old and new alignment uncertainties are summed (in quadrature) if it is false, the uncertainties of the parameter (i.e. not the object) will be used With the add... switches one can control which corrections are added. |
TODO: proper adding of all three angles
Definition at line 51 of file RPAlignmentCorrectionData.cc.
References rotation_z, rotation_z_error, mathSSE::sqrt(), translation, translation_error, translation_r, and translation_r_error.
Referenced by RPAlignmentCorrectionsData::GetFullSensorCorrection(), counter.Counter::register(), SequenceTypes.Task::remove(), SequenceTypes.Task::replace(), and rot_z_e().
|
inline |
Definition at line 113 of file RPAlignmentCorrectionData.h.
Referenced by DetGeomDesc::ApplyAlignment().
|
inline |
Definition at line 101 of file RPAlignmentCorrectionData.h.
References translation.
Referenced by DetGeomDesc::ApplyAlignment(), and print().
|
inline |
Definition at line 104 of file RPAlignmentCorrectionData.h.
References translation_error.
void RPAlignmentCorrectionData::normalizeRotationZ | ( | ) |
adds a multiple of 2pi, such that the rotation is then in range (-pi, +pi)
Definition at line 149 of file RPAlignmentCorrectionData.cc.
References M_PI, and rotation_z.
Referenced by rot_z_e().
void RPAlignmentCorrectionData::print | ( | void | ) | const |
prints the contents on the screen
Definition at line 157 of file RPAlignmentCorrectionData.cc.
References getTranslation(), rot_z(), sh_r(), x, y, and z.
Referenced by rot_z_e().
void RPAlignmentCorrectionData::readoutTranslationToXY | ( | double | dx, |
double | dy | ||
) |
given (unit-length) readout direction vector (dx, dy), it converts 'translation_r' to x and y components of 'translation'
Definition at line 99 of file RPAlignmentCorrectionData.cc.
References translation, translation_error, translation_r, and translation_r_error.
Referenced by rot_z_e().
|
inline |
Definition at line 140 of file RPAlignmentCorrectionData.h.
References rotation_z.
Referenced by print(), rot_z_e(), setRotationZ(), and RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 143 of file RPAlignmentCorrectionData.h.
References add(), PVValHelper::dx, PVValHelper::dy, normalizeRotationZ(), print(), readoutTranslationToXY(), rot_z(), rotation_z_error, setRotationZ(), setTranslationR(), setTranslationZ(), sh_r(), sh_r_e(), sh_z(), sh_z_e(), and xyTranslationToReadout().
Referenced by setRotationZ(), and RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
|
inline |
Definition at line 110 of file RPAlignmentCorrectionData.h.
References rotation_z_error.
void RPAlignmentCorrectionData::setRotationZ | ( | double | rot_z, |
double | rot_z_e = 0. |
||
) |
Definition at line 141 of file RPAlignmentCorrectionData.cc.
References rot_z(), rot_z_e(), rotation_z, and rotation_z_error.
Referenced by rot_z_e().
void RPAlignmentCorrectionData::setTranslationR | ( | double | sh_r, |
double | sh_r_e = 0. |
||
) |
Definition at line 125 of file RPAlignmentCorrectionData.cc.
References sh_r(), sh_r_e(), translation_r, and translation_r_error.
Referenced by rot_z_e().
void RPAlignmentCorrectionData::setTranslationZ | ( | double | sh_z, |
double | sh_z_e = 0. |
||
) |
Definition at line 133 of file RPAlignmentCorrectionData.cc.
References translation, and translation_error.
Referenced by rot_z_e().
|
inline |
Definition at line 116 of file RPAlignmentCorrectionData.h.
References translation_r.
Referenced by print(), rot_z_e(), setTranslationR(), and RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 119 of file RPAlignmentCorrectionData.h.
References translation_r_error.
Referenced by rot_z_e(), setTranslationR(), and RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 122 of file RPAlignmentCorrectionData.h.
Referenced by RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 125 of file RPAlignmentCorrectionData.h.
Referenced by RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 128 of file RPAlignmentCorrectionData.h.
Referenced by RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 131 of file RPAlignmentCorrectionData.h.
Referenced by RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 134 of file RPAlignmentCorrectionData.h.
Referenced by rot_z_e(), and RPAlignmentCorrectionsMethods::WriteXML().
|
inline |
Definition at line 137 of file RPAlignmentCorrectionData.h.
Referenced by rot_z_e(), and RPAlignmentCorrectionsMethods::WriteXML().
void RPAlignmentCorrectionData::xyTranslationToReadout | ( | double | dx, |
double | dy | ||
) |
given (unit-length) readout direction vector (dx, dy), it removes the translation component perpendicular to the r-o direction, the parallel component is saved in 'translation_r'
Definition at line 110 of file RPAlignmentCorrectionData.cc.
References dot(), mathSSE::sqrt(), translation, translation_error, translation_r, and translation_r_error.
Referenced by rot_z_e().
|
protected |
the three rotation angles in rad
Definition at line 82 of file RPAlignmentCorrectionData.h.
|
protected |
the uncertainties of the three rotation angles in rad
Definition at line 86 of file RPAlignmentCorrectionData.h.
|
protected |
Definition at line 82 of file RPAlignmentCorrectionData.h.
|
protected |
Definition at line 86 of file RPAlignmentCorrectionData.h.
|
protected |
Definition at line 82 of file RPAlignmentCorrectionData.h.
Referenced by add(), normalizeRotationZ(), rot_z(), rotationZ(), and setRotationZ().
|
protected |
Definition at line 86 of file RPAlignmentCorrectionData.h.
Referenced by add(), rot_z_e(), rotationZError(), and setRotationZ().
|
protected |
shift in mm; in global XYZ frame, which is not affected by (alignment) rotations! currently implemented as ROOT::Math::DisplacementVector3D
Definition at line 68 of file RPAlignmentCorrectionData.h.
Referenced by add(), getTranslation(), readoutTranslationToXY(), setTranslationZ(), and xyTranslationToReadout().
|
protected |
the uncertainty of shift in mm (if known)
Definition at line 71 of file RPAlignmentCorrectionData.h.
Referenced by add(), getTranslationError(), readoutTranslationToXY(), setTranslationZ(), and xyTranslationToReadout().
|
protected |
translation in the readout direction, in mm; needed for track-based alignment results NOTE: no guarantee that its value would correspond to the 'translation' vector!
Definition at line 75 of file RPAlignmentCorrectionData.h.
Referenced by add(), readoutTranslationToXY(), setTranslationR(), sh_r(), and xyTranslationToReadout().
|
protected |
the uncertainty of readout-dir. translation
Definition at line 78 of file RPAlignmentCorrectionData.h.
Referenced by add(), readoutTranslationToXY(), setTranslationR(), sh_r_e(), and xyTranslationToReadout().