X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONSurveyObj.h;h=726fab32abeb3f024845e8854269528d28cf87b3;hb=f3d601a54eac57e81b01f251930d92b6fd5e4b5d;hp=993cd7e9f9e880288943e28cb61684e2368d74db;hpb=ba8b02668feb0e5489fc1d9bd70845d8fefe646e;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONSurveyObj.h b/MUON/AliMUONSurveyObj.h index 993cd7e9f9e..726fab32abe 100644 --- a/MUON/AliMUONSurveyObj.h +++ b/MUON/AliMUONSurveyObj.h @@ -32,7 +32,9 @@ class AliMUONSurveyObj:public TObject virtual Int_t AddGButtonTargets(TObjArray *pArray, TString btBaseName, Int_t lTargetMax = 9); virtual Int_t AddLButtonTargets(TObjArray *pArray, TString btBaseName, Int_t lTargetMax = 9); + /// To be implemented in a concrete Chamber or DetElem class virtual Int_t AddStickerTargets(TString stBaseName, Int_t lTargetMax = 9) = 0; + /// To be implemented in a concrete Chamber or DetElem class virtual Int_t AddGButtonTargets(TString btBaseName, Int_t lTargetMax = 9) = 0; void AddStickerTarget(AliSurveyPoint *stPoint); @@ -57,9 +59,17 @@ class AliMUONSurveyObj:public TObject fOwnerLocalTrf=ownerLocalTrf; } - TGeoCombiTrans* GetLocalTrf(){return fLocalTrf;} - TGeoCombiTrans* GetBaseTrf(){return fBaseTrf;} - TGeoCombiTrans* GetAlignTrf(){return fAlignTrf;} + /// Returns the local transformation + TGeoCombiTrans* GetLocalTrf() const {return fLocalTrf;} + /// Returns the base (global) transformation + TGeoCombiTrans* GetBaseTrf() const {return fBaseTrf;} + /// Returns the alignment transformation + TGeoCombiTrans* GetAlignTrf()const {return fAlignTrf;} + + /// Define wether to work in mm (survey units) or cm (alice units) + void SetUseCM(Bool_t bUseCM = kTRUE) {fUseCM = bUseCM;} + /// Indicates if working in mm (survey units) or cm (alice units) + Bool_t GetUseCM() const {return fUseCM;} void SetPlane(TString pName, Double_t xMin=-2000., Double_t xMax=+2000., Double_t yMin=-2000., Double_t yMax=2000.); void SetPlaneParameters(Double_t p0, Double_t p1, Double_t p2); @@ -67,15 +77,17 @@ class AliMUONSurveyObj:public TObject void DrawSTargets(); Double_t FitPlane(); - TF2* GetPlane() {return fPlane;} + /// Returns the plane (TF2) representing the object + TF2* GetPlane() const {return fPlane;} - TFitter* GetFitter() {return fFitter;} + /// Returns the TFitter used for the best local to global transformation determination + TFitter* GetFitter() const {return fFitter;} Int_t SurveyToAlign(TGeoCombiTrans &quadTransf, Double_t *parErr, Double_t psi=0., Double_t tht=0., Double_t epsi=0., Double_t etht=0.); Int_t SurveyToAlign(Double_t psi=0., Double_t tht=0., Double_t epsi=0., Double_t etht=0.); Double_t SurveyChi2(Double_t *par); - Double_t EvalFunction(TF2 *lFunction, Int_t iP1, Int_t iP2, Char_t *lCoord); + Double_t EvalFunction(const TF2 *lFunction, Int_t iP1, Int_t iP2, const Char_t *lCoord); void CalculateTranslation(TF2 *xFunc, TF2 *yFunc, TF2 *zFunc, Int_t iP1, Int_t iP2, Double_t *lCenTemp); // TGeoCombiTrans *CalculateTransformation(TF2 *xFunc, TF2 *yFunc, TF2 *zFunc, TF2 *pFunc, Int_t iP1, Int_t iP2); @@ -85,12 +97,18 @@ class AliMUONSurveyObj:public TObject Int_t CalculateBestTransf(Int_t iP1, Int_t iP2, Double_t *lXYZ, Double_t *lPTP); void CalculateMeanTransf(Double_t *lXYZ, Double_t *lPTP); - + + /// Set xMin for functions fitting void SetXMin(Double_t xMin) {fXMin = xMin;} + /// Set xMax for functions fitting void SetXMax(Double_t xMax) {fXMax = xMax;} + /// Set yMin for functions fitting void SetYMin(Double_t yMin) {fYMin = yMin;} + /// Set yMax for functions fitting void SetYMax(Double_t yMax) {fYMax = yMax;} + /// Set zMin for functions fitting void SetZMin(Double_t zMin) {fZMin = zMin;} + /// Set zMax for functions fitting void SetZMax(Double_t zMax) {fZMax = zMax;} virtual void PrintLocalTrf(); @@ -101,13 +119,16 @@ class AliMUONSurveyObj:public TObject Double_t GetAlignResX(); Double_t GetAlignResY(); + AliSurveyPoint* ConvertPointUnits(AliSurveyPoint *stPoint, Float_t lFactor = 0.1); + private: /// Not implemented AliMUONSurveyObj(const AliMUONSurveyObj& right); /// Not implemented AliMUONSurveyObj& operator = (const AliMUONSurveyObj& right); - Double_t eqPlane(Double_t *x, Double_t *par){ + Double_t EqPlane(const Double_t *x, const Double_t *par) const { + /// Plane equation return (-par[1]*x[0] +par[0]*x[1] -par[2]); // then psi=ATan(par[0]) and tht=ATan(par[0]) // return (-par[0]*x[0] -par[1]*x[1] -par[2]); } @@ -123,16 +144,18 @@ class AliMUONSurveyObj:public TObject Bool_t fOwnerAlignTrf; ///< Flag for owner of fAlignTrf Bool_t fOwnerBaseTrf; ///< Flag for owner of fBaseTrf + Bool_t fUseCM; ///< Use centimeters, survey units are mm but aliroot uses cm + TF2 *fPlane; ///< TF2 for plane fitting TFitter *fFitter; ///< Fitter for best local to global transformation - Double_t fXMin; - Double_t fXMax; - Double_t fYMin; - Double_t fYMax; - Double_t fZMin; - Double_t fZMax; + Double_t fXMin; ///< xMin for functions fitting + Double_t fXMax; ///< xMax for functions fitting + Double_t fYMin; ///< yMin for functions fitting + Double_t fYMax; ///< yMax for functions fitting + Double_t fZMin; ///< zMin for functions fitting + Double_t fZMax; ///< zMax for functions fitting ClassDef(AliMUONSurveyObj, 0) //Class for alignment of muon spectrometer