]>
Commit | Line | Data |
---|---|---|
9aa7ebff | 1 | #ifndef ALIAODTRDTRACK_H |
2 | #define ALIAODTRDTRACK_H | |
3 | ||
4 | // | |
5 | // format for the TRD tracks calculated in the | |
6 | // Global Tracking Unit, used for the TRD L1 trigger | |
7 | // Author: Jochen Klein <jochen.klein@cern.ch> | |
8 | ||
9 | #include "TRef.h" | |
10 | #include "TClonesArray.h" | |
11 | #include "AliVTrack.h" | |
12 | #include "AliVTrdTrack.h" | |
13 | #include "AliAODTrdTracklet.h" | |
14 | ||
15 | class AliAODTrdTrack : public AliVTrdTrack { | |
16 | public: | |
17 | ||
18 | AliAODTrdTrack(); | |
19 | AliAODTrdTrack(const AliVTrdTrack &rhs); | |
20 | virtual ~AliAODTrdTrack() {}; | |
21 | AliAODTrdTrack(const AliAODTrdTrack& track); | |
22 | AliAODTrdTrack& operator=(const AliAODTrdTrack& track); | |
23 | virtual void Copy(TObject &obj) const; | |
24 | ||
25 | virtual Int_t GetA() const { return fA; } | |
26 | virtual Int_t GetLayerMask() const { return fLayerMask; } | |
27 | virtual Int_t GetPID() const { return fPID; } | |
28 | virtual Int_t GetPt() const; | |
29 | virtual Int_t GetStack() const { return fGlobalStack%5; } | |
30 | virtual Int_t GetSector() const { return fGlobalStack/5; } | |
31 | ||
32 | virtual Bool_t GetTrackInTime() const { return (fFlagsTiming & 0x1); } | |
33 | virtual UChar_t GetFlagsTiming() const { return fFlagsTiming; } | |
34 | ||
35 | virtual Int_t GetLabel() const { return fLabel; } | |
36 | ||
37 | virtual Double_t Pt() const { return GetPt() / 128.; } | |
38 | ||
39 | Int_t GetNTracklets() const { | |
40 | Int_t count = 0; | |
41 | for (Int_t iLayer = 0; iLayer < 6; ++iLayer) | |
42 | count += (fLayerMask >> iLayer) & 1; | |
43 | return count; | |
44 | } | |
45 | virtual AliAODTrdTracklet* GetTracklet(Int_t idx) const { return (AliAODTrdTracklet*) fTracklets[idx]; } | |
46 | ||
0a91069b | 47 | virtual AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); } |
9aa7ebff | 48 | |
49 | virtual void SetA(Int_t a) { fA = a; } | |
50 | virtual void SetLayerMask(Int_t mask) { fLayerMask = mask; } | |
51 | virtual void SetPID(Int_t pid) { fPID = pid; } | |
52 | virtual void SetLabel(Int_t label) { fLabel = label; } | |
53 | virtual void SetSector(Int_t sector) { fGlobalStack = 5*sector + (fGlobalStack%5); } | |
54 | virtual void SetStack(Int_t stack) { fGlobalStack = 5*(fGlobalStack%5) + stack; } | |
55 | ||
56 | void AddTracklet(const AliVTrdTracklet& trkl, Int_t layer) { new (fTracklets[layer]) AliAODTrdTracklet(trkl); } | |
57 | void SetTrackMatchReference(AliVTrack *trk) { fTrackMatch = trk; } | |
58 | ||
59 | virtual Bool_t IsSortable() const { return kFALSE; } | |
60 | virtual Int_t Compare(const TObject* /* obj */) const { return 0; } | |
61 | ||
62 | protected: | |
63 | ||
64 | Char_t fGlobalStack; // stack (0-89) in which the track was found | |
65 | // (unique because of stack-wise tracking) | |
66 | UChar_t fPID; // electron PID for this track | |
67 | UChar_t fLayerMask; // mask of contributing tracklets | |
68 | Int_t fA; // transverse offset from nominal primary vertex | |
69 | UChar_t fFlagsTiming; // timing flags | |
70 | ||
71 | TClonesArray fTracklets; // array of contributing tracklets | |
72 | TRef fTrackMatch; // reference to matched global track | |
73 | ||
74 | Int_t fLabel; // Track label | |
75 | ||
76 | ClassDef(AliAODTrdTrack,1) | |
77 | }; | |
78 | ||
79 | #endif |