Line data Source code
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 13926 : virtual ~AliAODTrdTrack() {};
21 : AliAODTrdTrack(const AliAODTrdTrack& track);
22 : AliAODTrdTrack& operator=(const AliAODTrdTrack& track);
23 : virtual void Copy(TObject &obj) const;
24 :
25 0 : virtual Int_t GetA() const { return fA; }
26 0 : virtual Int_t GetLayerMask() const { return fLayerMask; }
27 0 : virtual Int_t GetPID() const { return fPID; }
28 : virtual Int_t GetPt() const;
29 0 : virtual Int_t GetStack() const { return fGlobalStack%5; }
30 0 : virtual Int_t GetSector() const { return fGlobalStack/5; }
31 :
32 0 : virtual Bool_t GetTrackInTime() const { return (fFlagsTiming & 0x1); }
33 0 : virtual UChar_t GetFlagsTiming() const { return fFlagsTiming; }
34 :
35 0 : virtual Int_t GetLabel() const { return fLabel; }
36 :
37 0 : virtual Double_t Pt() const { return GetPt() / 128.; }
38 :
39 : Int_t GetNTracklets() const {
40 : Int_t count = 0;
41 0 : for (Int_t iLayer = 0; iLayer < 6; ++iLayer)
42 0 : count += (fLayerMask >> iLayer) & 1;
43 0 : return count;
44 : }
45 0 : virtual AliAODTrdTracklet* GetTracklet(Int_t idx) const { return (AliAODTrdTracklet*) fTracklets[idx]; }
46 :
47 0 : virtual AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); }
48 :
49 0 : virtual void SetA(Int_t a) { fA = a; }
50 0 : virtual void SetLayerMask(Int_t mask) { fLayerMask = mask; }
51 0 : virtual void SetPID(Int_t pid) { fPID = pid; }
52 0 : virtual void SetLabel(Int_t label) { fLabel = label; }
53 0 : virtual void SetSector(Int_t sector) { fGlobalStack = 5*sector + (fGlobalStack%5); }
54 0 : virtual void SetStack(Int_t stack) { fGlobalStack = 5*(fGlobalStack%5) + stack; }
55 :
56 219 : void AddTracklet(const AliVTrdTracklet& trkl, Int_t layer) { new (fTracklets[layer]) AliAODTrdTracklet(trkl); }
57 4638 : void SetTrackMatchReference(AliVTrack *trk) { fTrackMatch = trk; }
58 :
59 0 : virtual Bool_t IsSortable() const { return kFALSE; }
60 0 : 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 178 : ClassDef(AliAODTrdTrack,1)
77 : };
78 :
79 : #endif
|