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

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

// --------------------------------------------------------
//
// GTU tracklet
//
//
// --------------------------------------------------------

#include "AliTRDtrackletBase.h"
#include "AliESDTrdTracklet.h"
#include "AliTRDgtuParam.h"
#include "AliLog.h"

class AliTRDtrackletGTU : public AliTRDtrackletBase {
 public:
  AliTRDtrackletGTU();
  AliTRDtrackletGTU(AliTRDtrackletBase *tracklet);
  AliTRDtrackletGTU(AliESDTrdTracklet *tracklet);
  AliTRDtrackletGTU(const AliTRDtrackletGTU& trk);

  ~AliTRDtrackletGTU();

  AliTRDtrackletGTU& operator=(const AliTRDtrackletGTU &rhs);

  // ----- Getters for information from the tracklet word -----
  Int_t GetYbin() const { return fTrackletESD ? fTrackletESD->GetBinY() : fTracklet->GetYbin(); }
  Int_t GetdY() const { return fTrackletESD ? fTrackletESD->GetBinDy() : fTracklet->GetdY(); }
  Int_t GetZbin() const { return fTrackletESD ? fTrackletESD->GetBinZ() : fTracklet->GetZbin(); }
  Int_t GetPID() const { return fTrackletESD ? fTrackletESD->GetPID() : ((Int_t) (256 * fTracklet->GetPID())); }
  Double_t GetPID(Int_t is) const { return fTracklet ? fTracklet->GetPID(is) : 0.; }

  // ----- Getters for calculated properties -----
  Int_t GetYProj() const { return fYProj; }
  Int_t GetAlpha() const { return fAlpha; }
  Int_t GetYPrime() const { return fYPrime; }
  Int_t GetSubChannel(Int_t zch) const;

  // ----- Getters for offline corresponding values -----
  Bool_t CookPID() { return kFALSE; }
  Int_t GetHCId() const { return fTrackletESD ? fTrackletESD->GetHCId() : fTracklet->GetHCId(); }
  Int_t GetDetector() const { return fTrackletESD ? fTrackletESD->GetDetector() : fTracklet->GetDetector(); }
  Int_t GetIndex() const { return fIndex; }

  Float_t GetdYdX() const { return (GetdY() * 140e-4 / 3.); }
  Float_t GetX() const { return 0; }
  Float_t GetY() const { return (GetYbin() * 160e-4); }
  Float_t GetZ() const { return 0; }

  AliTRDtrackletBase* GetTracklet() const { return fTracklet; }
  AliESDTrdTracklet* GetTrackletESD() const { return fTrackletESD; }
  UInt_t GetTrackletWord() const { return fTrackletESD ? fTrackletESD->GetTrackletWord() : fTracklet->GetTrackletWord(); }
  Int_t GetMCMtrackletIndex() const { return fMCMtrackletIndex; }
  void  SetMCMtrackletIndex(Int_t val) { fMCMtrackletIndex=val; }

  Int_t GetSide() const { return GetYbin() < 0 ? 0 : 1; }

  Int_t GetLabel() const; // { return fLabel; }

  // ----- Setters -----
  void SetAlpha(Int_t alpha) { fAlpha = alpha; }
  void SetYProj(Int_t yproj) { fYProj = yproj; }
  void SetYPrime(Int_t yprime) { fYPrime = yprime; }

  void SetSubChannel(Int_t zch, Int_t subch);
  void SetDetector(Int_t /* id */ ) { AliError("Cannot change base tracklet"); }
  void SetIndex(Int_t idx) { fIndex = idx; }

  void RemoveTracklet() { fTracklet = fgkDummyTracklet; }

 protected:
  AliTRDgtuParam *fGtuParam;	 //!
  AliTRDtrackletBase *fTracklet;    //! pointer to the underlying tracklet
  AliESDTrdTracklet  *fTrackletESD; //! pointer to the underlying ESD tracklet

  Int_t fMCMtrackletIndex;      // Index number of the original tracklet in the TrackletTree

  Int_t  fSubChannel[AliTRDgtuParam::fgkNZChannels]; // z-channel assignments
  Bool_t fAssignedZ;		// tracklet assigned to a Z-channel

  Int_t fAlpha;			// calculated value for alpha
  Int_t fYProj;			// calculated value for y_proj
  Int_t fYPrime;		// calculated value for y'
  Int_t fIndex;                 // index of tracklet in the sequence after the input units

  static AliTRDtrackletBase* fgkDummyTracklet; // dummy tracklet, used in case no tracklet is given

 private:

  ClassDef(AliTRDtrackletGTU, 1);
};

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