#ifndef ALITPCLASERTRACK_H
#define ALITPCLASERTRACK_H
#include <TString.h>
#include "AliExternalTrackParam.h"
#include "TVectorD.h"
class TObjArray;
class AliTPCLaserTrack : public AliExternalTrackParam {
public:
AliTPCLaserTrack();
~AliTPCLaserTrack();
AliTPCLaserTrack(const AliTPCLaserTrack <r);
AliTPCLaserTrack(const Int_t id, const Int_t side, const Int_t rod,
const Int_t bundle, const Int_t beam,
Double_t x, Double_t alpha,
const Double_t param[5],
const Double_t covar[15], const Float_t rayLength=0);
AliTPCLaserTrack& operator = (const AliTPCLaserTrack &source);
void UpdatePoints();
static void LoadTracks();
static TObjArray* GetTracks() {return fgArrLaserTracks;}
static Int_t IdentifyTrack(AliExternalTrackParam *track, Int_t side=-1);
Int_t GetId() const {return fId; }
Int_t GetSide() const {return fSide; }
Int_t GetRod() const {return fRod; }
Int_t GetBundle() const {return fBundle; }
Int_t GetBeam() const {return fBeam; }
Float_t GetRayLength() const {return fRayLength;}
static Int_t GetNLaserTracks() { return fgkNLaserTracks; }
static Int_t GetNLaserRodsPerSide() { return fgkNRodsPerSide; }
static Int_t GetNMirrorBundlesPerRod() { return fgkNBundlePerRod; }
static Int_t GetNLaserRaysPerMirrorBundle() { return fgkNBeamsPerBundle; }
void SetId (Int_t id) {fId = id; }
void SetSide (Int_t side) {fSide = side; }
void SetRod (Int_t rod) {fRod = rod; }
void SetBundle(Int_t bundle){fBundle = bundle;}
void SetBeam (Int_t beam) {fBeam = beam; }
void SetRayLength (Float_t len) {fRayLength = len;}
const TVectorD* GetVecSec() const { return fVecSec; }
const TVectorD* GetVecP2() const { return fVecP2; }
const TVectorD* GetVecPhi() const { return fVecPhi; }
const TVectorD* GetVecGX() const { return fVecGX; }
const TVectorD* GetVecGY() const { return fVecGY; }
const TVectorD* GetVecGZ() const { return fVecGZ; }
const TVectorD* GetVecLX() const { return fVecLX; }
const TVectorD* GetVecLY() const { return fVecLY; }
const TVectorD* GetVecLZ() const { return fVecLZ; }
private:
Int_t fId;
Int_t fSide;
Int_t fRod;
Int_t fBundle;
Int_t fBeam;
Float_t fRayLength;
public:
TVectorD *fVecSec;
TVectorD *fVecP2;
TVectorD *fVecPhi;
TVectorD *fVecGX;
TVectorD *fVecGY;
TVectorD *fVecGZ;
TVectorD *fVecLX;
TVectorD *fVecLY;
TVectorD *fVecLZ;
private:
static TObjArray* fgArrLaserTracks;
static const Int_t fgkNLaserTracks = 336;
static const Int_t fgkNRodsPerSide = 6;
static const Int_t fgkNBundlePerRod = 4;
static const Int_t fgkNBeamsPerBundle = 7;
ClassDef(AliTPCLaserTrack,3)
};
#endif