1 #ifndef ALITRDTRACKINFO_H
2 #define ALITRDTRACKINFO_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 /* $Id: AliTRDtrackInfo.h 27496 2008-07-22 08:35:45Z cblume $ */
8 ////////////////////////////////////////////////////////////////////////////
10 // Reconstruction QA //
12 ////////////////////////////////////////////////////////////////////////////
24 class AliTrackReference;
25 class AliExternalTrackParam;
26 class AliTRDtrackInfo : public TObject{
32 friend class AliTRDtrackInfo;
35 AliESDinfo(const AliESDinfo&);
36 virtual ~AliESDinfo();
37 AliESDinfo& operator=(const AliESDinfo&);
39 Int_t GetId() const {return fId;}
40 ULong_t GetStatus() const {return fStatus;}
41 UChar_t GetPidQuality() const {return fTRDpidQuality;}
42 Int_t GetNSlices() const {return fTRDnSlices;}
43 Double32_t* GetSliceIter() const {return fTRDslices;}
44 Double32_t* GetResponseIter() {return &fTRDr[0];}
46 Int_t fId; // ESD track id
47 ULong_t fStatus; // ESD track status
48 Double32_t fTRDr[AliPID::kSPECIES];
49 UChar_t fTRDpidQuality; // TRD PID quality
50 Int_t fTRDnSlices; // number of slices used for PID
51 Double32_t *fTRDslices; //[fTRDnSlices]
53 ClassDef(AliESDinfo, 1) // ESD info related to TRD
57 friend class AliTRDtrackInfo;
59 //typedef AliTrackReference (const* constAliTrackReference);
61 AliMCinfo(const AliMCinfo&);
63 AliMCinfo& operator=(const AliMCinfo&);
64 Int_t GetLabel() const {return fLabel;}
65 Int_t GetNTrackRefs() const {return fNTrackRefs;}
66 Int_t GetPDG() const {return fPDG;}
67 AliTrackReference const* GetTrackRefIter() const {return fTrackRefs[0];}
70 Int_t fLabel; // MC label
71 Int_t fPDG; // particle code
72 Int_t fNTrackRefs; // number of track refs
73 AliTrackReference *fTrackRefs[kNTrackRefs]; // track refs array
74 ClassDef(AliMCinfo, 1) // MC info related to TRD
78 AliTRDtrackInfo(const AliTRDtrackInfo &);
81 // void Clear(const Option_t *){}
82 void Delete(const Option_t *);
84 AliTRDtrackInfo& operator=(const AliTRDtrackInfo &);
86 void AddTrackRef(const AliTrackReference *trackRef);
88 Int_t GetTrackId() { return fESD.fId;}
89 const AliESDinfo* GetESDinfo() const { return &fESD; }
90 const AliMCinfo* GetMCinfo() const { return fMC; }
91 Int_t GetNumberOfClusters() const;
92 Int_t GetNumberOfClustersRefit() const {return fNClusters;}
93 Int_t GetNTracklets() const;
94 Int_t GetNTrackRefs() const {return fMC ? fMC->fNTrackRefs:0;}
95 Int_t GetLabel() const { return fMC ? fMC->fLabel:0; }
96 Int_t GetPDG() const { return fMC ? fMC->fPDG : 0; }
97 ULong_t GetStatus() const {return fESD.fStatus;}
98 AliTRDtrackV1 * GetTrack() const { return fTRDtrack; }
99 AliTrackReference* GetTrackRef(Int_t entry) const;
100 AliExternalTrackParam* GetOuterParam() const {return fOP;}
102 Bool_t IsCurved() const {return TestBit(kCurv);}
103 Bool_t IsPrimary() const {return TestBit(kPrim);}
104 Bool_t HasESDtrack() const{return ((fTRDtrack != 0x0) ||(fOP != 0));}
105 Bool_t HasMCinfo() const { return (Bool_t)fMC; }
107 void SetCurved(Bool_t curv = kTRUE) {SetBit(kCurv, curv);}
108 void SetLabel(Int_t lab) { SetMC(); fMC->fLabel = lab; }
109 void SetNumberOfClustersRefit(Int_t n) {fNClusters = n;}
111 void SetPDG(Int_t pdg) { SetMC(); fMC->fPDG = pdg; }
112 void SetPrimary(Bool_t prim = kTRUE) {SetBit(kPrim, prim);}
113 void SetOuterParam(const AliExternalTrackParam *op);
114 void SetStatus(ULong_t stat) {fESD.fStatus = stat;}
115 void SetTrackId(Int_t id) {fESD.fId = id;}
116 void SetTRDtrack(const AliTRDtrackV1 *track);
117 void SetPidQuality(UChar_t q) { fESD.fTRDpidQuality = q;}
118 void SetSlices(Int_t n, Double32_t*);
119 inline void SetResponse(Double32_t *);
126 // this 2 data members have to go to ESD header.
127 Int_t fNClusters; // Numer of clusters from refit
128 AliTRDtrackV1 *fTRDtrack; // tracklets data array
129 AliExternalTrackParam *fOP; // outer param if no tracklets
130 AliMCinfo *fMC; // MC extract for TRD
131 AliESDinfo fESD; // ESD extract for TRD
133 ClassDef(AliTRDtrackInfo, 2) // TRD track info
136 //________________________________________________________
137 inline void AliTRDtrackInfo::SetMC()
139 if(!fMC) fMC = new AliMCinfo();
142 //________________________________________________________
143 inline void AliTRDtrackInfo::SetResponse(Double32_t *r)
145 memcpy(fESD.fTRDr, r, AliPID::kSPECIES*sizeof(Double32_t));