15 minutes interval for calculation of drift correction
[u/mrichter/AliRoot.git] / TPC / AliTPCLaserTracks.h
1 #ifndef ALITPCLASERTRACKS_H
2 #define ALITPCLASERTRACKS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 ////////////////////////////////////////////////////////////////////////////
7 //              Container class for laser track positions                 //
8 ////////////////////////////////////////////////////////////////////////////
9
10 class TString;
11 class TPolyLine3D;
12 class TObjArray;
13 class TGraph;
14 class TVector3;
15
16
17 ////////////////////////////////////////////////////////////////////////
18 //              Class AliTPCLaserTracks
19 ////////////////////////////////////////////////////////////////////////
20 class AliTPCLaserTracks : public TObject {
21
22 public:
23     AliTPCLaserTracks();
24     AliTPCLaserTracks(Int_t npoints);
25     virtual ~AliTPCLaserTracks();
26     AliTPCLaserTracks(const AliTPCLaserTracks &param); // copy constructor
27     AliTPCLaserTracks &operator = (const AliTPCLaserTracks & param);
28
29     Int_t GetId()    const {return fId;     }
30     Int_t GetSide()  const {return fSide;   }
31     Int_t GetRod()   const {return fRod;    }
32     Int_t GetBundle() const {return fBundle; }
33     Int_t GetBeam()  const {return fBeam;   }
34
35     Double_t GetX()  const  {return fX;    }
36     Double_t GetY()  const   {return fY;    }
37     Double_t GetZ()  const  {return fZ;    }
38     Double_t GetPhi() const  {return fPhi;  }
39     Double_t GetTheta() const{return fTheta;}
40
41     TPolyLine3D *GetLine();
42     Int_t SetPoint(Int_t point, Double_t x, Double_t y, Double_t z);
43
44
45
46     void SetId    (Int_t id)    {fId     = id;    }
47     void SetSide  (Int_t side)  {fSide   = side;  }
48     void SetRod   (Int_t rod)   {fRod    = rod;   }
49     void SetBundle(Int_t bundle){fBundle = bundle;}
50     void SetBeam  (Int_t beam)  {fBeam   = beam;  }
51
52     void SetX    (Double_t x)    {fX     = x;    }
53     void SetY    (Double_t y)    {fY     = y;    }
54     void SetZ    (Double_t z)    {fZ     = z;    }
55     void SetPhi  (Double_t phi)  {fPhi   = phi;  }
56     void SetTheta(Double_t theta){fTheta = theta;}
57
58 //    void SetLine(TPolyLine3D *l) {fLine  = l;    }
59
60     void WriteTreeDesignData();
61
62     Int_t FindMirror(Char_t *file, Double_t x, Double_t y, Double_t z, Double_t phi);
63
64     TObjArray* GetLines(const Char_t* file, const Char_t *cuts="");
65
66 protected:
67     Int_t fId;              //Laser beam id            (0-335)
68     Int_t fSide;            //TPC side; 0:Shaft Side (A) -- 1:Muon Side (C)
69     Int_t fRod;             //Laser Rod                (0-5)
70     Int_t fBundle;          //Mirror bundle in the Rod (0-3)
71     Int_t fBeam;            //Laser Beam in the bundle (0-6)
72
73     Double_t fX;             //X-position of the mirror in the bundle
74     Double_t fY;             //Y-position of the mirror in the bundle
75     Double_t fZ;             //Z-position of the mirror in the bundle
76     Double_t fTime;          //time-position of the mirror in the bundle
77     Double_t fPhi;           //Phi direction of the laser beam
78     Double_t fTheta;         //Theta direction of the laser beam
79
80 //    TPolyLine3D *fLine;      //Line of the track in the TPC
81     Int_t fMaxSize;          //! Number of points in array
82     Int_t fNpoints;          //Number of points
83
84     Double_t  *fXarr;            //[fNpoints] array of a line (x,y,z)
85     Double_t  *fYarr;            //[fNpoints] array of a line (x,y,z)
86     Double_t  *fZarr;            //[fNpoints] array of a line (x,y,z)
87
88     void InitPoints();
89
90     Double_t FindBeamLength(TVector3 vS, TVector3 vP);
91
92     ClassDef(AliTPCLaserTracks,1)
93 };
94
95
96
97 #endif
98