]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h
Fix the definition of the radial interval for TRD
[u/mrichter/AliRoot.git] / TRD / qaRec / AliTRDtrackInfo / AliTRDtrackInfo.h
CommitLineData
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 22class AliTRDseedV1;
23class AliTRDtrackV1;
24class AliTrackReference;
25class AliExternalTrackParam;
26class AliTRDtrackInfo : public TObject{
27public:
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
124private:
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//________________________________________________________
143inline void AliTRDtrackInfo::SetMC()
144{
145 if(!fMC) fMC = new AliMCinfo();
146}
147
148//________________________________________________________
149inline void AliTRDtrackInfo::SetResponse(Double32_t *r)
150{
151 memcpy(fESD.fTRDr, r, AliPID::kSPECIES*sizeof(Double32_t));
152}
153
814ecea4 154#endif