X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGeometryMisAligner.h;h=c862880a701e7a905d92dc0fe900ad6ef18a664b;hb=ea199e3323227b3b3b8ef38f428c172b1e0eb413;hp=9ba2e077751a179662367243b29f76226bb7b1b0;hpb=ef79ed3afb3eb075b24fea4786378ac53e332871;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGeometryMisAligner.h b/MUON/AliMUONGeometryMisAligner.h index 9ba2e077751..c862880a701 100644 --- a/MUON/AliMUONGeometryMisAligner.h +++ b/MUON/AliMUONGeometryMisAligner.h @@ -6,24 +6,26 @@ /// \ingroup geometry /// \class AliMUONGeometryMisAligner /// \brief Class for misalignment of geometry transformations -/// -/// Author: Bruce Becker +// +// Authors: Bruce Becker, Javier Castillo #ifndef ALI_MUON_GEOMETRY_MIS_ALIGNER_H #define ALI_MUON_GEOMETRY_MIS_ALIGNER_H #include -#include class AliMUONGeometryTransformer; class TRandom; +class TGeoCombiTrans; class AliMUONGeometryMisAligner:public TObject { public: - AliMUONGeometryMisAligner(Double_t cartMisAlig, Double_t angMisAlig); + AliMUONGeometryMisAligner(Double_t cartXMisAligM, Double_t cartXMisAligW, Double_t cartYMisAligM, Double_t cartYMisAligW, Double_t angMisAligM, Double_t angMisAligW); + AliMUONGeometryMisAligner(Double_t cartMisAligM, Double_t cartMisAligW, Double_t angMisAligM, Double_t angMisAligW); + AliMUONGeometryMisAligner(Double_t cartMisAligW, Double_t angMisAligW); AliMUONGeometryMisAligner(); virtual ~AliMUONGeometryMisAligner(); @@ -34,29 +36,62 @@ class AliMUONGeometryMisAligner:public TObject AliMUONGeometryTransformer* MisAlign(const AliMUONGeometryTransformer* transformer, Bool_t verbose = kFALSE); - void SetMaxCartMisAlig(Double_t offset) - {fMaxCartMisAlig = offset ;} + /// Set cartesian displacement parameters different along x, y + void SetCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth) + {fCartXMisAligM = xmean; fCartXMisAligW = xwidth; fCartYMisAligM = ymean; fCartYMisAligW = ywidth;} + + /// Set cartesian displacement parameters, the same along x, y + void SetCartMisAlig(Double_t mean, Double_t width) + {fCartXMisAligM = mean; fCartXMisAligW = width; fCartYMisAligM = mean; fCartYMisAligW = width;} - void SetMaxAngMisAlig(Double_t offset) - {fMaxAngMisAlig = offset;} + /// Set angular displacement + void SetAngMisAlig(Double_t mean, Double_t width) + {fAngMisAligM = mean; fAngMisAligW = width;} - void SetXYAngMisAligFactor(Double_t factor); + /// Set cartesian displacement (Kept for backward compatibility) + void SetMaxCartMisAlig(Double_t width) + {fCartXMisAligM = 0.0; fCartXMisAligW = width; fCartYMisAligM = 0.0; fCartYMisAligW = width;} + /// Set angular displacement (Kept for backward compatibility) + void SetMaxAngMisAlig(Double_t width) + {fAngMisAligM = 0.0; fAngMisAligW = width;} + + void SetXYAngMisAligFactor(Double_t factor); + + void SetZCartMisAligFactor(Double_t factor); + + /// Set option for gaussian distribution + void SetUseGaus(Bool_t usegaus) + {fUseGaus=usegaus; fUseUni=!usegaus;} + + /// Set option for uniform distribution + void SetUseUni(Bool_t useuni) + {fUseGaus=!useuni; fUseUni=useuni;} protected: AliMUONGeometryMisAligner(const AliMUONGeometryMisAligner & right); AliMUONGeometryMisAligner & operator =(const AliMUONGeometryMisAligner &right); + private: // return a misaligned transformation TGeoCombiTrans MisAlign(const TGeoCombiTrans& transform) const; + void GetUniMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3]) const; + void GetGausMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3]) const; - Double_t fMaxCartMisAlig; // cartesian displacement range, set by SetMaxCartMisAlig (translations) - Double_t fMaxAngMisAlig; // Angular displacement range (rotations) - Double_t fXYAngMisAligFactor; // factor (<1) to apply to angular misalignment range since range of motion is restricted out of the xy plane - TRandom *fDisplacementGenerator; // random number generator for the displacements + Bool_t fUseUni; ///< use uniform distribution for misaligmnets + Bool_t fUseGaus; ///< use gaussian distribution for misaligmnets + Double_t fCartXMisAligM; ///< cartesian displacement mean along x, (translations) + Double_t fCartXMisAligW; ///< cartesian displacement width along x, (translations) + Double_t fCartYMisAligM; ///< cartesian displacement mean along y, (translations) + Double_t fCartYMisAligW; ///< cartesian displacement width along y, (translations) + Double_t fAngMisAligM; ///< Angular displacement mean (rotations) + Double_t fAngMisAligW; ///< Angular displacement range (rotations) + Double_t fXYAngMisAligFactor; ///< factor (<1) to apply to angular misalignment range since range of motion is restricted out of the xy plane + Double_t fZCartMisAligFactor; ///< factor (<1) to apply to cartetian misalignment range since range of motion is restricted in z direction + TRandom *fDisplacementGenerator; ///< random number generator for the displacements - ClassDef(AliMUONGeometryMisAligner,2) // Geometry parametrisation + ClassDef(AliMUONGeometryMisAligner,3) // Geometry parametrisation }; #endif //ALI_MUON_GEOMETRY_MIS_ALIGNER_H