]>
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: | |
59 | AliMCinfo(); | |
60 | AliMCinfo(const AliMCinfo&); | |
61 | virtual ~AliMCinfo(); | |
62 | AliMCinfo& operator=(const AliMCinfo&); | |
63 | Int_t GetLabel() const {return fLabel;} | |
64 | Int_t GetNTrackRefs() const {return fNTrackRefs;} | |
65 | Int_t GetPDG() const {return fPDG;} | |
303f052c | 66 | //AliTrackReference* const* GetTrackRefIter() const {return &fTrackRefs[0];} |
93e41bce | 67 | protected: |
68 | Int_t fLabel; // MC label | |
69 | Int_t fPDG; // particle code | |
70 | Int_t fNTrackRefs; // number of track refs | |
303f052c | 71 | AliTrackReference *fTrackRefs[kNTrackRefs]; // track refs array |
93e41bce | 72 | ClassDef(AliMCinfo, 1) // MC info related to TRD |
73 | }; | |
74 | ||
814ecea4 | 75 | AliTRDtrackInfo(); |
814ecea4 | 76 | AliTRDtrackInfo(const AliTRDtrackInfo &); |
77 | ~AliTRDtrackInfo(); | |
78 | ||
79 | // void Clear(const Option_t *){} | |
80 | void Delete(const Option_t *); | |
81 | ||
82 | AliTRDtrackInfo& operator=(const AliTRDtrackInfo &); | |
83 | ||
84 | void AddTrackRef(const AliTrackReference *trackRef); | |
85 | ||
93e41bce | 86 | Int_t GetTrackId() { return fESD.fId;} |
87 | const AliESDinfo* GetESDinfo() const { return &fESD; } | |
88 | const AliMCinfo* GetMCinfo() const { return fMC; } | |
814ecea4 | 89 | Int_t GetNumberOfClusters() const; |
90 | Int_t GetNumberOfClustersRefit() const {return fNClusters;} | |
91 | Int_t GetNTracklets() const; | |
93e41bce | 92 | Int_t GetNTrackRefs() const {return fMC ? fMC->fNTrackRefs:0;} |
93 | Int_t GetLabel() const { return fMC ? fMC->fLabel:0; } | |
94 | Int_t GetPDG() const { return fMC ? fMC->fPDG : 0; } | |
95 | ULong_t GetStatus() const {return fESD.fStatus;} | |
abc70aaf | 96 | UChar_t GetTriggerCluster() const {return fTriggerCluster;} |
22a4ab0c | 97 | TString GetTriggerClassName() const {return fTriggerClassName;} |
814ecea4 | 98 | AliTRDseedV1* GetTracklet(Int_t entry) const; |
99 | AliTRDtrackV1 * GetTRDtrack() const { return fTRDtrack; } | |
100 | AliTrackReference* GetTrackRef(Int_t entry) const; | |
101 | AliExternalTrackParam* GetOuterParam() const {return fOP;} | |
102 | ||
103 | Bool_t IsCurved() const {return TestBit(kCurv);} | |
104 | Bool_t IsPrimary() const {return TestBit(kPrim);} | |
105 | Bool_t HasESDtrack() const{return ((fTRDtrack != 0x0) ||(fOP != 0));} | |
93e41bce | 106 | Bool_t HasMCinfo() const { return (Bool_t)fMC; } |
814ecea4 | 107 | |
108 | void SetCurved(Bool_t curv = kTRUE) {SetBit(kCurv, curv);} | |
93e41bce | 109 | void SetLabel(Int_t lab) { SetMC(); fMC->fLabel = lab; } |
814ecea4 | 110 | void SetNumberOfClustersRefit(Int_t n) {fNClusters = n;} |
93e41bce | 111 | inline void SetMC(); |
112 | void SetPDG(Int_t pdg) { SetMC(); fMC->fPDG = pdg; } | |
814ecea4 | 113 | void SetPrimary(Bool_t prim = kTRUE) {SetBit(kPrim, prim);} |
114 | void SetOuterParam(const AliExternalTrackParam *op); | |
93e41bce | 115 | void SetStatus(ULong_t stat) {fESD.fStatus = stat;} |
116 | void SetTrackId(Int_t id) {fESD.fId = id;} | |
abc70aaf | 117 | void SetTriggerCluster(Int_t clusterPattern){fTriggerCluster = clusterPattern;} |
22a4ab0c | 118 | void SetFiredTriggerClass(TString classname){ fTriggerClassName = classname; } |
814ecea4 | 119 | void SetTRDtrack(const AliTRDtrackV1 *track); |
93e41bce | 120 | void SetPidQuality(UChar_t q) { fESD.fTRDpidQuality = q;} |
121 | void SetSlices(Int_t n, Double32_t*); | |
122 | inline void SetResponse(Double32_t *); | |
814ecea4 | 123 | |
124 | private: | |
125 | enum{ | |
4b8f8a35 | 126 | kCurv = 14, |
127 | kPrim = 15 | |
814ecea4 | 128 | }; |
93e41bce | 129 | // this 2 data members have to go to ESD header. |
abc70aaf | 130 | UChar_t fTriggerCluster; // Trigger cluster pattern |
22a4ab0c | 131 | TString fTriggerClassName; // Name of the fired trigger class |
93e41bce | 132 | |
133 | Int_t fNClusters; // Numer of clusters from refit | |
134 | AliTRDtrackV1 *fTRDtrack; // tracklets data array | |
814ecea4 | 135 | AliExternalTrackParam *fOP; // outer param if no tracklets |
93e41bce | 136 | AliMCinfo *fMC; // MC extract for TRD |
137 | AliESDinfo fESD; // ESD extract for TRD | |
814ecea4 | 138 | |
93e41bce | 139 | ClassDef(AliTRDtrackInfo, 2) // TRD track info |
814ecea4 | 140 | }; |
93e41bce | 141 | |
142 | //________________________________________________________ | |
143 | inline void AliTRDtrackInfo::SetMC() | |
144 | { | |
145 | if(!fMC) fMC = new AliMCinfo(); | |
146 | } | |
147 | ||
148 | //________________________________________________________ | |
149 | inline void AliTRDtrackInfo::SetResponse(Double32_t *r) | |
150 | { | |
151 | memcpy(fESD.fTRDr, r, AliPID::kSPECIES*sizeof(Double32_t)); | |
152 | } | |
153 | ||
814ecea4 | 154 | #endif |