LCOV - code coverage report
Current view: top level - MUON/MUONgeometry - AliMUONGeometryMisAligner.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 10 10.0 %
Date: 2016-06-14 17:26:59 Functions: 1 14 7.1 %

          Line data    Source code
       1             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       2             :  * See cxx source for full Copyright notice                               */
       3             : 
       4             : // $Id$
       5             : 
       6             : /// \ingroup geometry
       7             : /// \class AliMUONGeometryMisAligner
       8             : /// \brief Class for misalignment of geometry transformations
       9             : //
      10             : //  Authors: Bruce Becker, Javier Castillo
      11             : 
      12             : 
      13             : #ifndef ALI_MUON_GEOMETRY_MIS_ALIGNER_H
      14             : #define ALI_MUON_GEOMETRY_MIS_ALIGNER_H
      15             : 
      16             : #include <TObject.h>
      17             : 
      18             : class AliMUONGeometryTransformer;
      19             : 
      20             : class TGeoCombiTrans;
      21             : class TClonesArray;
      22             : 
      23             : class AliMUONGeometryMisAligner:public TObject
      24             : {
      25             :  public:
      26             :   AliMUONGeometryMisAligner(Double_t cartXMisAligM, Double_t cartXMisAligW, Double_t cartYMisAligM, Double_t cartYMisAligW, Double_t angMisAligM, Double_t angMisAligW);
      27             :   AliMUONGeometryMisAligner(Double_t cartMisAligM, Double_t cartMisAligW, Double_t angMisAligM, Double_t angMisAligW);
      28             :   AliMUONGeometryMisAligner(Double_t cartMisAligW, Double_t angMisAligW);
      29             :   AliMUONGeometryMisAligner();
      30             :   virtual ~AliMUONGeometryMisAligner();
      31             :   
      32             :   //_________________________________________________________________
      33             :   // methods
      34             :   
      35             :   // return a misaligned geometry obtained from the existing one.
      36             :   AliMUONGeometryTransformer* MisAlign(const AliMUONGeometryTransformer* transformer, 
      37             :                                        Bool_t verbose = kFALSE);
      38             :   
      39             :   /// Set cartesian displacement parameters different along x, y
      40             :   void SetCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean = 0., Double_t zwidth = 0.)
      41           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; }
      42             : 
      43             :   /// Set cartesian displacement parameters, the same along x, y
      44             :   void SetCartMisAlig(Double_t mean, Double_t width)
      45           0 :     {fDetElemMisAlig[0][0] = mean; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = mean; fDetElemMisAlig[1][1] = width;}
      46             :   
      47             :   /// Set angular displacement
      48             :   void SetAngMisAlig(Double_t zmean, Double_t zwidth, Double_t xmean = 0., Double_t xwidth = 0., Double_t ymean = 0., Double_t ywidth = 0.)
      49           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;}
      50             :   
      51             :   /// Set cartesian displacement (Kept for backward compatibility)
      52             :   void SetMaxCartMisAlig(Double_t width) 
      53           0 :     {fDetElemMisAlig[0][0] = 0.0; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = 0.0; fDetElemMisAlig[1][1] = width;}
      54             :   
      55             :   /// Set angular displacement (Kept for backward compatibility)
      56             :   void SetMaxAngMisAlig(Double_t width) 
      57           0 :     {fDetElemMisAlig[5][0] = 0.0; fDetElemMisAlig[5][1] = width;}
      58             : 
      59             :   void SetXYAngMisAligFactor(Double_t factor);
      60             : 
      61             :   void SetZCartMisAligFactor(Double_t factor);
      62             : 
      63             :   /// Set option for gaussian distribution 
      64             :   void SetUseGaus(Bool_t usegaus)
      65           0 :     {fUseGaus=usegaus; fUseUni=!usegaus;}
      66             : 
      67             :   /// Set option for uniform distribution 
      68             :   void SetUseUni(Bool_t useuni)
      69           0 :     {fUseGaus=!useuni; fUseUni=useuni;}
      70             : 
      71             :   /// Set module (half chambers) cartesian displacement parameters
      72             :   void SetModuleCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth) 
      73           0 :     {fModuleMisAlig[0][0] = xmean; fModuleMisAlig[0][1] = xwidth; fModuleMisAlig[1][0] = ymean; fModuleMisAlig[1][1] = ywidth; fModuleMisAlig[2][0] = zmean; fModuleMisAlig[2][1] = zwidth;}
      74             : 
      75             :   /// Set module (half chambers) cartesian displacement parameters
      76             :   void SetModuleAngMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth) 
      77           0 :     {fModuleMisAlig[3][0] = xmean; fModuleMisAlig[3][1] = xwidth; fModuleMisAlig[4][0] = ymean; fModuleMisAlig[4][1] = ywidth; fModuleMisAlig[5][0] = zmean; fModuleMisAlig[5][1] = zwidth;}
      78             : 
      79             :   /// Set alignment resolution to misalign objects to be stored in CDB
      80             :   void SetAlignmentResolution(const TClonesArray* misAlignArray, Int_t chId=-1, Double_t chResX=-1., Double_t chResY=-1., Double_t deResX=-1., Double_t deResY=-1.);
      81             :   
      82             :  protected:
      83             :   /// Not implemented
      84             :   AliMUONGeometryMisAligner(const AliMUONGeometryMisAligner & right);
      85             :   /// Not implemented
      86             :   AliMUONGeometryMisAligner & operator =(const AliMUONGeometryMisAligner &right);
      87             :   
      88             :   
      89             :  private:
      90             :   // return a misaligned transformation
      91             :   TGeoCombiTrans MisAlignDetElem(const TGeoCombiTrans& transform) const;
      92             :   TGeoCombiTrans MisAlignModule(const TGeoCombiTrans& transform) const;
      93             :   void GetUniMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const;
      94             :   void GetGausMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const;
      95             : 
      96             :   Bool_t fUseUni;            ///< use uniform distribution for misaligmnets
      97             :   Bool_t fUseGaus;           ///< use gaussian distribution for misaligmnets
      98             :   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)
      99             :   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)  
     100             : 
     101             :   Double_t fXYAngMisAligFactor;  ///< factor (<1) to apply to angular misalignment range since range of motion is restricted out of the xy plane
     102             :   Double_t fZCartMisAligFactor; ///< factor (<1) to apply to cartetian misalignment range since range of motion is restricted in z direction
     103             : 
     104             :   
     105          18 :   ClassDef(AliMUONGeometryMisAligner,4) // Geometry parametrisation
     106             : };
     107             : 
     108             : #endif //ALI_MUON_GEOMETRY_MIS_ALIGNER_H
     109             : 
     110             : 
     111             : 
     112             : 

Generated by: LCOV version 1.11