229a5f0d8f14eb7fb249fc1c9f0b4c7dddf915c5
[u/mrichter/AliRoot.git] / TRD / AliTRDmcTrack.h
1 #ifndef ALITRDMCTRACK_H
2 #define ALITRDMCTRACK_H  
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */ 
6
7 ///////////////////////////////////////////////////////////////////////////////
8 //                                                                           //
9 //  TRD MC track                                                             //
10 //  Used for efficiency estimates and matching of reconstructed tracks       //
11 //  to MC particles                                                          //                    
12 //                                                                           //
13 ///////////////////////////////////////////////////////////////////////////////
14
15 #include <TObject.h> 
16
17 class AliTRDgeometry;
18
19 class AliTRDmcTrack : public TObject {
20
21 // Represents TRD related info about generated track
22
23 public:
24
25   AliTRDmcTrack();
26   AliTRDmcTrack(Int_t label, Bool_t primary, Float_t mass, Int_t charge, Int_t pdg); 
27
28   void SetPin(Int_t plane, Double_t px, Double_t py, Double_t pz)
29               { fPin[plane][0]  = px; fPin[plane][1]  = py; fPin[plane][2]  = pz; }
30
31   void SetPout(Int_t plane, Double_t px, Double_t py, Double_t pz)
32               { fPout[plane][0] = px; fPout[plane][1] = py; fPout[plane][2] = pz; }
33
34   void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz, Int_t opt = 0) const;
35   void GetPlanePxPyPz(Double_t &px, Double_t &py, Double_t &pz
36                      ,Int_t plane, Int_t opt = 0) const;
37
38   void Update(Int_t index) { if (fN < 199) fIndex[fN++] = index; }
39
40   Int_t   GetTrackIndex()          const { return fLab;      }
41   Bool_t  IsPrimary()              const { return fPrimary;  }
42   Float_t GetMass()                const { return fMass;     }
43   Int_t   GetCharge()              const { return fCharge;   }
44   Int_t   GetPdgCode()             const { return fPDG;      }
45
46   Int_t   GetNumberOfClusters()    const { return fN;        }
47   Int_t   GetClusterIndex(Int_t i) const { return fIndex[i]; }  
48
49 protected:
50
51    Int_t    fLab;             // Track index  
52    Bool_t   fPrimary;         // TRUE if it's a primary particle
53    Float_t  fMass;            // Mass of the MC track
54    Int_t    fCharge;          // Charge of the MC track
55    Int_t    fPDG;             // PDG code of the MC track
56
57    Int_t    fN;               // Number of TRD clusters associated with the track
58    Int_t    fIndex[200];      // Indices of these clusters  
59                            
60    Double_t fPin[6][3];       // Px,Py,Pz at the entrance of each TRD plane   
61    Double_t fPout[6][3];      // Px,Py,Pz at the exit of each TRD plane
62
63    ClassDef(AliTRDmcTrack,1)  // TRD MC track
64
65 };                   
66
67 #endif