]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TOF/AliTOFAlignment.h
Include Methods to derive TOF AlignObjs from Survey Data
[u/mrichter/AliRoot.git] / TOF / AliTOFAlignment.h
1 #ifndef ALITOFALIGNMENT_H
2 #define ALITOFALIGNMENT_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //////////////////////////////////////////////////////////////////
8 //  class for TOF Alignment::                                   //
9 //////////////////////////////////////////////////////////////////
10
11 #include "TTask.h"
12 #include "TGeoManager.h"
13 #include "TGeoVolume.h"
14 #include "TGeoBBox.h"
15 #include "TGeoPhysicalNode.h"
16 #include "TGeoNode.h"
17
18 class TObjArray;
19
20 class AliTOFAlignment :public TTask{
21
22   enum {kMaxAlignObj=2000}; //maximal number of the TOF Alignable Objects
23
24  public:
25
26   AliTOFAlignment(); 
27   AliTOFAlignment(const AliTOFAlignment &t); //Copy Ctor 
28   AliTOFAlignment& operator=(const AliTOFAlignment &source); // Assignment Operator
29   virtual ~AliTOFAlignment();
30   virtual void WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun);
31   virtual void ReadParFromCDB(Char_t *sel, Int_t nrun);
32   virtual void WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun);
33   virtual void ReadSimParFromCDB(Char_t *sel, Int_t nrun);
34   virtual void Smear(Float_t *tr=0, Float_t *rot=0); // create a set of AlignObj for TOF
35   virtual void Align(Float_t *tr=0, Float_t *rot=0); // create a set of AlignObj for TOF
36   virtual void WriteOnCDBforDC();
37   virtual void ReadFromCDBforDC();
38   virtual void BuildGeomForSurvey(); //Generate needed ideal volumes for Survey
39   virtual void AlignFromSurvey(); //Prototype to get Align Obj from Survey
40   virtual void TestAlignFromSurvey( Float_t *mis); //To test align. from Survey
41   TObjArray * GetTOFAlignArray() const {return fTOFAlignObjArray;}
42
43 private:
44
45
46   // This is the big box containing the TOF master sensitive volume+services
47   static const Double_t fgkXsizeTOF;  // x size of the TOF ext. volume, cm
48   static const Double_t fgkYsizeTOF;  // y size of the TOF ext. volume, cm
49   static const Double_t fgkZsizeTOF;  // x size of the TOF ext. volume, cm
50   static const Double_t fgkRorigTOF;  // Radius of the TOF ext. volume, cm
51
52   // Four fiducial marks on SM, expressed in local coordinates
53   // They are positioned at x=+/- 38 cm, y=11.2, z=+/- 456.94 cm
54
55   static const Double_t fgkXFM; //x FM pos, cm 
56   static const Double_t fgkYFM; //y FM pos, cm
57   static const Double_t fgkZFM; //z FM pos, cm
58
59   // This is the z size of the TOF master sensitive volume (it is shorter)
60   static const Double_t fgkZsizeTOFSens; //cm
61
62   Int_t fNTOFAlignObj; // Number of Alignable Objects
63   TGeoManager *fTOFmgr;
64   TObjArray *fTOFAlignObjArray; // Pointer to the TOF alignable objects
65   TGeoHMatrix* fTOFMatrixId[18];
66   Float_t fTOFSurveyFM[18][4][3]; // Vector Containing Survey Marks Position GF
67   ClassDef(AliTOFAlignment,2)   // TOF Alignment 
68 };
69
70 #endif