Correct formula for phi, in case of current local X <0, in GetLocalXat and GetPhiZat
[u/mrichter/AliRoot.git] / ITS / AliITSSurveyToAlign.h
1 #ifndef ALIITSSURVEYTOALIGN_H
2 #define ALIITSSURVEYTOALIGN_H
3 /* Copyright(c) 2008-2010, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //////////////////////////////////////////////////////////////////////////
9 //   Class to convert survey tables in alignment objects
10 //   for SSD and SDD
11 //////////////////////////////////////////////////////////////////////////
12
13 #include "AliSurveyToAlignObjs.h"
14
15 class TClonesArray;
16 class TGeoMatrix;
17 class TSystem;
18 class TFile;
19 class AliSurveyObj;
20 class AliAlignObjParams;
21 class AliCDBStorage;
22 class AliCDBEntry;
23
24
25 class AliITSSurveyToAlign : public AliSurveyToAlignObjs
26 {
27
28 public:
29     AliITSSurveyToAlign(Int_t run = 0, Int_t repSDD = 845069, Int_t repVerSDD = 1,  Int_t repModSSD = 887877,
30             Int_t repModVerSSD =3, Int_t repLaddSSD = 980521, Int_t repLaddVerSSD = 1);
31     AliITSSurveyToAlign(const AliITSSurveyToAlign& align); // copy constructor
32     AliITSSurveyToAlign &operator = (const AliITSSurveyToAlign& /* align */); //assignment operator
33     virtual ~AliITSSurveyToAlign();
34
35     void Run();
36     Bool_t CreateAlignObjs();
37     void CreateAlignObjDummySPD();
38     void CreateAlignObjSDD();
39     void CreateAlignObjDummySDD();
40     void CreateAlignObjSSDModules();
41     void CreateAlignObjDummySSDModules();
42     void CreateAlignObjSSDLadders();
43     Bool_t ApplyAlignObjSSDLadders();
44
45 private:
46     Int_t   fRun;                         // the run number for the OCDB
47     Int_t   fSDDrepNumber;
48     Int_t   fSDDrepVersion;
49     Int_t   fSSDModuleRepNumber;
50     Int_t   fSSDModuleRepVersion;
51     Int_t   fSSDLadderRepNumber;
52     Int_t   fSSDLadderRepVersion;
53
54     Double_t fSDDmeP[6][6];   //measured positions of ref. marks for current module 
55     Double_t fSDDidP[6][3];      //ideal positions of ref. marks for current module
56     Bool_t     fSDDisMe[6];
57
58     static const Double_t fgkLocR[6][3]; //id. pos. of ref. marks in RS of right oriented modules
59     static const Double_t fgkLocL[6][3]; //id. pos. of ref. marks in RS of lefr oriented modules
60
61     void GetIdPosSDD(Int_t uid, Int_t layer, Int_t module, Int_t iPoint);
62     void ReadPointNameSDD(const char str[], Int_t &iLayer, Int_t &iLader, Int_t &iModul, Int_t &iPoint) const;
63     void ConvertToRSofModulesAndRotSDD(Int_t Layer, Int_t Module);
64     void CalcShiftSDD(Double_t &x0,Double_t &y0,Double_t &z0) const;
65     void CalcShiftRotSDD(Double_t &tet,Double_t &psi,Double_t &phi,Double_t &x0,Double_t &y0,Double_t &z0);
66
67     ClassDef(AliITSSurveyToAlign,0);
68 };
69 #endif
70