]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSSurvey.h
Add misalignment of strip units with AliPHOSSurvey class
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSurvey.h
1 #ifndef ALIPHOSSURVEY_H
2 #define ALIPHOSSURVEY_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 /* History of cvs commits:
10  *
11  * $Log$
12  */
13
14 #include <vector>
15
16 #include <TObject.h>
17 #include <Rtypes.h>
18
19 class TClonesArray;
20 class TString;
21
22 class AliPHOSGeometry;
23
24 /*
25   Objects of this class read txt file with survey (photogrammetry) data
26   and convert the data into AliAlignObjAngles of alignable PHOS volumes.
27   It can be used as a base class, you need to override GetStripTransformation.
28   AliPHOSSurvey inherits TObject only to use AliLog "functions".
29 */
30
31 class AliPHOSSurvey : public TObject {
32 public:
33   AliPHOSSurvey();
34   AliPHOSSurvey(const TString &txtFileName);
35
36   //Create AliAlignObjAngles for strips.
37   void CreateAliAlignObjAngles(TClonesArray &array);
38   //Create AliAlignObjAngles with null shifts and rotations.
39   void CreateNullObjects(TClonesArray &, const AliPHOSGeometry *)const;
40
41 protected:
42   struct Transformation_t {
43     Float_t fXShift;
44     Float_t fYShift;
45     Float_t fZShift;
46     Float_t fPsi;
47     Float_t fTheta;
48     Float_t fPhi;
49   };
50
51 private:
52   //Calculate shifts and rotations for strip number stripIndex in a module moduleIndex.
53   virtual Transformation_t GetStripTransformation(Int_t stripIndex, Int_t moduleIndex)const;
54
55   AliPHOSSurvey(const AliPHOSSurvey &);
56   AliPHOSSurvey &operator = (const AliPHOSSurvey &);
57
58 private:
59   std::vector<Transformation_t> fStripData; // Strip unit transformation data
60
61   ClassDef(AliPHOSSurvey, 1) //Survey data reader
62 };
63
64 #endif