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