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);
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);
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);
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();
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]);
}
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