Update of tracking code for tilted pads
[u/mrichter/AliRoot.git] / TRD / AliTRDmcTrack.h
index 229a5f0d8f14eb7fb249fc1c9f0b4c7dddf915c5..5bea50228afe1f597c20d77396953e8b8e13cbb9 100644 (file)
@@ -4,18 +4,12 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */ 
 
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  TRD MC track                                                             //
-//  Used for efficiency estimates and matching of reconstructed tracks       //
-//  to MC particles                                                          //                    
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
 #include <TObject.h> 
 
 class AliTRDgeometry;
 
+const Int_t kMAX_CLUSTERS_PER_MC_TRACK=210;  
+
 class AliTRDmcTrack : public TObject {
 
 // Represents TRD related info about generated track
@@ -26,16 +20,32 @@ public:
   AliTRDmcTrack(Int_t label, Bool_t primary, Float_t mass, Int_t charge, Int_t pdg); 
 
   void SetPin(Int_t plane, Double_t px, Double_t py, Double_t pz)
-              { fPin[plane][0]  = px; fPin[plane][1]  = py; fPin[plane][2]  = pz; }
+              { Pin[plane][0] = px; Pin[plane][1] = py; Pin[plane][2] = pz; }
 
   void SetPout(Int_t plane, Double_t px, Double_t py, Double_t pz)
-              { fPout[plane][0] = px; fPout[plane][1] = py; fPout[plane][2] = pz; }
+              {Pout[plane][0] = px; Pout[plane][1] = py; Pout[plane][2] = pz;}
+
+  void SetXYZin(Int_t plane, Double_t x, Double_t y, Double_t z)
+    { XYZin[plane][0] = x; XYZin[plane][1] = y; XYZin[plane][2] = z; }
+
+  void SetXYZout(Int_t plane, Double_t x, Double_t y, Double_t z)
+    { XYZout[plane][0] = x; XYZout[plane][1] = y; XYZout[plane][2] = z; }
+
+  void GetPxPyPzXYZ(Double_t &px, Double_t &py, Double_t &pz, 
+                   Double_t &x,  Double_t &y,  Double_t &z, 
+                   Int_t opt = 0) const;
 
-  void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz, Int_t opt = 0) const;
   void GetPlanePxPyPz(Double_t &px, Double_t &py, Double_t &pz
                     ,Int_t plane, Int_t opt = 0) const;
 
-  void Update(Int_t index) { if (fN < 199) fIndex[fN++] = index; }
+  void GetXYZin(Int_t plane, Double_t &x, Double_t &y, Double_t &z) const 
+    { x = XYZin[plane][0]; y = XYZin[plane][1]; z = XYZin[plane][2]; return; }
+
+  void GetXYZout(Int_t plane, Double_t &x, Double_t &y, Double_t &z) const
+    {x = XYZout[plane][0]; y = XYZout[plane][1]; z = XYZout[plane][2]; return;}
+
+  void Update(Int_t index) { 
+    if (fN < kMAX_CLUSTERS_PER_MC_TRACK-1) fIndex[fN++] = index; }
 
   Int_t   GetTrackIndex()          const { return fLab;      }
   Bool_t  IsPrimary()              const { return fPrimary;  }
@@ -54,11 +64,14 @@ protected:
    Int_t    fCharge;          // Charge of the MC track
    Int_t    fPDG;             // PDG code of the MC track
 
-   Int_t    fN;               // Number of TRD clusters associated with the track
-   Int_t    fIndex[200];      // Indices of these clusters  
+   Int_t  fN;               // Number of TRD clusters associated with the track
+   Int_t  fIndex[kMAX_CLUSTERS_PER_MC_TRACK]; // Indices of these clusters  
                           
-   Double_t fPin[6][3];       // Px,Py,Pz at the entrance of each TRD plane   
-   Double_t fPout[6][3];      // Px,Py,Pz at the exit of each TRD plane
+   Double_t Pin[6][3];        // Px,Py,Pz at the entrance of each TRD plane   
+   Double_t Pout[6][3];       // Px,Py,Pz at the exit of each TRD plane
+
+   Double_t XYZin[6][3];        // x,y,z at the entrance of the TRD  
+   Double_t XYZout[6][3];        // x,y,z at the exit of the TRD    
 
    ClassDef(AliTRDmcTrack,1)  // TRD MC track