ROOT logo
#ifndef ALIAODTRDTRACK_H
#define ALIAODTRDTRACK_H

//
// format for the TRD tracks calculated in the
// Global Tracking Unit, used for the TRD L1 trigger
// Author: Jochen Klein <jochen.klein@cern.ch>

#include "TRef.h"
#include "TClonesArray.h"
#include "AliVTrack.h"
#include "AliVTrdTrack.h"
#include "AliAODTrdTracklet.h"

class AliAODTrdTrack : public AliVTrdTrack {
 public:

  AliAODTrdTrack();
  AliAODTrdTrack(const AliVTrdTrack &rhs);
  virtual ~AliAODTrdTrack() {};
  AliAODTrdTrack(const AliAODTrdTrack& track);
  AliAODTrdTrack& operator=(const AliAODTrdTrack& track);
  virtual void Copy(TObject &obj) const;

  virtual Int_t GetA()         const { return fA; }
  virtual Int_t GetLayerMask() const { return fLayerMask; }
  virtual Int_t GetPID()       const { return fPID; }
  virtual Int_t GetPt()        const;
  virtual Int_t GetStack()     const { return fGlobalStack%5; }
  virtual Int_t GetSector()    const { return fGlobalStack/5; }

  virtual Bool_t GetTrackInTime() const { return (fFlagsTiming & 0x1); }
  virtual UChar_t GetFlagsTiming() const { return fFlagsTiming; }

  virtual Int_t GetLabel()     const { return fLabel; }

  virtual Double_t Pt()        const { return GetPt() / 128.; }

  Int_t GetNTracklets() const {
    Int_t count = 0;
    for (Int_t iLayer = 0; iLayer < 6; ++iLayer)
      count += (fLayerMask >> iLayer) & 1;
    return count;
  }
  virtual AliAODTrdTracklet* GetTracklet(Int_t idx) const { return (AliAODTrdTracklet*) fTracklets[idx]; }

  virtual AliVTrack* GetTrackMatch() const { return (AliVTrack*) fTrackMatch.GetObject(); }

  virtual void SetA(Int_t a) { fA = a; }
  virtual void SetLayerMask(Int_t mask) { fLayerMask = mask; }
  virtual void SetPID(Int_t pid) { fPID = pid; }
  virtual void SetLabel(Int_t label) { fLabel = label; }
  virtual void SetSector(Int_t sector) { fGlobalStack = 5*sector + (fGlobalStack%5); }
  virtual void SetStack(Int_t stack) { fGlobalStack = 5*(fGlobalStack%5) + stack; }

  void AddTracklet(const AliVTrdTracklet& trkl, Int_t layer) { new (fTracklets[layer]) AliAODTrdTracklet(trkl); }
  void SetTrackMatchReference(AliVTrack *trk) { fTrackMatch = trk; }

  virtual Bool_t IsSortable() const { return kFALSE; }
  virtual Int_t Compare(const TObject* /* obj */) const { return 0; }

 protected:

  Char_t   fGlobalStack;		  // stack (0-89) in which the track was found
					  // (unique because of stack-wise tracking)
  UChar_t  fPID;			  // electron PID for this track
  UChar_t  fLayerMask;			  // mask of contributing tracklets
  Int_t    fA;				  // transverse offset from nominal primary vertex
  UChar_t  fFlagsTiming;                  // timing flags

  TClonesArray fTracklets;                // array of contributing tracklets
  TRef fTrackMatch;                       // reference to matched global track

  Int_t fLabel;				  // Track label

  ClassDef(AliAODTrdTrack,1)
};

#endif
 AliAODTrdTrack.h:1
 AliAODTrdTrack.h:2
 AliAODTrdTrack.h:3
 AliAODTrdTrack.h:4
 AliAODTrdTrack.h:5
 AliAODTrdTrack.h:6
 AliAODTrdTrack.h:7
 AliAODTrdTrack.h:8
 AliAODTrdTrack.h:9
 AliAODTrdTrack.h:10
 AliAODTrdTrack.h:11
 AliAODTrdTrack.h:12
 AliAODTrdTrack.h:13
 AliAODTrdTrack.h:14
 AliAODTrdTrack.h:15
 AliAODTrdTrack.h:16
 AliAODTrdTrack.h:17
 AliAODTrdTrack.h:18
 AliAODTrdTrack.h:19
 AliAODTrdTrack.h:20
 AliAODTrdTrack.h:21
 AliAODTrdTrack.h:22
 AliAODTrdTrack.h:23
 AliAODTrdTrack.h:24
 AliAODTrdTrack.h:25
 AliAODTrdTrack.h:26
 AliAODTrdTrack.h:27
 AliAODTrdTrack.h:28
 AliAODTrdTrack.h:29
 AliAODTrdTrack.h:30
 AliAODTrdTrack.h:31
 AliAODTrdTrack.h:32
 AliAODTrdTrack.h:33
 AliAODTrdTrack.h:34
 AliAODTrdTrack.h:35
 AliAODTrdTrack.h:36
 AliAODTrdTrack.h:37
 AliAODTrdTrack.h:38
 AliAODTrdTrack.h:39
 AliAODTrdTrack.h:40
 AliAODTrdTrack.h:41
 AliAODTrdTrack.h:42
 AliAODTrdTrack.h:43
 AliAODTrdTrack.h:44
 AliAODTrdTrack.h:45
 AliAODTrdTrack.h:46
 AliAODTrdTrack.h:47
 AliAODTrdTrack.h:48
 AliAODTrdTrack.h:49
 AliAODTrdTrack.h:50
 AliAODTrdTrack.h:51
 AliAODTrdTrack.h:52
 AliAODTrdTrack.h:53
 AliAODTrdTrack.h:54
 AliAODTrdTrack.h:55
 AliAODTrdTrack.h:56
 AliAODTrdTrack.h:57
 AliAODTrdTrack.h:58
 AliAODTrdTrack.h:59
 AliAODTrdTrack.h:60
 AliAODTrdTrack.h:61
 AliAODTrdTrack.h:62
 AliAODTrdTrack.h:63
 AliAODTrdTrack.h:64
 AliAODTrdTrack.h:65
 AliAODTrdTrack.h:66
 AliAODTrdTrack.h:67
 AliAODTrdTrack.h:68
 AliAODTrdTrack.h:69
 AliAODTrdTrack.h:70
 AliAODTrdTrack.h:71
 AliAODTrdTrack.h:72
 AliAODTrdTrack.h:73
 AliAODTrdTrack.h:74
 AliAODTrdTrack.h:75
 AliAODTrdTrack.h:76
 AliAODTrdTrack.h:77
 AliAODTrdTrack.h:78
 AliAODTrdTrack.h:79