#include "AliAlignObj.h"
#include "AliAlignObjMatrix.h"
ClassImp(AliAlignObjMatrix)
AliAlignObjMatrix::AliAlignObjMatrix() :
AliAlignObj(),
fMatrix()
{
}
AliAlignObjMatrix::AliAlignObjMatrix(const char* symname, UShort_t volUId, Double_t x, Double_t y, Double_t z, Double_t psi, Double_t theta, Double_t phi, Bool_t global) throw (const Char_t *) :
AliAlignObj(symname,volUId),
fMatrix()
{
if(global){
SetPars(x, y, z, psi, theta, phi);
}else{
if(!SetLocalPars(x,y,z,psi,theta,phi)) throw "Alignment object creation failed (TGeo instance needed)!\n";
}
}
AliAlignObjMatrix::AliAlignObjMatrix(const char* symname, UShort_t volUId, TGeoMatrix& m, Bool_t global) throw (const Char_t *) :
AliAlignObj(symname,volUId),
fMatrix()
{
if (global) {
SetMatrix(m);
}
else {
if (!SetLocalMatrix(m)) throw "Alignment object creation failed (TGeo instance needed)!\n";
}
}
AliAlignObjMatrix::AliAlignObjMatrix(const AliAlignObj& theAlignObj) :
AliAlignObj(theAlignObj),
fMatrix()
{
Double_t tr[3];
theAlignObj.GetTranslation(tr);
SetTranslation(tr[0],tr[1],tr[2]);
Double_t rot[3];
if (theAlignObj.GetAngles(rot))
SetRotation(rot[0],rot[1],rot[2]);
}
AliAlignObjMatrix &AliAlignObjMatrix::operator =(const AliAlignObj& theAlignObj)
{
if(this==&theAlignObj) return *this;
((AliAlignObj *)this)->operator=(theAlignObj);
Double_t tr[3];
theAlignObj.GetTranslation(tr);
SetTranslation(tr[0],tr[1],tr[2]);
Double_t rot[3];
if (theAlignObj.GetAngles(rot))
SetRotation(rot[0],rot[1],rot[2]);
return *this;
}
AliAlignObjMatrix::~AliAlignObjMatrix()
{
}
void AliAlignObjMatrix::SetTranslation(Double_t x, Double_t y, Double_t z)
{
Double_t tr[3];
tr[0]=x; tr[1]=y; tr[2]=z;
fMatrix.SetTranslation(tr);
}
void AliAlignObjMatrix::SetTranslation(const TGeoMatrix& m)
{
const Double_t *tr = m.GetTranslation();
fMatrix.SetTranslation(tr);
}
void AliAlignObjMatrix::SetRotation(Double_t psi, Double_t theta, Double_t phi)
{
Double_t angles[3] = {psi, theta, phi};
Double_t rot[9];
AnglesToMatrix(angles,rot);
fMatrix.SetRotation(rot);
}
Bool_t AliAlignObjMatrix::SetRotation(const TGeoMatrix& m)
{
const Double_t* rot = m.GetRotationMatrix();
fMatrix.SetRotation(rot);
return kTRUE;
}
void AliAlignObjMatrix::GetTranslation(Double_t *tr) const
{
const Double_t* translation = fMatrix.GetTranslation();
tr[0] = translation[0];
tr[1] = translation[1];
tr[2] = translation[2];
}
Bool_t AliAlignObjMatrix::GetAngles(Double_t *angles) const
{
const Double_t* rot = fMatrix.GetRotationMatrix();
return MatrixToAngles(rot,angles);
}
void AliAlignObjMatrix::GetMatrix(TGeoHMatrix& m) const
{
const Double_t *tr = fMatrix.GetTranslation();
m.SetTranslation(tr);
const Double_t *rot = fMatrix.GetRotationMatrix();
m.SetRotation(rot);
}
AliAlignObj& AliAlignObjMatrix::Inverse() const
{
static AliAlignObjMatrix a;
a = *this;
TGeoHMatrix m;
GetMatrix(m);
a.SetMatrix(m.Inverse());
return a;
}
AliAlignObjMatrix.cxx:100 AliAlignObjMatrix.cxx:101 AliAlignObjMatrix.cxx:102 AliAlignObjMatrix.cxx:103 AliAlignObjMatrix.cxx:104 AliAlignObjMatrix.cxx:105 AliAlignObjMatrix.cxx:106 AliAlignObjMatrix.cxx:107 AliAlignObjMatrix.cxx:108 AliAlignObjMatrix.cxx:109 AliAlignObjMatrix.cxx:110 AliAlignObjMatrix.cxx:111 AliAlignObjMatrix.cxx:112 AliAlignObjMatrix.cxx:113 AliAlignObjMatrix.cxx:114 AliAlignObjMatrix.cxx:115 AliAlignObjMatrix.cxx:116 AliAlignObjMatrix.cxx:117 AliAlignObjMatrix.cxx:118 AliAlignObjMatrix.cxx:119 AliAlignObjMatrix.cxx:120 AliAlignObjMatrix.cxx:121 AliAlignObjMatrix.cxx:122 AliAlignObjMatrix.cxx:123 AliAlignObjMatrix.cxx:124 AliAlignObjMatrix.cxx:125 AliAlignObjMatrix.cxx:126 AliAlignObjMatrix.cxx:127 AliAlignObjMatrix.cxx:128 AliAlignObjMatrix.cxx:129 AliAlignObjMatrix.cxx:130 AliAlignObjMatrix.cxx:131 AliAlignObjMatrix.cxx:132 AliAlignObjMatrix.cxx:133 AliAlignObjMatrix.cxx:134 AliAlignObjMatrix.cxx:135 AliAlignObjMatrix.cxx:136 AliAlignObjMatrix.cxx:137 AliAlignObjMatrix.cxx:138 AliAlignObjMatrix.cxx:139 AliAlignObjMatrix.cxx:140 AliAlignObjMatrix.cxx:141 AliAlignObjMatrix.cxx:142 AliAlignObjMatrix.cxx:143 AliAlignObjMatrix.cxx:144 AliAlignObjMatrix.cxx:145 AliAlignObjMatrix.cxx:146 AliAlignObjMatrix.cxx:147 AliAlignObjMatrix.cxx:148 AliAlignObjMatrix.cxx:149 AliAlignObjMatrix.cxx:150 AliAlignObjMatrix.cxx:151 AliAlignObjMatrix.cxx:152 AliAlignObjMatrix.cxx:153 AliAlignObjMatrix.cxx:154 AliAlignObjMatrix.cxx:155 AliAlignObjMatrix.cxx:156 AliAlignObjMatrix.cxx:157 AliAlignObjMatrix.cxx:158 AliAlignObjMatrix.cxx:159 AliAlignObjMatrix.cxx:160 AliAlignObjMatrix.cxx:161 AliAlignObjMatrix.cxx:162 AliAlignObjMatrix.cxx:163 AliAlignObjMatrix.cxx:164 AliAlignObjMatrix.cxx:165 AliAlignObjMatrix.cxx:166 AliAlignObjMatrix.cxx:167 AliAlignObjMatrix.cxx:168 AliAlignObjMatrix.cxx:169 AliAlignObjMatrix.cxx:170 AliAlignObjMatrix.cxx:171 AliAlignObjMatrix.cxx:172 AliAlignObjMatrix.cxx:173 AliAlignObjMatrix.cxx:174 AliAlignObjMatrix.cxx:175 AliAlignObjMatrix.cxx:176 AliAlignObjMatrix.cxx:177 AliAlignObjMatrix.cxx:178 AliAlignObjMatrix.cxx:179 AliAlignObjMatrix.cxx:180 AliAlignObjMatrix.cxx:181 AliAlignObjMatrix.cxx:182 AliAlignObjMatrix.cxx:183 AliAlignObjMatrix.cxx:184 AliAlignObjMatrix.cxx:185 AliAlignObjMatrix.cxx:186 AliAlignObjMatrix.cxx:187 AliAlignObjMatrix.cxx:188 AliAlignObjMatrix.cxx:189 AliAlignObjMatrix.cxx:190 AliAlignObjMatrix.cxx:191 AliAlignObjMatrix.cxx:192 AliAlignObjMatrix.cxx:193 AliAlignObjMatrix.cxx:194 AliAlignObjMatrix.cxx:195 AliAlignObjMatrix.cxx:196 AliAlignObjMatrix.cxx:197 AliAlignObjMatrix.cxx:198 AliAlignObjMatrix.cxx:199 AliAlignObjMatrix.cxx:200