During simulation: fill STU region w/ non null time sums
[u/mrichter/AliRoot.git] / TPC / AliTPCLaserTrack.h
1 #ifndef ALITPCLASERTRACK_H
2 #define ALITPCLASERTRACK_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 ////////////////////////////////////////////////////////////////////////////
6 //
7 // Surveyed Laser Track positions
8 //
9 ////////////////////////////////////////////////////////////////////////////
10
11 #include <TString.h>
12
13 #include "AliExternalTrackParam.h"
14 #include "TVectorD.h"
15
16 class TObjArray;
17
18
19
20 class AliTPCLaserTrack : public AliExternalTrackParam {
21 public:
22   AliTPCLaserTrack();
23   ~AliTPCLaserTrack();
24   AliTPCLaserTrack(const AliTPCLaserTrack &ltr);
25   AliTPCLaserTrack(const Int_t id, const Int_t side, const Int_t rod,
26                    const Int_t bundle, const Int_t beam,
27                    Double_t x, Double_t alpha,
28                    const Double_t param[5],
29                    const Double_t covar[15], const Float_t rayLength=0);
30   
31   AliTPCLaserTrack& operator = (const  AliTPCLaserTrack &source);
32   void UpdatePoints();   // update track points
33   static void LoadTracks();
34   static TObjArray* GetTracks() {return fgArrLaserTracks;}
35   
36   static Int_t IdentifyTrack(AliExternalTrackParam *track, Int_t side=-1);
37   
38   Int_t GetId()     const {return fId;     }
39   Int_t GetSide()   const {return fSide;   }
40   Int_t GetRod()    const {return fRod;    }
41   Int_t GetBundle() const {return fBundle; }
42   Int_t GetBeam()   const {return fBeam;   }
43
44   Float_t GetRayLength() const {return fRayLength;}
45   
46   
47   
48   static Int_t GetNLaserTracks() { return fgkNLaserTracks; }
49   static Int_t GetNLaserRodsPerSide() { return fgkNRodsPerSide; }
50   static Int_t GetNMirrorBundlesPerRod() { return fgkNBundlePerRod; }
51   static Int_t GetNLaserRaysPerMirrorBundle() { return fgkNBeamsPerBundle; }
52   
53   
54   void SetId    (Int_t id)    {fId     = id;    }
55   void SetSide  (Int_t side)  {fSide   = side;  }
56   void SetRod   (Int_t rod)   {fRod    = rod;   }
57   void SetBundle(Int_t bundle){fBundle = bundle;}
58   void SetBeam  (Int_t beam)  {fBeam   = beam;  }
59   void SetRayLength (Float_t len) {fRayLength = len;}
60   
61   const TVectorD* GetVecSec() const { return fVecSec; }
62   const TVectorD* GetVecP2()  const { return fVecP2;  }
63   const TVectorD* GetVecPhi() const { return fVecPhi; }
64   const TVectorD* GetVecGX()  const { return fVecGX;  }
65   const TVectorD* GetVecGY()  const { return fVecGY;  }
66   const TVectorD* GetVecGZ()  const { return fVecGZ;  }
67   const TVectorD* GetVecLX()  const { return fVecLX;  }
68   const TVectorD* GetVecLY()  const { return fVecLY;  }
69   const TVectorD* GetVecLZ()  const { return fVecLZ;  }
70   
71 private:
72   Int_t fId;              //Laser beam id            (0-335)
73   Int_t fSide;            //TPC side; 0:Shaft Side (A) -- 1:Muon Side (C)
74   Int_t fRod;             //Laser Rod                (0-5)
75   Int_t fBundle;          //Mirror bundle in the Rod (0-3)
76   Int_t fBeam;            //Laser Beam in the bundle (0-6)
77   
78   Float_t fRayLength;     //distance from the last common point of the laser Rays
79                           //(Splitter box on the A-Side at the bottom of the TPC)
80                           //to each mirror [cm](needed for an exact drift velocity estimation)
81 public:
82   TVectorD *fVecSec;      //                - sector numbers
83   TVectorD *fVecP2;       //                - P2  
84   TVectorD *fVecPhi;       //               - global phi
85   TVectorD *fVecGX;       // points vectors - globalX
86   TVectorD *fVecGY;       // points vectors - globalY
87   TVectorD *fVecGZ;       // points vectors - globalZ
88   TVectorD *fVecLX;       // points vectors - localX
89   TVectorD *fVecLY;       // points vectors - localY
90   TVectorD *fVecLZ;       // points vectors - localZ
91 private:  
92   static TObjArray* fgArrLaserTracks; //! Array of all Laser Tracks,
93                                         //  keeps instances of this class;
94   
95   static const Int_t fgkNLaserTracks    = 336; //Number of laser tracks
96   static const Int_t fgkNRodsPerSide    = 6;   //Number of laser rods on each readout side
97   static const Int_t fgkNBundlePerRod   = 4;   //Number of mirror bundles per rod
98   static const Int_t fgkNBeamsPerBundle = 7;   //Number of laser rays per bundle
99   
100 //    static const char* fgkDataFileName = "$ALIC_ROOT/TPC/Calib/LaserTracks.root";  //Path to the Data File
101   
102   ClassDef(AliTPCLaserTrack,3)        // Laser Track positions and track identification
103 };
104
105 #endif
106