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

/* $Id$ */

// 
// Track Reference object is created every time particle is 
// crossing detector bounds. 
// The object is created by Step Manager
//

#include "TObject.h"
#include "TMath.h"

class AliTrackReference : public TObject {
public:

    enum constants {kDisappeared = -1,
		    kITS   = 0,
		    kTPC   = 1,
		    kFRAME = 2,
		    kTRD   = 3,
		    kTOF   = 4,
		    kMUON  = 5,
		    kHMPID = 6,
		    kT0    = 7,
		    kEMCAL = 8,
		    kPMD   = 10,
		    kFMD   = 12,
		    kVZERO = 14,
		    kMFT   = 16,
		    kHALL  = 17,
		    kFIT  = 18 //alla
    };
  AliTrackReference();
  AliTrackReference(Int_t label, Int_t id = -999);
  AliTrackReference(const AliTrackReference &tr);
  virtual ~AliTrackReference() {}

//  static AliExternalTrackParam * MakeTrack(const AliTrackReference *ref, Double_t mass);
  virtual Int_t GetTrack() const {return fTrack;}
  virtual void SetTrack(Int_t track) {fTrack=track;}
  virtual void SetLength(Float_t length){fLength=length;}
  virtual void SetTime(Float_t time) {fTime = time;}
  virtual Float_t GetLength() const {return fLength;}
  virtual Float_t GetTime() const {return fTime;}
  virtual Int_t Label() const {return fTrack;}
  virtual void SetLabel(Int_t track) {fTrack=track;}
  virtual Float_t R() const {return TMath::Sqrt(fX*fX+fY*fY);}
  virtual Float_t Pt() const {return TMath::Sqrt(fPx*fPx+fPy*fPy);}
  virtual Float_t Phi() const {return TMath::Pi()+TMath::ATan2(-fPy,-fPx);}
  virtual Float_t Theta() const {return (fPz==0)?TMath::Pi()/2:TMath::ACos(fPz/P());}
  virtual Float_t X() const {return fX;}
  virtual Float_t Y() const {return fY;}
  virtual Float_t Z() const {return fZ;}
  virtual Float_t Px() const {return fPx;}
  virtual Float_t Py() const {return fPy;}
  virtual Float_t Pz() const {return fPz;}
  virtual Float_t P() const {return TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz);}
  virtual Int_t   UserId() const {return fUserId;}
  virtual Int_t   DetectorId() const {return fDetectorId;}
  virtual void SetDetectorId(Int_t id){fDetectorId = id;}
  virtual void SetPosition(Float_t x, Float_t y, Float_t z){fX=x; fY=y; fZ=z;}
  virtual void SetMomentum(Float_t px, Float_t py, Float_t pz){fPx=px; fPy=py; fPz=pz;}
  virtual void SetUserId(Int_t userId){fUserId=userId;}
 
  // Methods to get position of the track reference in 
  // in the TPC/TRD/TOF Tracking coordinate system

  virtual Float_t PhiPos() const {return TMath::Pi()+TMath::ATan2(-fY, -fX);}
  virtual Float_t Alpha() const 
    {return TMath::Pi()*(20*((((Int_t)(PhiPos()*180/TMath::Pi()))/20))+10)/180.;}
  virtual Float_t LocalX() const {return fX*TMath::Cos(-Alpha()) - fY*TMath::Sin(-Alpha());}
  virtual Float_t LocalY() const {return fX*TMath::Sin(-Alpha()) + fY*TMath::Cos(-Alpha());}

  Bool_t IsSortable() const {return kTRUE;}
  Int_t Compare(const TObject *obj) const {
    Int_t ll = ((AliTrackReference*)obj)->GetTrack();
    if (ll < fTrack) return 1;
    if (ll > fTrack) return -1;
    return 0;
  }

  virtual void Print(Option_t* opt="") const;
    
