From 48c8e89a1b2a1526b5aae5efea30942f54a5ffb3 Mon Sep 17 00:00:00 2001 From: cvetan Date: Fri, 17 Mar 2006 16:07:54 +0000 Subject: [PATCH] Possibility to specify local parameters added also to the constructor AliAlignObj derived classes (R.Grosso) --- STEER/AliAlignObjAngles.cxx | 16 ++++++++++++---- STEER/AliAlignObjAngles.h | 2 +- STEER/AliAlignObjMatrix.cxx | 17 +++++++++++++---- STEER/AliAlignObjMatrix.h | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/STEER/AliAlignObjAngles.cxx b/STEER/AliAlignObjAngles.cxx index ece8da0782d..46f2d9fb852 100644 --- a/STEER/AliAlignObjAngles.cxx +++ b/STEER/AliAlignObjAngles.cxx @@ -46,14 +46,22 @@ AliAlignObjAngles::AliAlignObjAngles(const char* volpath, UShort_t voluid, Doubl } //_____________________________________________________________________________ -AliAlignObjAngles::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) : AliAlignObj() +AliAlignObjAngles::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, Bool_t global) throw (const Char_t *) : AliAlignObj() { // standard constructor with 3 translation + 3 rotation parameters - // + // If the user explicitly sets the global variable to kFALSE then the + // parameters are interpreted as giving the local transformation. + // This requires to have a gGeoMenager active instance, otherwise the + // constructor will fail (no object created) + // fVolPath=volpath; SetVolUID(detId,volId); - fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z; - fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi; + if(global){ + fTranslation[0]=x; fTranslation[1]=y; fTranslation[2]=z; + fRotation[0]=psi; fRotation[1]=theta; fRotation[2]=phi; + }else{ + if(!SetLocalPars(x,y,z,psi,theta,phi)) throw "Alignment object creation failed (TGeo instance needed)!\n"; + } } //_____________________________________________________________________________ diff --git a/STEER/AliAlignObjAngles.h b/STEER/AliAlignObjAngles.h index 45b21b31e24..48824ac5230 100644 --- a/STEER/AliAlignObjAngles.h +++ b/STEER/AliAlignObjAngles.h @@ -20,7 +20,7 @@ class AliAlignObjAngles : public AliAlignObj{ public: AliAlignObjAngles(); 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); - 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); + 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, Bool_t global=1) throw (const Char_t *); AliAlignObjAngles(const char* volpath, UShort_t voluid, TGeoMatrix& m); AliAlignObjAngles(const AliAlignObj& theAlignObj); AliAlignObjAngles& operator= (const AliAlignObj& theAlignObj); diff --git a/STEER/AliAlignObjMatrix.cxx b/STEER/AliAlignObjMatrix.cxx index 3fc32c86a5c..69386253ab3 100644 --- a/STEER/AliAlignObjMatrix.cxx +++ b/STEER/AliAlignObjMatrix.cxx @@ -44,16 +44,25 @@ AliAlignObjMatrix::AliAlignObjMatrix(const char* volpath, UShort_t voluid, Doubl } //_____________________________________________________________________________ -AliAlignObjMatrix::AliAlignObjMatrix(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) : AliAlignObj() +AliAlignObjMatrix::AliAlignObjMatrix(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, Bool_t global) throw (const Char_t *) : AliAlignObj() { // standard constructor with 3 translation + 3 rotation parameters - // + // If the user explicitly sets the global variable to kFALSE then the + // parameters are interpreted as giving the local transformation. + // This requires to have a gGeoMenager active instance, otherwise the + // constructor will fail (no object created) + // fVolPath=volpath; SetVolUID(detId,volId); - SetTranslation(x, y, z); - SetRotation(psi, theta, phi); + if(global){ + SetTranslation(x, y, z); + SetRotation(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* volpath, UShort_t voluid, TGeoMatrix& m) : AliAlignObj() { diff --git a/STEER/AliAlignObjMatrix.h b/STEER/AliAlignObjMatrix.h index 8e6acd3f7d0..c33f2738a4f 100644 --- a/STEER/AliAlignObjMatrix.h +++ b/STEER/AliAlignObjMatrix.h @@ -16,7 +16,7 @@ class AliAlignObjMatrix : public AliAlignObj { public: AliAlignObjMatrix(); AliAlignObjMatrix(const char* volpath, UShort_t voluid, Double_t x, Double_t y, Double_t z, Double_t psi, Double_t theta, Double_t phi); - AliAlignObjMatrix(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); + AliAlignObjMatrix(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, Bool_t global=1) throw (const Char_t *); AliAlignObjMatrix(const char* volpath, UShort_t voluid, TGeoMatrix& m); AliAlignObjMatrix(const AliAlignObj& theAlignObj); AliAlignObjMatrix& operator= (const AliAlignObj& theAlignObj); -- 2.39.3