Add detailed geometry and simple simulator
[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 #include <TObject.h> 
8
9 class AliTRDgeometry;
10
11 class AliTRDmcTrack : public TObject {
12
13 // Represents TRD related info about generated track
14
15 public:
16
17   AliTRDmcTrack();
18   AliTRDmcTrack(Int_t label, Bool_t primary, Float_t mass, Int_t charge, Int_t pdg); 
19
20   void SetPin(Int_t plane, Double_t px, Double_t py, Double_t pz)
21               { Pin[plane][0]  = px; Pin[plane][1]  = py; Pin[plane][2]  = pz; }
22
23   void SetPout(Int_t plane, Double_t px, Double_t py, Double_t pz)
24               { Pout[plane][0] = px; Pout[plane][1] = py; Pout[plane][2] = pz; }
25
26   void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz, Int_t opt = 0) const;
27   void GetPlanePxPyPz(Double_t &px, Double_t &py, Double_t &pz
28                      ,Int_t plane, Int_t opt = 0) const;
29
30   void Update(Int_t index) { if (fN < 199) fIndex[fN++] = index; }
31
32   Int_t   GetTrackIndex()          const { return fLab;      }
33   Bool_t  IsPrimary()              const { return fPrimary;  }
34   Float_t GetMass()                const { return fMass;     }
35   Int_t   GetCharge()              const { return fCharge;   }
36   Int_t   GetPdgCode()             const { return fPDG;      }
37
38   Int_t   GetNumberOfClusters()    const { return fN;        }
39   Int_t   GetClusterIndex(Int_t i) const { return fIndex[i]; }  
40
41 protected:
42
43    Int_t    fLab;             // Track index  
44    Bool_t   fPrimary;         // TRUE if it's a primary particle
45    Float_t  fMass;            // Mass of the MC track
46    Int_t    fCharge;          // Charge of the MC track
47    Int_t    fPDG;             // PDG code of the MC track
48
49    Int_t    fN;               // Number of TRD clusters associated with the track
50    Int_t    fIndex[200];      // Indices of these clusters  
51                            
52    Double_t Pin[6][3];        // Px,Py,Pz at the entrance of each TRD plane   
53    Double_t Pout[6][3];       // Px,Py,Pz at the exit of each TRD plane
54
55    ClassDef(AliTRDmcTrack,1)  // TRD MC track
56
57 };                   
58
59 #endif