re-activate contrib code
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackletGTU.h
index 9ea7997..c6221eb 100644 (file)
@@ -6,48 +6,45 @@
 /* $Id: AliTRDtrackletGTU.h 27496 2008-07-22 08:35:45Z cblume $ */
 
 // --------------------------------------------------------
-// 
+//
 // GTU tracklet
-// 
+//
 //
 // --------------------------------------------------------
 
 #include "AliTRDtrackletBase.h"
+#include "AliESDTrdTracklet.h"
+#include "AliTRDgtuParam.h"
 #include "AliLog.h"
 
-class AliTRDmcmTracklet;
-class AliTRDgtuParam;
-
 class AliTRDtrackletGTU : public AliTRDtrackletBase {
  public:
   AliTRDtrackletGTU();
-//  AliTRDtrackletGTU(UInt_t tracklet_word = 0);
-  AliTRDtrackletGTU(AliTRDtrackletBase *tracklet); 
+  AliTRDtrackletGTU(AliTRDtrackletBase *tracklet);
+  AliTRDtrackletGTU(AliESDTrdTracklet *tracklet);
   AliTRDtrackletGTU(const AliTRDtrackletGTU& trk);
 
   ~AliTRDtrackletGTU();
 
-  AliTRDtrackletGTU& operator=(const AliTRDtrackletGTU &rhs); 
-
-  Bool_t IsSortable() const { return kTRUE; }
-  Int_t Compare(const TObject *o) const;
+  AliTRDtrackletGTU& operator=(const AliTRDtrackletGTU &rhs);
 
   // ----- Getters for information from the tracklet word -----
-  Int_t GetYbin() const { return fTracklet->GetYbin(); }
-  Int_t GetdY() const { return fTracklet->GetdY(); }
-  Int_t GetZbin() const { return fTracklet->GetZbin(); }
-  Double_t GetPID() const { return fTracklet->GetPID(); }
-  Double_t GetPID(Int_t is) const { return fTracklet->GetPID(is); }
+  Int_t GetYbin() const { return fTrackletESD ? fTrackletESD->GetBinY() : fTracklet->GetYbin(); }
+  Int_t GetdY() const { return fTrackletESD ? fTrackletESD->GetBinDy() : fTracklet->GetdY(); }
+  Int_t GetZbin() const { return fTrackletESD ? fTrackletESD->GetBinZ() : fTracklet->GetZbin(); }
+  Int_t GetPID() const { return fTrackletESD ? fTrackletESD->GetPID() : ((Int_t) (256 * fTracklet->GetPID())); }
+  Double_t GetPID(Int_t is) const { return fTracklet ? fTracklet->GetPID(is) : 0.; }
 
   // ----- Getters for calculated properties -----
   Int_t GetYProj() const { return fYProj; }
   Int_t GetAlpha() const { return fAlpha; }
   Int_t GetYPrime() const { return fYPrime; }
-  Int_t GetSubChannel(Int_t zch);
+  Int_t GetSubChannel(Int_t zch) const;
 
   // ----- Getters for offline corresponding values -----
   Bool_t CookPID() { return kFALSE; }
-  Int_t GetDetector() const { return fTracklet->GetDetector(); }
+  Int_t GetHCId() const { return fTrackletESD ? fTrackletESD->GetHCId() : fTracklet->GetHCId(); }
+  Int_t GetDetector() const { return fTrackletESD ? fTrackletESD->GetDetector() : fTracklet->GetDetector(); }
   Int_t GetIndex() const { return fIndex; }
 
   Float_t GetdYdX() const { return (GetdY() * 140e-4 / 3.); }
@@ -55,10 +52,15 @@ class AliTRDtrackletGTU : public AliTRDtrackletBase {
   Float_t GetY() const { return (GetYbin() * 160e-4); }
   Float_t GetZ() const { return 0; }
 
-//  AliTRDtrackletBase* GetTracklet() const { return fTracklet; }
-  UInt_t GetTrackletWord() const { return fTracklet->GetTrackletWord(); }
+  AliTRDtrackletBase* GetTracklet() const { return fTracklet; }
+  AliESDTrdTracklet* GetTrackletESD() const { return fTrackletESD; }
+  UInt_t GetTrackletWord() const { return fTrackletESD ? fTrackletESD->GetTrackletWord() : fTracklet->GetTrackletWord(); }
+  Int_t GetMCMtrackletIndex() const { return fMCMtrackletIndex; }
+  void  SetMCMtrackletIndex(Int_t val) { fMCMtrackletIndex=val; }
+
+  Int_t GetSide() const { return GetYbin() < 0 ? 0 : 1; }
 
-  Int_t GetSide() const { return GetYbin() < 0 ? 0 : 1; } 
+  Int_t GetLabel() const; // { return fLabel; }
 
   // ----- Setters -----
   void SetAlpha(Int_t alpha) { fAlpha = alpha; }
@@ -73,17 +75,20 @@ class AliTRDtrackletGTU : public AliTRDtrackletBase {
 
  protected:
   AliTRDgtuParam *fGtuParam;    //!
-  const AliTRDtrackletBase *fTracklet; // always points to a valid tracklet
+  AliTRDtrackletBase *fTracklet;    //! pointer to the underlying tracklet
+  AliESDTrdTracklet  *fTrackletESD; //! pointer to the underlying ESD tracklet
+
+  Int_t fMCMtrackletIndex;      // Index number of the original tracklet in the TrackletTree
 
-  Int_t *fSubChannel;          //! [AliTRDgtuParam::GetNZChannels()]
+  Int_t  fSubChannel[AliTRDgtuParam::fgkNZChannels]; // z-channel assignments
   Bool_t fAssignedZ;           // tracklet assigned to a Z-channel
 
   Int_t fAlpha;                        // calculated value for alpha
   Int_t fYProj;                        // calculated value for y_proj
   Int_t fYPrime;               // calculated value for y'
-  Int_t fIndex;
+  Int_t fIndex;                 // index of tracklet in the sequence after the input units
 
-  static AliTRDtrackletBase* fgkDummyTracklet;
+  static AliTRDtrackletBase* fgkDummyTracklet; // dummy tracklet, used in case no tracklet is given
 
  private: