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 */
8 #include "AliExternalTrackParam.h"
15 class AliTPCLaserTrack : public AliExternalTrackParam {
19 AliTPCLaserTrack(const AliTPCLaserTrack <r);
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);
26 AliTPCLaserTrack& operator = (const AliTPCLaserTrack &source);
27 void UpdatePoints(); // update track points
28 static void LoadTracks();
29 static TObjArray* GetTracks() {return fgArrLaserTracks;}
31 static Int_t IdentifyTrack(AliExternalTrackParam *track, Int_t side=-1);
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; }
39 Float_t GetRayLength() const {return fRayLength;}
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; }
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;}
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)
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)
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
78 static TObjArray* fgArrLaserTracks; //! Array of all Laser Tracks,
79 // keeps instances of this class;
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
86 // static const char* fgkDataFileName = "$ALIC_ROOT/TPC/Calib/LaserTracks.root"; //Path to the Data File
88 ClassDef(AliTPCLaserTrack,3) // Laser Track positions and track identification