AliRoot Core  edcc906 (edcc906)
AliMUONGeometryMisAligner.h
Go to the documentation of this file.
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice */
3 
4 // $Id$
5 
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 
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);
31 
32  //_________________________________________________________________
33  // methods
34 
35  // return a misaligned geometry obtained from the existing one.
37  Bool_t verbose = kFALSE);
38 
40  void SetCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean = 0., Double_t zwidth = 0.)
41  {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 
44  void SetCartMisAlig(Double_t mean, Double_t width)
45  {fDetElemMisAlig[0][0] = mean; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = mean; fDetElemMisAlig[1][1] = width;}
46 
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  {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 
52  void SetMaxCartMisAlig(Double_t width)
53  {fDetElemMisAlig[0][0] = 0.0; fDetElemMisAlig[0][1] = width; fDetElemMisAlig[1][0] = 0.0; fDetElemMisAlig[1][1] = width;}
54 
56  void SetMaxAngMisAlig(Double_t width)
57  {fDetElemMisAlig[5][0] = 0.0; fDetElemMisAlig[5][1] = width;}
58 
59  void SetXYAngMisAligFactor(Double_t factor);
60 
61  void SetZCartMisAligFactor(Double_t factor);
62 
64  void SetUseGaus(Bool_t usegaus)
65  {fUseGaus=usegaus; fUseUni=!usegaus;}
66 
68  void SetUseUni(Bool_t useuni)
69  {fUseGaus=!useuni; fUseUni=useuni;}
70 
72  void SetModuleCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth)
73  {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 
76  void SetModuleAngMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth)
77  {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 
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:
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;
97  Bool_t fUseGaus;
98  Double_t fDetElemMisAlig[6][2];
99  Double_t fModuleMisAlig[6][2];
100 
103 
104 
105  ClassDef(AliMUONGeometryMisAligner,4) // Geometry parametrisation
106 };
107 
108 #endif //ALI_MUON_GEOMETRY_MIS_ALIGNER_H
109 
110 
111 
112 
Bool_t fUseUni
use uniform distribution for misaligmnets
AliMUONGeometryTransformer * MisAlign(const AliMUONGeometryTransformer *transformer, Bool_t verbose=kFALSE)
AliMUONGeometryMisAligner & operator=(const AliMUONGeometryMisAligner &right)
Not implemented.
void SetZCartMisAligFactor(Double_t factor)
Top container class for geometry transformations.
Class for misalignment of geometry transformations.
void SetModuleAngMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth)
Set module (half chambers) cartesian displacement parameters.
void GetGausMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const
Double_t fModuleMisAlig[6][2]
Mean and width of the displacements of the modules along x,y,z (translations) and about x...
void SetModuleCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean, Double_t zwidth)
Set module (half chambers) cartesian displacement parameters.
TGeoCombiTrans MisAlignDetElem(const TGeoCombiTrans &transform) const
void SetMaxAngMisAlig(Double_t width)
Set angular displacement (Kept for backward compatibility)
void SetAngMisAlig(Double_t zmean, Double_t zwidth, Double_t xmean=0., Double_t xwidth=0., Double_t ymean=0., Double_t ywidth=0.)
Set angular displacement.
Double_t fZCartMisAligFactor
factor (<1) to apply to cartetian misalignment range since range of motion is restricted in z directi...
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.)
Set alignment resolution to misalign objects to be stored in CDB.
Bool_t fUseGaus
use gaussian distribution for misaligmnets
void SetCartMisAlig(Double_t mean, Double_t width)
Set cartesian displacement parameters, the same along x, y.
void SetMaxCartMisAlig(Double_t width)
Set cartesian displacement (Kept for backward compatibility)
TGeoCombiTrans MisAlignModule(const TGeoCombiTrans &transform) const
void SetUseUni(Bool_t useuni)
Set option for uniform distribution.
void GetUniMisAlign(Double_t cartMisAlig[3], Double_t angMisAlig[3], const Double_t lParMisAlig[6][2]) const
Double_t fDetElemMisAlig[6][2]
Mean and width of the displacements of the detection elements along x,y,z (translations) and about x...
void SetXYAngMisAligFactor(Double_t factor)
Double_t fXYAngMisAligFactor
factor (<1) to apply to angular misalignment range since range of motion is restricted out of the xy ...
void SetUseGaus(Bool_t usegaus)
Set option for gaussian distribution.
void SetCartMisAlig(Double_t xmean, Double_t xwidth, Double_t ymean, Double_t ywidth, Double_t zmean=0., Double_t zwidth=0.)
Set cartesian displacement parameters different along x, y.