Line data Source code
1 : #ifndef ALIESDTRDTRACK_H
2 : #define ALIESDTRDTRACK_H
3 :
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 :
9 : #include "TRef.h"
10 :
11 : #include "AliVTrdTrack.h"
12 : #include "AliESDTrdTracklet.h"
13 : #include "AliESDtrack.h"
14 :
15 : class AliESDTrdTrack : public AliVTrdTrack {
16 :
17 : public:
18 :
19 : AliESDTrdTrack();
20 75452 : virtual ~AliESDTrdTrack() {};
21 : AliESDTrdTrack(const AliESDTrdTrack& track);
22 : AliESDTrdTrack& operator=(const AliESDTrdTrack& track);
23 : virtual void Copy(TObject &obj) const;
24 :
25 : ULong64_t GetTrackWord(Int_t rev) const;
26 : ULong64_t GetExtendedTrackWord(Int_t rev) const;
27 :
28 9336 : Int_t GetA() const { return fA; }
29 0 : Int_t GetB() const { return fB; }
30 0 : Int_t GetC() const { return fC; }
31 0 : Int_t GetY() const { return fY; }
32 77202 : Int_t GetLayerMask() const { return fLayerMask; }
33 4638 : Int_t GetPID() const { return fPID; }
34 : Int_t GetPt() const;
35 27828 : Int_t GetStack() const { return fStack; }
36 47110 : Int_t GetSector() const { return fSector; }
37 0 : UChar_t GetFlags() const { return fFlags; }
38 4638 : UChar_t GetFlagsTiming() const { return fFlagsTiming; }
39 0 : Bool_t GetTrackInTime() const { return (fFlagsTiming & 0x1); }
40 4638 : Int_t GetLabel() const { return fLabel; }
41 146 : Int_t GetTrackletIndex(const Int_t iLayer) const { return fTrackletIndex[iLayer]; }
42 :
43 4638 : Double_t Pt() const { return GetPt() / 128.; }
44 0 : Double_t Phi() const { return 0.; };
45 0 : Double_t Eta() const { return 0.; };
46 :
47 : Int_t GetNTracklets() const {
48 : Int_t count = 0;
49 0 : for (Int_t iLayer = 0; iLayer < 6; ++iLayer)
50 0 : count += (fLayerMask >> iLayer) & 1;
51 0 : return count;
52 : }
53 : AliESDTrdTracklet* GetTracklet(Int_t idx) const
54 102282 : { return (GetLayerMask() & (1<<idx)) ? (AliESDTrdTracklet*) ((fTrackletRefs[idx]).GetObject()) : 0x0; }
55 9276 : AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); }
56 :
57 4638 : void SetA(Int_t a) { fA = a; }
58 4638 : void SetB(Int_t b) { fB = b; }
59 30 : void SetC(Int_t c) { fC = c; }
60 0 : void SetY(Int_t y) { fY = y; }
61 4638 : void SetLayerMask(Int_t mask) { fLayerMask = mask; }
62 4638 : void SetPID(Int_t pid) { fPID = pid; }
63 4638 : void SetLabel(Int_t label) { fLabel = label; }
64 4638 : void SetSector(Int_t sector) { fSector = sector; }
65 4638 : void SetStack(Int_t stack) { fStack = stack; }
66 4616 : void SetFlags(Int_t flags) { fFlags = flags; }
67 0 : void SetFlagsTiming(Int_t flags) { fFlagsTiming = flags; }
68 4608 : void SetReserved(Int_t res) { fReserved = res; }
69 27794 : void SetTrackletIndex(const Char_t idx, const Int_t layer) { fTrackletIndex[layer] = idx; }
70 :
71 146 : void AddTrackletReference(AliESDTrdTracklet* trkl, Int_t layer) { fTrackletRefs[layer] = trkl; }
72 4638 : void SetTrackMatchReference(AliVTrack *trk) { fTrackMatch = trk; }
73 :
74 0 : Bool_t IsSortable() const { return kTRUE; }
75 : Int_t Compare(const TObject* obj) const;
76 :
77 : protected:
78 :
79 0 : void AppendBits(ULong64_t &word, Int_t nBits, Int_t val) const { word = (word << nBits) | (val & ~(~0 << nBits)); }
80 :
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)
92 : UChar_t fFlagsTiming; // timing flags (track in-time, ...)
93 : UChar_t fReserved; // reserved for future use
94 :
95 : TRef fTrackletRefs[fgkNlayers]; // references to contributing tracklets
96 :
97 : TRef fTrackMatch; // reference to matched global track
98 : // to reject TRD tracks from late conversions
99 :
100 : Int_t fLabel; // Track label
101 :
102 184 : ClassDef(AliESDTrdTrack,7)
103 : };
104 :
105 : #endif
|