]>
Commit | Line | Data |
---|---|---|
814ecea4 | 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 */ | |
5 | ||
6 | /* $Id: AliTRDtrackInfo.h 27496 2008-07-22 08:35:45Z cblume $ */ | |
7 | ||
8 | //////////////////////////////////////////////////////////////////////////// | |
9 | // // | |
10 | // Reconstruction QA // | |
11 | // // | |
12 | //////////////////////////////////////////////////////////////////////////// | |
13 | ||
14 | #ifndef Root_TObject | |
15 | #include "TObject.h" | |
16 | #endif | |
17 | ||
93e41bce | 18 | #ifndef ALIPID_H |
19 | #include "AliPID.h" | |
20 | #endif | |
21 | ||
814ecea4 | 22 | class AliTRDseedV1; |
23 | class AliTRDtrackV1; | |
24 | class AliTrackReference; | |
25 | class AliExternalTrackParam; | |
26 | class AliTRDtrackInfo : public TObject{ | |
27 | public: | |
303f052c | 28 | enum{ |
29 | kNTrackRefs = 12 | |
30 | }; | |
93e41bce | 31 | class AliESDinfo{ |
32 | friend class AliTRDtrackInfo; | |
33 | public: | |
34 | AliESDinfo(); | |
35 | AliESDinfo(const AliESDinfo&); | |
36 | virtual ~AliESDinfo(); | |
37 | AliESDinfo& operator=(const AliESDinfo&); | |
38 | ||
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];} | |
45 | protected: | |
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] | |
52 | ||
53 | ClassDef(AliESDinfo, 1) // ESD info related to TRD | |
54 | }; | |
55 | ||
56 | class AliMCinfo{ | |
57 | friend class AliTRDtrackInfo; | |
58 | public: | |
b718144c | 59 | //typedef AliTrackReference (const* constAliTrackReference); |
93e41bce | 60 | AliMCinfo(); |
61 | AliMCinfo(const AliMCinfo&); | |
62 | virtual ~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;} | |
b718144c | 67 | AliTrackReference const* GetTrackRefIter() const {return fTrackRefs[0];} |
68 | ||
93e41bce | 69 | protected: |
70 | Int_t fLabel; // MC label | |
71 | Int_t fPDG; // particle code | |
72 | Int_t fNTrackRefs; // number of track refs | |
303f052c | 73 | AliTrackReference *fTrackRefs[kNTrackRefs]; // track refs array |
93e41bce | 74 | ClassDef(AliMCinfo, 1) // MC info related to TRD |
75 | }; | |
76 | ||
814ecea4 | 77 | AliTRDtrackInfo(); |
814ecea4 | 78 | AliTRDtrackInfo(const AliTRDtrackInfo &); |
79 | ~AliTRDtrackInfo(); | |
80 | ||
81 | // void Clear(const Option_t *){} | |
82 | void Delete(const Option_t *); | |
83 | ||
84 | AliTRDtrackInfo& operator=(const AliTRDtrackInfo &); | |
85 | ||
86 | void AddTrackRef(const AliTrackReference *trackRef); | |
87 | ||
93e41bce | 88 | Int_t GetTrackId() { return fESD.fId;} |
89 | const AliESDinfo* GetESDinfo() const { return &fESD; } | |
90 | const AliMCinfo* GetMCinfo() const { return fMC; } | |
814ecea4 | 91 | Int_t GetNumberOfClusters() const; |
92 | Int_t GetNumberOfClustersRefit() const {return fNClusters;} | |
93 | Int_t GetNTracklets() const; | |
93e41bce | 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;} | |
b718144c | 98 | AliTRDtrackV1 * GetTrack() const { return fTRDtrack; } |
814ecea4 | 99 | AliTrackReference* GetTrackRef(Int_t entry) const; |
100 | AliExternalTrackParam* GetOuterParam() const {return fOP;} | |
101 | ||
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));} | |
93e41bce | 105 | Bool_t HasMCinfo() const { return (Bool_t)fMC; } |
814ecea4 | 106 | |
107 | void SetCurved(Bool_t curv = kTRUE) {SetBit(kCurv, curv);} | |
93e41bce | 108 | void SetLabel(Int_t lab) { SetMC(); fMC->fLabel = lab; } |
814ecea4 | 109 | void SetNumberOfClustersRefit(Int_t n) {fNClusters = n;} |
93e41bce | 110 | inline void SetMC(); |
111 | void SetPDG(Int_t pdg) { SetMC(); fMC->fPDG = pdg; } | |
814ecea4 | 112 | void SetPrimary(Bool_t prim = kTRUE) {SetBit(kPrim, prim);} |
113 | void SetOuterParam(const AliExternalTrackParam *op); | |
93e41bce | 114 | void SetStatus(ULong_t stat) {fESD.fStatus = stat;} |
115 | void SetTrackId(Int_t id) {fESD.fId = id;} | |
814ecea4 | 116 | void SetTRDtrack(const AliTRDtrackV1 *track); |
93e41bce | 117 | void SetPidQuality(UChar_t q) { fESD.fTRDpidQuality = q;} |
118 | void SetSlices(Int_t n, Double32_t*); | |
119 | inline void SetResponse(Double32_t *); | |
814ecea4 | 120 | |
121 | private: | |
122 | enum{ | |
4b8f8a35 | 123 | kCurv = 14, |
124 | kPrim = 15 | |
814ecea4 | 125 | }; |
93e41bce | 126 | // this 2 data members have to go to ESD header. |
93e41bce | 127 | Int_t fNClusters; // Numer of clusters from refit |
128 | AliTRDtrackV1 *fTRDtrack; // tracklets data array | |
814ecea4 | 129 | AliExternalTrackParam *fOP; // outer param if no tracklets |
93e41bce | 130 | AliMCinfo *fMC; // MC extract for TRD |
131 | AliESDinfo fESD; // ESD extract for TRD | |
814ecea4 | 132 | |
93e41bce | 133 | ClassDef(AliTRDtrackInfo, 2) // TRD track info |
814ecea4 | 134 | }; |
93e41bce | 135 | |
136 | //________________________________________________________ | |
137 | inline void AliTRDtrackInfo::SetMC() | |
138 | { | |
139 | if(!fMC) fMC = new AliMCinfo(); | |
140 | } | |
141 | ||
142 | //________________________________________________________ | |
143 | inline void AliTRDtrackInfo::SetResponse(Double32_t *r) | |
144 | { | |
145 | memcpy(fESD.fTRDr, r, AliPID::kSPECIES*sizeof(Double32_t)); | |
146 | } | |
147 | ||
814ecea4 | 148 | #endif |