After FindNextBoundary, TGeo should be put in the initial state known by FLUKA
[u/mrichter/AliRoot.git] / STEER / AliAlignObjAngles.h
CommitLineData
befe2c08 1#ifndef ALIALIGNOBJANGLES_H
2#define ALIALIGNOBJANGLES_H
3
4/*****************************************************************************
5 * AliAlignObjAngles: derived alignment class storing alignment information *
6 * for a single volume in form of three doubles for the translation *
7 * and three doubles for the rotation expressed with the euler angles *
8 * in the xyz-convention (http://mathworld.wolfram.com/EulerAngles.html), *
9 * also known as roll, pitch, yaw. PLEASE NOTE THE ANGLES SIGNS ARE *
10 * INVERSE WITH RESPECT TO THIS REFERENCE!!! In this way the representation*
11 * is fully consistent with the TGeo Rotation methods. *
12 *****************************************************************************/
13#include "TObject.h"
14#include "TString.h"
15#include "TGeoMatrix.h"
16
17class AliAlignObjAngles : public AliAlignObj{
18 public:
19 AliAlignObjAngles();
20 AliAlignObjAngles(const char* volpath, UShort_t voluid, Double_t x, Double_t y, Double_t z, Double_t psi, Double_t theta, Double_t phi);
21 AliAlignObjAngles(const char* volpath, ELayerID detId, Int_t volId, Double_t x, Double_t y, Double_t z, Double_t psi, Double_t theta, Double_t phi);
22 AliAlignObjAngles(const char* volpath, UShort_t voluid, TGeoMatrix& m);
23 AliAlignObjAngles(const AliAlignObjAngles& theAlignObj);
24 AliAlignObjAngles& operator= (const AliAlignObjAngles& theAlignObj);
25 virtual ~AliAlignObjAngles();
26
27 //Setters
28 virtual void SetTranslation(Double_t x, Double_t y, Double_t z){
29 fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z;}
30 virtual void SetTranslation(const TGeoMatrix& m);
31 virtual void SetRotation(Double_t psi, Double_t theta, Double_t phi){
32 fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi;}
33 virtual Bool_t SetRotation(const TGeoMatrix& m);
34 virtual void SetMatrix(const TGeoMatrix& m);
35 virtual void SetPars(Double_t x, Double_t y, Double_t z, Double_t psi,
36 Double_t theta, Double_t phi){
37 fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z;
38 fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi;}
39
40 //Getters
41 virtual void GetTranslation(Double_t *tr) const {
42 tr[0] = fTranslation[0]; tr[1] = fTranslation[1]; tr[2] = fTranslation[2];}
43 virtual Bool_t GetAngles(Double_t* angles) const {
44 angles[0] = fRotation[0]; angles[1] = fRotation[1];
45 angles[2] = fRotation[2]; return kTRUE;}
46 virtual void GetPars(Double_t tr[], Double_t angles[]) const;
47 virtual void GetMatrix(TGeoHMatrix& m) const;
48
49 protected:
50 Double_t fTranslation[3]; // Translation vector
51 Double_t fRotation[3]; // Roll-pitch-yaw angles
52
53 ClassDef(AliAlignObjAngles, 1)
54};
55
56#endif