protected:
  Int_t     fTrack;      // Track number
  Float_t   fX;          // X reference position of the track
  Float_t   fY;          // Y reference position of the track
  Float_t   fZ;          // Z reference position of the track
  Float_t   fPx;         // momentum
  Float_t   fPy;         // momentum
  Float_t   fPz;         // momentum
  Float_t   fLength;     // track lenght from its origin in cm
  Float_t   fTime;       // time of flight in cm  
  Int_t     fUserId;     // optional Id defined by user
  Int_t     fDetectorId; // Detector Id
  ClassDef(AliTrackReference,6)  //Base class for all Alice track references
};
#endif
 AliTrackReference.h:1
 AliTrackReference.h:2
 AliTrackReference.h:3
 AliTrackReference.h:4
 AliTrackReference.h:5
 AliTrackReference.h:6
 AliTrackReference.h:7
 AliTrackReference.h:8
 AliTrackReference.h:9
 AliTrackReference.h:10
 AliTrackReference.h:11
 AliTrackReference.h:12
 AliTrackReference.h:13
 AliTrackReference.h:14
 AliTrackReference.h:15
 AliTrackReference.h:16
 AliTrackReference.h:17
 AliTrackReference.h:18
 AliTrackReference.h:19
 AliTrackReference.h:20
 AliTrackReference.h:21
 AliTrackReference.h:22
 AliTrackReference.h:23
 AliTrackReference.h:24
 AliTrackReference.h:25
 AliTrackReference.h:26
 AliTrackReference.h:27
 AliTrackReference.h:28
 AliTrackReference.h:29
 AliTrackReference.h:30
 AliTrackReference.h:31
 AliTrackReference.h:32
 AliTrackReference.h:33
 AliTrackReference.h:34
 AliTrackReference.h:35
 AliTrackReference.h:36
 AliTrackReference.h:37
 AliTrackReference.h:38
 AliTrackReference.h:39
 AliTrackReference.h:40
 AliTrackReference.h:41
 AliTrackReference.h:42
 AliTrackReference.h:43
 AliTrackReference.h:44
 AliTrackReference.h:45
 AliTrackReference.h:46
 AliTrackReference.h:47
 AliTrackReference.h:48
 AliTrackReference.h:49
 AliTrackReference.h:50
 AliTrackReference.h:51
 AliTrackReference.h:52
 AliTrackReference.h:53
 AliTrackReference.h:54
 AliTrackReference.h:55
 AliTrackReference.h:56
 AliTrackReference.h:57
 AliTrackReference.h:58
 AliTrackReference.h:59
 AliTrackReference.h:60
 AliTrackReference.h:61
 AliTrackReference.h:62
 AliTrackReference.h:63
 AliTrackReference.h:64
 AliTrackReference.h:65
 AliTrackReference.h:66
 AliTrackReference.h:67
 AliTrackReference.h:68
 AliTrackReference.h:69
 AliTrackReference.h:70
 AliTrackReference.h:71
 AliTrackReference.h:72
 AliTrackReference.h:73
 AliTrackReference.h:74
 AliTrackReference.h:75
 AliTrackReference.h:76
 AliTrackReference.h:77
 AliTrackReference.h:78
 AliTrackReference.h:79
 AliTrackReference.h:80
 AliTrackReference.h:81
 AliTrackReference.h:82
 AliTrackReference.h:83
 AliTrackReference.h:84
 AliTrackReference.h:85
 AliTrackReference.h:86
 AliTrackReference.h:87
 AliTrackReference.h:88
 AliTrackReference.h:89
 AliTrackReference.h:90
 AliTrackReference.h:91
 AliTrackReference.h:92
 AliTrackReference.h:93
 AliTrackReference.h:94
 AliTrackReference.h:95
 AliTrackReference.h:96
 AliTrackReference.h:97
 AliTrackReference.h:98
 AliTrackReference.h:99
 AliTrackReference.h:100
 AliTrackReference.h:101
 AliTrackReference.h:102