EMCAL
[u/mrichter/AliRoot.git] / PHOS / PHOSbase / 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  * Revision 1.3  2007/07/10 12:41:38  kharlov
13  * Added a new class AliPHOSSurvet1 which read survey data from EDMS files
14  *
15  * Revision 1.2  2007/05/17 17:13:32  kharlov
16  * Coding convensions satisfied (T.Pocheptsov)
17  *
18  * Revision 1.1  2007/04/19 15:47:20  kharlov
19  * Add misalignment of strip units with AliPHOSSurvey class
20  *
21  */
22
23 #include <TObject.h>
24 #include <Rtypes.h>
25
26 class TClonesArray;
27 class TString;
28
29 class AliPHOSGeometry;
30
31 /*
32   Objects of this class read txt file with survey (photogrammetry) data
33   and convert the data into AliAlignObjParams of alignable PHOS volumes.
34   It can be used as a base class, you need to override GetStripTransformation.
35   AliPHOSSurvey inherits TObject only to use AliLog "functions".
36 */
37
38 class AliPHOSSurvey : public TObject {
39 public:
40   AliPHOSSurvey();
41   AliPHOSSurvey(const TString &txtFileName);
42
43   virtual ~AliPHOSSurvey();
44
45   //Create AliAlignObjParams for strips.
46   void CreateAliAlignObjParams(TClonesArray &array);
47   //Create AliAlignObjParams with null shifts and rotations.
48   void CreateNullObjects(TClonesArray &alObj, const AliPHOSGeometry *geom)const;
49
50 protected:
51
52   struct AliPHOSStripDelta {
53     Float_t fXShift; //x shift
54     Float_t fYShift; //y shift
55     Float_t fZShift; //z shift
56     Float_t fPsi;    //psi
57     Float_t fTheta;  //theta
58     Float_t fPhi;    //phi
59   };
60
61   Int_t                    fStrNum; // Number of strips.
62   AliPHOSStripDelta *fStripData; // Strip unit transformation data
63
64   void InitStripData(const Double_t *xReal, const Double_t *zReal);
65
66 private:
67   //Calculate shifts and rotations for strip number stripIndex in a module moduleIndex.
68   virtual AliPHOSStripDelta GetStripTransformation(Int_t stripIndex, Int_t moduleIndex)const;
69
70   AliPHOSSurvey(const AliPHOSSurvey &);
71   AliPHOSSurvey &operator = (const AliPHOSSurvey &);
72
73   ClassDef(AliPHOSSurvey, 1) //Survey data reader
74 };
75
76 #endif