X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=STEER%2FAliAlignObj.h;h=f4c3d6b179b5f2cd48ddc5cd9573cf2a2bd241de;hp=baccf704dc951e1b94113fae286d12b0d62f0dae;hb=98937d9305d2bea0af83b8af07963a8b5062caf2;hpb=c18195b9094cfa05b14e3a4336b4e35c00af61d8 diff --git a/STEER/AliAlignObj.h b/STEER/AliAlignObj.h index baccf704dc9..f4c3d6b179b 100644 --- a/STEER/AliAlignObj.h +++ b/STEER/AliAlignObj.h @@ -1,12 +1,12 @@ #ifndef ALIALIGNOBJ_H #define ALIALIGNOBJ_H -/************************************************************************* - * AliAlignObj: alignment base class for the storage of alignment * - * information for a single volume, that is a translation, a rotation * - * and a the identity of the volume itself in form of a TGeo path and * - * as a unique integer identifier * - *************************************************************************/ +//************************************************************************ +// AliAlignObj: alignment base class for the storage of alignment * +// information for a single volume, that is a translation, a rotation * +// and a the identity of the volume itself in form of a TGeo path and * +// as a unique integer identifier * +//************************************************************************ #include "TObject.h" #include "TString.h" #include "TGeoMatrix.h" @@ -19,6 +19,17 @@ class AliAlignObj : public TObject { AliAlignObj(const AliAlignObj& theAlignObj); AliAlignObj& operator= (const AliAlignObj& theAlignObj); virtual ~AliAlignObj(); + enum ELayerID{kFirstLayer=1, + kSPD1=1, kSPD2=2, + kSDD1=3, kSDD2=4, + kSSD1=5, kSSD2=6, + kTPC1=7, kTPC2=8, + kTRD1=9, kTRD2=10, kTRD3=11, kTRD4=12, kTRD5=13, kTRD6=14, + kTOF=15, + kPHOS1=16, kPHOS2=17, + kRICH=18, + kMUON=19, + kLastLayer=20}; //Setters virtual void SetTranslation(Double_t x, Double_t y, Double_t z) = 0; @@ -29,11 +40,13 @@ class AliAlignObj : public TObject { Double_t theta, Double_t phi) = 0; virtual void SetMatrix(const TGeoMatrix& m) = 0; void SetVolPath(const TString& volpath) {fVolPath=volpath;} - void SetVolUID(const UShort_t voluid) {fVolUID=voluid;} + void SetVolUID(UShort_t voluid) {fVolUID=voluid;} + void SetVolUID(ELayerID layerId, Int_t modId); //Getters const char *GetVolPath() const {return fVolPath.Data();} UShort_t GetVolUID() const {return fVolUID;} + void GetVolUID(ELayerID &layerId, Int_t &modId) const; virtual void GetTranslation(Double_t* tr) const=0; virtual Bool_t GetAngles(Double_t* angles) const=0; virtual void GetPars(Double_t transl[], Double_t rot[]) const=0; @@ -41,93 +54,25 @@ class AliAlignObj : public TObject { void Print(Option_t *) const; + static Int_t LayerSize(Int_t layer) { return fgLayerSize[layer]; } + static const char* LayerName(Int_t layer) { return fgLayerName[layer]; } + + static UShort_t LayerToVolUID(ELayerID layerId, Int_t modId); + static ELayerID VolUIDToLayer(UShort_t voluid, Int_t &modId); + static ELayerID VolUIDToLayer(UShort_t voluid); protected: void AnglesToMatrix(const Double_t *angles, Double_t *rot) const; Bool_t MatrixToAngles(const Double_t *rot, Double_t *angles) const; //Volume identifiers - TString fVolPath; // Volume path inside TGeo geometry - UShort_t fVolUID; // Unique volume ID - - ClassDef(AliAlignObj, 1) -}; + TString fVolPath; // Volume path inside TGeo geometry + UShort_t fVolUID; // Unique volume ID -/***************************************************************************** - * AliAlignObjAngles: derived alignment class storing alignment information * - * for a single volume in form of three doubles for the translation * - * and three doubles for the rotation expressed with the euler angles * - * in the xyz-convention (http://mathworld.wolfram.com/EulerAngles.html), * - * also known as roll, pitch, yaw. PLEASE NOTE THE ANGLES SIGNS ARE * - * INVERSE WITH RESPECT TO THIS REFERENCE!!! In this way the representation* - * is fully consistent with the TGeo Rotation methods. * - *****************************************************************************/ -class AliAlignObjAngles : public AliAlignObj{ - public: - AliAlignObjAngles(); - AliAlignObjAngles(const AliAlignObjAngles& theAlignObj); - AliAlignObjAngles& operator= (const AliAlignObjAngles& theAlignObj); - virtual ~AliAlignObjAngles(); - - //Setters - virtual void SetTranslation(Double_t x, Double_t y, Double_t z){ - fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z;} - virtual void SetTranslation(const TGeoMatrix& m); - virtual void SetRotation(Double_t psi, Double_t theta, Double_t phi){ - fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi;} - virtual Bool_t SetRotation(const TGeoMatrix& m); - virtual void SetMatrix(const TGeoMatrix& m); - virtual void SetPars(Double_t x, Double_t y, Double_t z, Double_t psi, - Double_t theta, Double_t phi){ - fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z; - fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi;} - - //Getters - virtual void GetTranslation(Double_t *tr) const { - tr[0] = fTranslation[0]; tr[1] = fTranslation[1]; tr[2] = fTranslation[2];} - virtual Bool_t GetAngles(Double_t* angles) const { - angles[0] = fRotation[0]; angles[1] = fRotation[1]; - angles[2] = fRotation[2]; return kTRUE;} - virtual void GetPars(Double_t tr[], Double_t angles[]) const; - virtual void GetMatrix(TGeoHMatrix& m) const; - - protected: - Double_t fTranslation[3]; // Translation vector - Double_t fRotation[3]; // Roll-pitch-yaw angles + static Int_t fgLayerSize[kLastLayer - kFirstLayer]; + static const char* fgLayerName[kLastLayer - kFirstLayer]; - ClassDef(AliAlignObjAngles, 1) -}; - -/************************************************************************** - * AliAlignObjMatrix: derived alignment class storing alignment * - * information for a single volume in form of TGeoHMatrix, which * - * includes the information for a translation, a rotation and a scale * - *************************************************************************/ -class AliAlignObjMatrix : public AliAlignObj { - public: - AliAlignObjMatrix(); - AliAlignObjMatrix(const AliAlignObjMatrix& theAlignObj); - AliAlignObjMatrix& operator= (const AliAlignObjMatrix& theAlignObj); - virtual ~AliAlignObjMatrix(); - - //Setters - virtual void SetTranslation(Double_t x, Double_t y, Double_t z); - virtual void SetTranslation(const TGeoMatrix& m); - virtual void SetRotation(Double_t psi, Double_t theta, Double_t phi); - virtual Bool_t SetRotation(const TGeoMatrix& m); - virtual void SetMatrix(const TGeoMatrix& m); - virtual void SetPars(Double_t x, Double_t y, Double_t z, Double_t psi, - Double_t theta, Double_t phi); - //Getters - virtual void GetTranslation(Double_t* tr) const; - virtual Bool_t GetAngles(Double_t* angles) const; - virtual void GetPars(Double_t tr[], Double_t rot[]) const; - virtual void GetMatrix(TGeoHMatrix& m) const; - - protected: - TGeoHMatrix fMatrix; // Transformation matrix - - ClassDef(AliAlignObjMatrix, 1) + ClassDef(AliAlignObj, 1) }; #endif