new survey classes for EMCAL - uses dummy parameters for now, will update when detect...
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALSurvey.h
1 #ifndef ALIEMCALSURVEY_H
2 #define ALIEMCALSURVEY_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 #include <TObject.h>
10 #include <Rtypes.h>
11
12 class TClonesArray;
13 class TString;
14
15 class AliEMCALGeometry;
16
17 /*
18   Objects of this class read txt file with survey data
19   and convert the data into AliAlignObjParams of alignable EMCAL volumes.
20   AliEMCALSurvey inherits TObject only to use AliLog "functions".
21 */
22
23 class AliEMCALSurvey : public TObject {
24 public:
25   AliEMCALSurvey();
26   AliEMCALSurvey(const TString &txtFileName);
27
28   virtual ~AliEMCALSurvey();
29
30   //Create AliAlignObjParams for strips.
31   void CreateAliAlignObjParams(TClonesArray &array);
32   //Create AliAlignObjParams with null shifts and rotations.
33   void CreateNullObjects(TClonesArray &alObj, const AliEMCALGeometry *geom)const;
34
35 protected:
36
37   struct AliEMCALSuperModuleDelta {
38     Float_t fXShift; //x shift
39     Float_t fYShift; //y shift
40     Float_t fZShift; //z shift
41     Float_t fPsi;    //psi
42     Float_t fTheta;  //theta
43     Float_t fPhi;    //phi
44   };
45
46   Int_t           fNSuperModule; // Number of supermodules.
47   AliEMCALSuperModuleDelta *fSuperModuleData; // Supermodule transformation data
48
49   void InitSuperModuleData(const Double_t *xReal, const Double_t *yReal, const Double_t *zReal);
50
51 private:
52   //Calculate shifts and rotations for supermodule.
53   virtual AliEMCALSuperModuleDelta GetSuperModuleTransformation(Int_t smIndex) const;
54
55   AliEMCALSurvey(const AliEMCALSurvey &);
56   AliEMCALSurvey &operator = (const AliEMCALSurvey &);
57
58   ClassDef(AliEMCALSurvey, 1) //Survey data reader
59 };
60
61 #endif