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