X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGeometryMisAligner.h;h=40943800540f39bdebe1b707e2314e1d93841d97;hb=fa3fe02e645b16e1253c1b2219b5a72c9b1c61b6;hp=2f9e9de33f3a88cff56bd6ea07f7c6f4700c41b2;hpb=71a2d3aa63e94daa0244d8d6d1c7c162ae29a374;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGeometryMisAligner.h b/MUON/AliMUONGeometryMisAligner.h index 2f9e9de33f3..40943800540 100644 --- a/MUON/AliMUONGeometryMisAligner.h +++ b/MUON/AliMUONGeometryMisAligner.h @@ -37,24 +37,24 @@ class AliMUONGeometryMisAligner:public TObject Bool_t verbose = kFALSE); /// 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;} + void SetCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean = 0., Double_t zwidth = 0.) + {fDetElemMisAlig[0][0] = xmean; fDetElemMisAlig[0][1] = xwidth; fDetElemMisAlig[1][0] = ymean; fDetElemMisAlig[1][1] = ywidth; fDetElemMisAlig[2][0] = zmean; fDetElemMisAlig[2][1] = zwidth; } /// 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;} + {fDetElemMisAlig[0][0] = mean; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = mean; fDetElemMisAlig[1][1] = width;} /// Set angular displacement - void SetAngMisAlig(Double_t mean, Double_t width) - {fAngMisAligM = mean; fAngMisAligW = width;} + void SetAngMisAlig(Double_t zmean, Double_t zwidth, Double_t xmean = 0., Double_t xwidth = 0., Double_t ymean = 0., Double_t ywidth = 0.) + {fDetElemMisAlig[3][0] = xmean; fDetElemMisAlig[3][1] = xwidth; fDetElemMisAlig[4][0] = ymean; fDetElemMisAlig[4][1] = ywidth; fDetElemMisAlig[5][0] = zmean; fDetElemMisAlig[5][1] = zwidth;} /// Set cartesian displacement (Kept for backward compatibility) void SetMaxCartMisAlig(Double_t width) - {fCartXMisAligM = 0.0; fCartXMisAligW = width; fCartYMisAligM = 0.0; fCartYMisAligW = width;} + {fDetElemMisAlig[0][0] = 0.0; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = 0.0; fDetElemMisAlig[1][1] = width;} /// Set angular displacement (Kept for backward compatibility) void SetMaxAngMisAlig(Double_t width) - {fAngMisAligM = 0.0; fAngMisAligW = width;} + {fDetElemMisAlig[5][0] = 0.0; fDetElemMisAlig[5][1] = width;} void SetXYAngMisAligFactor(Double_t factor); @@ -67,6 +67,14 @@ class AliMUONGeometryMisAligner:public TObject /// Set option for uniform distribution void SetUseUni(Bool_t useuni) {fUseGaus=!useuni; fUseUni=useuni;} + + /// Set module (half chambers) cartesian displacement parameters + void SetModuleCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth) + {fModuleMisAlig[0][0] = xmean; fModuleMisAlig[0][1] = xwidth; fModuleMisAlig[1][0] = ymean; fModuleMisAlig[1][1] = ywidth; fModuleMisAlig[2][0] = zmean; fModuleMisAlig[2][1] = zwidth;} + + /// Set module (half chambers) cartesian displacement parameters + void SetModuleAngMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth) + {fModuleMisAlig[3][0] = xmean; fModuleMisAlig[3][1] = xwidth; fModuleMisAlig[4][0] = ymean; fModuleMisAlig[4][1] = ywidth; fModuleMisAlig[5][0] = zmean; fModuleMisAlig[5][1] = zwidth;} protected: /// Not implemented @@ -77,19 +85,17 @@ class AliMUONGeometryMisAligner:public TObject 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; + TGeoCombiTrans MisAlignDetElem(const TGeoCombiTrans& transform) const; + TGeoCombiTrans MisAlignModule(const TGeoCombiTrans& transform) const; + void GetUniMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const; + void GetGausMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const; 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 fDetElemMisAlig[6][2]; ///< Mean and width of the displacements of the detection elements along x,y,z (translations) and about x,y,z (rotations) + Double_t fModuleMisAlig[6][2]; ///< Mean and width of the displacements of the modules along x,y,z (translations) and about x,y,z (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