#include "AliAlignObj.h"
#include "AliAlignObjParams.h"
ClassImp(AliAlignObjParams)
AliAlignObjParams::AliAlignObjParams() : AliAlignObj()
{
fTranslation[0]=fTranslation[1]=fTranslation[2]=0.;
fRotation[0]=fRotation[1]=fRotation[2]=0.;
}
AliAlignObjParams::AliAlignObjParams(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)
{
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";
}
}
AliAlignObjParams::AliAlignObjParams(const char* symname, UShort_t volUId, TGeoMatrix& m, Bool_t global) throw (const Char_t *) : AliAlignObj(symname,volUId)
{
if (!SetMatrix(m)) throw "Alignment object creation failed (can't extract roll-pitch-yall angles from the matrix)!\n";
if (!global) {
if (!SetLocalPars(fTranslation[0],fTranslation[1],fTranslation[2],fRotation[0],fRotation[1],fRotation[2])) throw "Alignment object creation failed (TGeo instance needed)!\n";
}
}
AliAlignObjParams::AliAlignObjParams(const AliAlignObj& theAlignObj) :
AliAlignObj(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]);
else
fRotation[0]=fRotation[1]=fRotation[2]=0.;
}
AliAlignObjParams &AliAlignObjParams::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;
}
AliAlignObjParams::~AliAlignObjParams()
{
}
void AliAlignObjParams::SetTranslation(const TGeoMatrix& m)
{
if(m.IsTranslation()){
const Double_t* tr = m.GetTranslation();
fTranslation[0]=tr[0]; fTranslation[1]=tr[1]; fTranslation[2]=tr[2];
}else{
fTranslation[0] = fTranslation[1] = fTranslation[2] = 0.;
}
}
Bool_t AliAlignObjParams::SetRotation(const TGeoMatrix& m)
{
if(m.IsRotation()){
const Double_t* rot = m.GetRotationMatrix();
return MatrixToAngles(rot,fRotation);
}else{
fRotation[0] = fRotation[1] = fRotation[2] = 0.;
return kTRUE;
}
}
void AliAlignObjParams::GetMatrix(TGeoHMatrix& m) const
{
m.SetTranslation(&fTranslation[0]);
Double_t rot[9];
AnglesToMatrix(fRotation,rot);
m.SetRotation(rot);
}
AliAlignObj& AliAlignObjParams::Inverse() const
{
static AliAlignObjParams a;
a = *this;
TGeoHMatrix m;
GetMatrix(m);
a.SetMatrix(m.Inverse());
return a;
}
AliAlignObjParams.cxx:100 AliAlignObjParams.cxx:101 AliAlignObjParams.cxx:102 AliAlignObjParams.cxx:103 AliAlignObjParams.cxx:104 AliAlignObjParams.cxx:105 AliAlignObjParams.cxx:106 AliAlignObjParams.cxx:107 AliAlignObjParams.cxx:108 AliAlignObjParams.cxx:109 AliAlignObjParams.cxx:110 AliAlignObjParams.cxx:111 AliAlignObjParams.cxx:112 AliAlignObjParams.cxx:113 AliAlignObjParams.cxx:114 AliAlignObjParams.cxx:115 AliAlignObjParams.cxx:116 AliAlignObjParams.cxx:117 AliAlignObjParams.cxx:118 AliAlignObjParams.cxx:119 AliAlignObjParams.cxx:120 AliAlignObjParams.cxx:121 AliAlignObjParams.cxx:122 AliAlignObjParams.cxx:123 AliAlignObjParams.cxx:124 AliAlignObjParams.cxx:125 AliAlignObjParams.cxx:126 AliAlignObjParams.cxx:127 AliAlignObjParams.cxx:128 AliAlignObjParams.cxx:129 AliAlignObjParams.cxx:130 AliAlignObjParams.cxx:131 AliAlignObjParams.cxx:132 AliAlignObjParams.cxx:133 AliAlignObjParams.cxx:134 AliAlignObjParams.cxx:135 AliAlignObjParams.cxx:136 AliAlignObjParams.cxx:137 AliAlignObjParams.cxx:138 AliAlignObjParams.cxx:139 AliAlignObjParams.cxx:140 AliAlignObjParams.cxx:141 AliAlignObjParams.cxx:142 AliAlignObjParams.cxx:143 AliAlignObjParams.cxx:144 AliAlignObjParams.cxx:145 AliAlignObjParams.cxx:146 AliAlignObjParams.cxx:147 AliAlignObjParams.cxx:148 AliAlignObjParams.cxx:149 AliAlignObjParams.cxx:150 AliAlignObjParams.cxx:151 AliAlignObjParams.cxx:152 AliAlignObjParams.cxx:153 AliAlignObjParams.cxx:154 AliAlignObjParams.cxx:155 AliAlignObjParams.cxx:156 AliAlignObjParams.cxx:157 AliAlignObjParams.cxx:158 AliAlignObjParams.cxx:159 AliAlignObjParams.cxx:160 AliAlignObjParams.cxx:161 AliAlignObjParams.cxx:162 AliAlignObjParams.cxx:163