]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AOD/AliAODTrdTrack.h
AliAODEvent::GetHeader now return AliVHeader
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrdTrack.h
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
47   virtual AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); }
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