ROOT logo
#ifndef ALITRDTRACKGTU_H
#define ALITRDTRACKGTU_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliTRDtrackGTU.h 27496 2008-07-22 08:35:45Z cblume $ */

//---------------------------------------------------------------
//
// TRD track as calculated in the GTU (for L1 contribution)
//
//---------------------------------------------------------------

#include "TClonesArray.h"

#include "AliTRDtrackletGTU.h"
class AliESDTrdTrack;

class AliTRDtrackGTU : public TObject {
 public:
  AliTRDtrackGTU();
  AliTRDtrackGTU(const AliTRDtrackGTU &rhs);
  AliTRDtrackGTU& operator=(const AliTRDtrackGTU &rhs);
  AliTRDtrackGTU& operator=(const AliESDTrdTrack &rhs);
  ~AliTRDtrackGTU();

// ----- Track properties
  Int_t    GetPtInt() const { return AliTRDgtuParam::GetPt(fTrackletMask, (Int_t) this->GetA(), 0, 0, 0, 0); }
  Float_t  GetPt() const { return (Float_t) this->GetPtInt() / 128.; }
  Int_t    GetPID() const { return fPID; }
  Int_t    GetSector() const { return fSector; }
  Int_t    GetStack() const { return fStack; }
  Int_t GetLabel() const { return fLabel; }

  AliESDTrdTrack* CreateTrdTrack() const;

// ----- compositing tracklets
  Int_t    GetNTracklets() const;
  Int_t    GetTrackletMask() const { return fTrackletMask; }
  Bool_t   IsTrackletInLayer(Int_t layer) const;
  Int_t    GetTrackletIndex(Int_t layer) { return IsTrackletInLayer(layer) ? ((AliTRDtrackletGTU*) (*fTracklets)[layer])->GetIndex() : -1; }
  AliTRDtrackletGTU* GetTracklet(Int_t layer) const;

// ----- Quantities used internally for the calculation
  Float_t GetA() const { return fA; }
  Float_t GetB() const { return fB; }
  Float_t GetC() const { return fC; }
  Int_t GetZChannel() const { return fZChannel; }
  Int_t GetZSubChannel();
  Int_t GetRefLayer() const { return AliTRDgtuParam::GetRefLayer(fRefLayerIdx); }
  Int_t GetRefLayerIdx() const { return fRefLayerIdx; }
  Int_t GetYapprox();


  void AddTracklet(const AliTRDtrackletGTU * const tracklet, Int_t layer);

  void SetStack(Int_t stack) { fStack = stack; }
  void SetSector(Int_t sector) { fSector = sector; }
  void SetPID(Int_t pid) { fPID = pid; }
  void SetLabel(Int_t label) { fLabel = label; }

  void SetZChannel(Int_t zch) { fZChannel = zch; }
  void SetRefLayerIdx(Int_t reflayer) { fRefLayerIdx = reflayer; }
//  void SetInnerIntPoint(Float_t *x);
//  void SetOuterIntPoint(Float_t *x);
  void SetFitParams(Float_t a, Float_t b, Float_t c);

  Bool_t CookLabel();

 protected:

  Int_t fStack; // TRD stack to which this track belongs
  Int_t fSector; // sector in which the track was found

  Int_t fPID; // PID calculated from tracklet PID

  TClonesArray *fTracklets; // array holding the tracklets composing this track
  Int_t fTrackletMask; // mask in which layers tracklets have been assigned
  Int_t fNTracklets; // number of tracklets in this track

  Int_t fRefLayerIdx; // index of the reference layer in which this track was found
  Int_t fZChannel; // z-channel unit in which this track was found
  Int_t fZSubChannel; // z-subchannel of the assigned tracklets

  Float_t fA; // fit parameter of y' = a + b*x + c*z
  Float_t fB; // fit parameter of y' = a + b*x + c*z
  Float_t fC; // fit parameter of y' = a + b*x + c*z

  Int_t fLabel; // MC label

  ClassDef(AliTRDtrackGTU, 1);
};

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