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