]>
Commit | Line | Data |
---|---|---|
0ee00e25 | 1 | #ifndef ALIESDTRDTRACK_H |
2 | #define ALIESDTRDTRACK_H | |
3 | ||
52cd0cc0 | 4 | // |
5 | // ESD 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 | ||
52cd0cc0 | 9 | #include "TRef.h" |
10 | ||
3cd717db | 11 | #include "AliVTrdTrack.h" |
52cd0cc0 | 12 | #include "AliESDTrdTracklet.h" |
f01d9069 | 13 | #include "AliESDtrack.h" |
0ee00e25 | 14 | |
3cd717db | 15 | class AliESDTrdTrack : public AliVTrdTrack { |
0ee00e25 | 16 | |
17 | public: | |
18 | ||
19 | AliESDTrdTrack(); | |
52cd0cc0 | 20 | virtual ~AliESDTrdTrack() {}; |
0ee00e25 | 21 | AliESDTrdTrack(const AliESDTrdTrack& track); |
22 | AliESDTrdTrack& operator=(const AliESDTrdTrack& track); | |
732a24fe | 23 | virtual void Copy(TObject &obj) const; |
0ee00e25 | 24 | |
52cd0cc0 | 25 | ULong64_t GetTrackWord(Int_t rev) const; |
26 | ULong64_t GetExtendedTrackWord(Int_t rev) const; | |
27 | ||
28 | Int_t GetA() const { return fA; } | |
29 | Int_t GetB() const { return fB; } | |
30 | Int_t GetC() const { return fC; } | |
31 | Int_t GetY() const { return fY; } | |
32 | Int_t GetLayerMask() const { return fLayerMask; } | |
33 | Int_t GetPID() const { return fPID; } | |
34 | Int_t GetPt() const; | |
35 | Int_t GetStack() const { return fStack; } | |
36 | Int_t GetSector() const { return fSector; } | |
92115562 | 37 | UChar_t GetFlags() const { return fFlags; } |
38 | UChar_t GetFlagsTiming() const { return fFlagsTiming; } | |
39 | Bool_t GetTrackInTime() const { return (fFlagsTiming & 0x1); } | |
52cd0cc0 | 40 | Int_t GetLabel() const { return fLabel; } |
41 | Int_t GetTrackletIndex(const Int_t iLayer) const { return fTrackletIndex[iLayer]; } | |
42 | ||
43 | Double_t Pt() const { return GetPt() / 128.; } | |
44 | Double_t Phi() const { return 0.; }; | |
45 | Double_t Eta() const { return 0.; }; | |
46 | ||
9aa7ebff | 47 | Int_t GetNTracklets() const { |
48 | Int_t count = 0; | |
49 | for (Int_t iLayer = 0; iLayer < 6; ++iLayer) | |
50 | count += (fLayerMask >> iLayer) & 1; | |
51 | return count; | |
52 | } | |
52cd0cc0 | 53 | AliESDTrdTracklet* GetTracklet(Int_t idx) const |
54 | { return (GetLayerMask() & (1<<idx)) ? (AliESDTrdTracklet*) ((fTrackletRefs[idx]).GetObject()) : 0x0; } | |
3cd717db | 55 | AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); } |
52cd0cc0 | 56 | |
57 | void SetA(Int_t a) { fA = a; } | |
58 | void SetB(Int_t b) { fB = b; } | |
59 | void SetC(Int_t c) { fC = c; } | |
60 | void SetY(Int_t y) { fY = y; } | |
61 | void SetLayerMask(Int_t mask) { fLayerMask = mask; } | |
62 | void SetPID(Int_t pid) { fPID = pid; } | |
63 | void SetLabel(Int_t label) { fLabel = label; } | |
64 | void SetSector(Int_t sector) { fSector = sector; } | |
65 | void SetStack(Int_t stack) { fStack = stack; } | |
66 | void SetFlags(Int_t flags) { fFlags = flags; } | |
92115562 | 67 | void SetFlagsTiming(Int_t flags) { fFlagsTiming = flags; } |
52cd0cc0 | 68 | void SetReserved(Int_t res) { fReserved = res; } |
69 | void SetTrackletIndex(const Char_t idx, const Int_t layer) { fTrackletIndex[layer] = idx; } | |
70 | ||
71 | void AddTrackletReference(AliESDTrdTracklet* trkl, Int_t layer) { fTrackletRefs[layer] = trkl; } | |
3cd717db | 72 | void SetTrackMatchReference(AliVTrack *trk) { fTrackMatch = trk; } |
0ee00e25 | 73 | |
3d1168d4 | 74 | Bool_t IsSortable() const { return kTRUE; } |
75 | Int_t Compare(const TObject* obj) const; | |
76 | ||
0ee00e25 | 77 | protected: |
78 | ||
52cd0cc0 | 79 | void AppendBits(ULong64_t &word, Int_t nBits, Int_t val) const { word = (word << nBits) | (val & ~(~0 << nBits)); } |
80 | ||
52cd0cc0 | 81 | Int_t fSector; // sector in which the track was found |
82 | Char_t fStack; // stack in which the track was found | |
83 | // (unique because of stack-wise tracking) | |
84 | Int_t fA; // transverse offset from nominal primary vertex | |
85 | Int_t fB; // slope in transverse plane | |
86 | Short_t fC; // slope in r-z plane | |
87 | Short_t fY; // y position of the track | |
88 | UChar_t fPID; // electron PID for this track | |
89 | Char_t fLayerMask; // mask of contributing tracklets | |
90 | Char_t fTrackletIndex[fgkNlayers]; //[fgkNlayers] index to tracklets | |
91 | UShort_t fFlags; // flags (high-pt, electron, positron) | |
92115562 | 92 | UChar_t fFlagsTiming; // timing flags (track in-time, ...) |
52cd0cc0 | 93 | UChar_t fReserved; // reserved for future use |
cd888a89 | 94 | |
52cd0cc0 | 95 | TRef fTrackletRefs[fgkNlayers]; // references to contributing tracklets |
cd888a89 | 96 | |
f01d9069 | 97 | TRef fTrackMatch; // reference to matched global track |
98 | // to reject TRD tracks from late conversions | |
99 | ||
52cd0cc0 | 100 | Int_t fLabel; // Track label |
0ee00e25 | 101 | |
3cd717db | 102 | ClassDef(AliESDTrdTrack,7) |
0ee00e25 | 103 | }; |
104 | ||
105 | #endif |