This commit was generated by cvs2svn to compensate for changes in r165,
[u/mrichter/AliRoot.git] / RALICE / AliTrack.h
1 #ifndef ALITRACK_H
2 #define ALITRACK_H
3 ///////////////////////////////////////////////////////////////////////////
4 // Class AliTrack
5 // Handling of the attributes of a reconstructed particle track.
6 //
7 // Coding example :
8 // ----------------
9 //
10 // Float_t a[4]={195.,1.2,-0.04,8.5};
11 // Ali4Vector pmu;
12 // pmu.SetVector(a,"car");
13 // AliTrack t1;
14 // t1.Set4Momentum(pmu);
15 //
16 // Float_t b[3]={1.2,-0.04,8.5};
17 // Ali3Vector p;
18 // p.SetVector(b,"car");
19 // AliTrack t2;
20 // t2.Set3Momentum(p);
21 // t2.SetCharge(0);
22 // t2.SetMass(1.115);
23 //
24 // t1.Info();
25 // t2.Info();
26 //
27 // Float_t pi=acos(-1.);
28 // Float_t thcms=0.2*pi; // decay theta angle in cms
29 // Float_t phicms=pi/4.; // decay theta angle in cms
30 // Float_t m1=0.938;
31 // Float_t m2=0.140;
32 // t2.Decay(m1,m2,thcms,phicms); // Track t2 decay : Lambda -> proton + pion
33 //
34 // t2.List();
35 //
36 // Int_t ndec=t2.GetNdecay();
37 // AliTrack* d1=t2.GetDecayTrack(1); // Access to decay track number 1
38 // AliTrack* d2=t2.GetDecayTrack(2); // Access to decay track number 2
39 //
40 // Note : All quantities are in GeV, GeV/c or GeV/c**2
41 //
42 //--- NvE 10-jul-1997 UU-SAP Utrecht
43 //--- Modified : NvE 06-apr-1999 UU-SAP Utrecht to inherit from Ali4Vector
44 ///////////////////////////////////////////////////////////////////////////
45  
46 #include "TObject.h"
47 #include "TObjArray.h"
48  
49 #include "AliBoost.h"
50  
51 class AliTrack : public TObject,public Ali4Vector
52 {
53  public:
54   AliTrack();                       // Default constructor
55   ~AliTrack();                      // Destructor
56   void Reset();                     // Reset all values to 0
57   void Set4Momentum(Ali4Vector& p); // Set track 4-momentum
58   void Set3Momentum(Ali3Vector& p); // Set track 3-momentum
59   void SetMass(Double_t m);         // Set particle mass
60   void SetCharge(Float_t q);        // Set particle charge
61   void Info(TString f="car");       // Print track information for coord. frame f
62   void List(TString f="car");       // Print track and decay level 1 information for coord. frame f
63   void ListAll(TString f="car");    // Print track and all decay level information for coord. frame f
64   Ali3Vector Get3Momentum();        // Provide track 3-momentum
65   Double_t GetMomentum();           // Provide value of track 3-momentum
66   Double_t GetMass();               // Provide particle mass
67   Float_t GetCharge();              // Provide particle charge
68   Double_t GetEnergy();             // Provide particle total energy
69   void Decay(Double_t m1,Double_t m2,Double_t thcms,Double_t phicms); // Perform 2-body decay
70   Int_t GetNdecay();                // Provide number of decay products
71   AliTrack* GetDecayTrack(Int_t j); // Access to decay produced track number j
72  
73  protected:
74   Double_t fM;        // The mass of the particle
75   Float_t fQ;         // The charge of the particle
76   Int_t fNdec;        // The number of decay products
77   TObjArray* fDecays; // The array of decay produced tracks for output
78
79  private:
80   void Dump(AliTrack* t,Int_t n,TString f); // Recursively print all decay levels
81  
82  ClassDef(AliTrack,1) // Class definition to enable ROOT I/O
83 };
84 #endif