]>
Commit | Line | Data |
---|---|---|
7442bceb | 1 | #ifndef ALITPCLASERTRACK_H |
2 | #define ALITPCLASERTRACK_H | |
23b18f4e | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
7442bceb | 5 | //////////////////////////////////////////////////////////////////////////// |
6 | // | |
7 | // Surveyed Laser Track positions | |
8 | // | |
9 | //////////////////////////////////////////////////////////////////////////// | |
23b18f4e | 10 | |
11 | #include <TString.h> | |
12 | ||
13 | #include "AliExternalTrackParam.h" | |
e955044f | 14 | #include "TVectorD.h" |
23b18f4e | 15 | |
16 | class TObjArray; | |
17 | ||
18 | ||
19 | ||
20 | class AliTPCLaserTrack : public AliExternalTrackParam { | |
21 | public: | |
7804aba0 | 22 | AliTPCLaserTrack(); |
e955044f | 23 | ~AliTPCLaserTrack(); |
7804aba0 | 24 | AliTPCLaserTrack(const AliTPCLaserTrack <r); |
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); | |
e955044f | 32 | void UpdatePoints(); // update track points |
7804aba0 | 33 | static void LoadTracks(); |
34 | static TObjArray* GetTracks() {return fgArrLaserTracks;} | |
35 | ||
38b1a1ca | 36 | static Int_t IdentifyTrack(AliExternalTrackParam *track, Int_t side=-1); |
7804aba0 | 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 | ||
7442bceb | 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; } | |
7804aba0 | 70 | |
23b18f4e | 71 | private: |
7804aba0 | 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) | |
cc65e4f5 | 80 | //to each mirror [cm](needed for an exact drift velocity estimation) |
e955044f | 81 | public: |
7442bceb | 82 | TVectorD *fVecSec; // - sector numbers |
e955044f | 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: | |
7804aba0 | 92 | static TObjArray* fgArrLaserTracks; //! Array of all Laser Tracks, |
23b18f4e | 93 | // keeps instances of this class; |
7804aba0 | 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 | ||
23b18f4e | 100 | // static const char* fgkDataFileName = "$ALIC_ROOT/TPC/Calib/LaserTracks.root"; //Path to the Data File |
7804aba0 | 101 | |
e955044f | 102 | ClassDef(AliTPCLaserTrack,3) // Laser Track positions and track identification |
23b18f4e | 103 | }; |
104 | ||
105 | #endif | |
106 |