]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSurveyObj.h
Updated SNM Glauber fit
[u/mrichter/AliRoot.git] / MUON / AliMUONSurveyObj.h
index 3aecc4cebcbff7da47b41b1ddc0e6d293d0d0f31..726fab32abeb3f024845e8854269528d28cf87b3 100644 (file)
@@ -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, const 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