warning fix
[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 //#include <TObject.h>
11 //#include <TString.h>
12 #include "TTask.h"
13 //#include "TGeoManager.h"
14 //#include "TGeoVolume.h"
15 //#include "TGeoBBox.h"
16 //#include "TGeoTrd1.h"
17 //#include "TGeoPhysicalNode.h"
18 //#include "TGeoNode.h"
19 //#include "TGeoMatrix.h"
20
21 class TGeoManager;
22 class TObjArray;
23 class TString;
24 class TGeoMatrix;
25
26 class AliTOFAlignment :public TTask{
27
28   enum {kMaxAlignObj=2000}; //maximal number of the TOF Alignable Objects
29
30  public:
31
32   AliTOFAlignment(); 
33   AliTOFAlignment(const AliTOFAlignment &t); //Copy Ctor 
34   AliTOFAlignment& operator=(const AliTOFAlignment &source); // Assignment Operator
35   virtual ~AliTOFAlignment();
36   virtual void WriteParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
37   virtual void ReadParFromCDB(const Char_t *sel, Int_t nrun);
38   virtual void WriteSimParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
39   virtual void ReadSimParFromCDB(const Char_t *sel, Int_t nrun);
40   virtual void Smear(Float_t * const tr=0, Float_t * const rot=0); // create a set of AlignObj for TOF
41   virtual void Align(Float_t * const tr=0, Float_t * const rot=0); // create a set of AlignObj for TOF
42   TObjArray * GetTOFAlignArray() const {return fTOFAlignObjArray;}
43
44   //methods for survey
45   virtual void WriteOnCDBforDC();
46   virtual void ReadFromCDBforDC();
47   virtual void BuildGeomForSurvey();      //Build ideal geometry (FTOA in BTOF)
48   virtual void InsertMisAlignment(Float_t * const mis); //To test align. from Survey
49   virtual void MakeDefData(const Int_t nf,TString namefiles[]); //Combines survey data from different files
50   virtual void WriteCombData(const Char_t *nomefile, Int_t option); //Write combined data on a file 
51   virtual void ReadSurveyDataAndAlign(); //Read survey data and call the right Alignement procedure  
52   virtual void WriteSimSurveyData(const Char_t *nomefile); // Write sim data in standard format
53
54 private:
55   
56   static const Double_t fgkRorigTOF;  //Radius of the TOF ext. volume, cm
57   static const Double_t fgkX1BTOF;    //x1 size of BTOF
58   static const Double_t fgkX2BTOF;    //x2 size of BTOF
59   static const Double_t fgkYBTOF;     //y size of BTOF
60   static const Double_t fgkZBTOF;     //z size of BTOF
61   
62   // Four fiducial marks on SM, expressed in local coordinates (origin=center of TOF SM)
63   // They are positioned at x=+/- 38 cm, y=+/- 457.3 cm, z=11.2 cm
64
65   static const Double_t fgkXFM; //x pos of FM in BTOF, cm 
66   static const Double_t fgkYFM; //y pos of FM in BTOF, cm
67   static const Double_t fgkZFM; //z pos of FM in BTOF, cm
68   
69   Int_t fNTOFAlignObj;           //Number of Alignable Objects
70   TGeoManager *fTOFmgr;          //Pointer to TGeoManager
71   TObjArray *fTOFAlignObjArray;  //Pointer to the TOF alignable objects
72   TGeoHMatrix* fTOFMatrixId[18]; //Ideal Matrices of TOF Volumes in the GRS
73   Float_t fCombFMData[72][6];    //Combined survey data
74   Int_t fNFMforSM[18][5];        //Number of FM for each SM
75
76   void AlignFromSurveyABC(Int_t iSM);  //From Survey data of FM ABC, derive the needed transformations to get the Alignment Objects. 
77   void AlignFromSurveyABD(Int_t iSM);  //From Survey data of FM ABD, derive the needed transformations to get the Alignment Objects. 
78   void AlignFromSurveyACD(Int_t iSM);  //From Survey data of FM ACD, derive the needed transformations to get the Alignment Objects. 
79   void AlignFromSurveyBCD(Int_t iSM);  //From Survey data of FM BCD, derive the needed transformations to get the Alignment Objects. 
80
81   ClassDef(AliTOFAlignment,2)   // TOF Alignment 
82 };
83
84 #endif