]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDclusterizer.h
Added protection against wrongly formed cloning list
[u/mrichter/AliRoot.git] / TRD / AliTRDclusterizer.h
index e1c856ee51066eeca507929fddde4af0d982b400..c583ea0edd68b1fa0ea09821cdb2a305cc053b74 100644 (file)
@@ -13,6 +13,9 @@
 
 #include <TNamed.h>
 
+#include "AliTRDrawStream.h"
+#include "AliTRDgeometry.h"
+
 class TFile;
 class TTree;
 class TClonesArray;
@@ -31,8 +34,8 @@ class AliTRDtransform;
 class AliTRDCalROC;
 class AliTRDReconstructor;
 class AliTRDCalSingleChamberStatus;
-class AliTRDrawStreamBase;
 class AliTRDrecoParam;
+class AliTRDCalOnlineGainTableROC;
 
 class AliTRDclusterizer : public TNamed 
 {
@@ -45,10 +48,11 @@ class AliTRDclusterizer : public TNamed
     kTrOwner = BIT(14)  //  toggle online tracklets ownership
     ,kClOwner= BIT(15)  //  toggle cluster ownership
     ,kLabels = BIT(16)  //  toggle MC labels for clusters
-    ,kHLT    = BIT(17)  //  HLT mode
+    ,kSkipTrafo = BIT(17)  //  skip the coordinate transformation of clusters?
     ,kLUT    = BIT(18)  //  using look up table for cluster's r-phi position
     ,kGAUS   = BIT(19)  //  using gauss approx. for cluster's r-phi position
     ,knewDM  = BIT(20)  //  was the digitsmanger created by raw2clusters?
+    ,kTracksOwner = BIT(21) //  toggle GTU track ownership
   };
 
   struct MaxStruct
@@ -82,11 +86,14 @@ class AliTRDclusterizer : public TNamed
   Bool_t   ReadDigits(AliRawReader *rawReader);
   Bool_t   ReadDigits(TTree *digitsTree);
 
+  Bool_t   ReadTracklets();
+  Bool_t   ReadTracks();
+
   Bool_t   WriteClusters(Int_t det);
   void     ResetRecPoints();
   virtual TClonesArray    *RecPoints();
-  virtual TClonesArray    *TrackletsArray();
-  Bool_t   WriteTracklets(Int_t det);
+  virtual TClonesArray    *TrackletsArray(const TString &trkltype = "");
+  virtual TClonesArray    *TracksArray();
 
   Bool_t   Raw2Clusters(AliRawReader *rawReader);
   Bool_t   Raw2ClustersChamber(AliRawReader *rawReader);
@@ -102,16 +109,22 @@ class AliTRDclusterizer : public TNamed
   Int_t            GetAddedClusters() const {return fNoOfClusters;}
   Int_t            GetNTimeBins() const {return fTimeTotal;}
 
-  Bool_t   IsClustersOwner() const {return TestBit(kClOwner);}
+  Bool_t           IsClustersOwner() const {return TestBit(kClOwner);}
   virtual void     SetClustersOwner(Bool_t own=kTRUE) {SetBit(kClOwner, own); if(!own) {fRecPoints = 0x0; fNoOfClusters=0;} }
-  void     SetTrackletsOwner(Bool_t own=kTRUE) {SetBit(kTrOwner, own); if(!own) {fTracklets = 0x0; } }
+  void             SetTrackletsOwner(Bool_t own=kTRUE) {SetBit(kTrOwner, own); if(!own) {fTracklets = 0x0; } }
+  void             SetTracksOwner(Bool_t own=kTRUE) {SetBit(kTracksOwner, own); if(!own) {fTracks = 0x0; } }
+  void             SetSkipTransform(Bool_t b=kTRUE) {SetBit(kSkipTrafo, b); }
+
+  UInt_t   GetTriggerFlags(const Int_t sector) const { return fTrgFlags[sector]; }
 
 protected:
 
+  void             ApplyTCTM(Short_t *const arr, const Int_t nTime, const Int_t nexp);
   void             DeConvExp (Short_t *const arr, const Int_t nTime, const Int_t nexp);
+  void             ConvExp(Short_t *const arr, const Int_t nTime);
   void             TailCancelation(const AliTRDrecoParam* const recoParam);
 
-  Float_t  Unfold(Double_t eps, Int_t layer, const Double_t *const padSignal) const;
+  Float_t          Unfold(Double_t eps, Int_t layer, const Double_t *const padSignal) const;
   
   void             SetPadStatus(const UChar_t status, UChar_t &encoding) const;
   UChar_t          GetPadStatus(UChar_t encoding) const;
@@ -122,7 +135,6 @@ protected:
   void             CreateCluster(const MaxStruct &Max); 
 
   virtual void     AddClusterToArray(AliTRDcluster* cluster);
-  virtual void     AddTrackletsToArray();
 
 private:
   inline void      CalcAdditionalInfo(const MaxStruct &Max, Short_t *const signals, Int_t &nPadCount);
@@ -133,12 +145,15 @@ protected:
   TTree               *fClusterTree;         //! Tree with the cluster
   TClonesArray        *fRecPoints;           //! Array of clusters
   TClonesArray        *fTracklets;           //! Array of online tracklets
+  TClonesArray        *fTracks;              //! Array of GTU tracks
 
   TTree               *fTrackletTree;        //! Tree for tracklets
 
   AliTRDdigitsManager *fDigitsManager;       //! TRD digits manager
 
   UInt_t              **fTrackletContainer;  //! tracklet container
+                                            // legacy code to avoid breakint AliHLTTRDClusterizer
+                                            // but it's useless
 
   Int_t                fRawVersion;          //  Expected raw version of the data - default is 2
 
@@ -161,11 +176,13 @@ protected:
   AliTRDCalROC        *fCalNoiseROC;          // Calibration object with pad wise values for the noise
   Float_t              fCalNoiseDetValue;     // Calibration value for chamber wise noise
   AliTRDCalSingleChamberStatus *fCalPadStatusROC; // Calibration object with the pad status
+  AliTRDCalOnlineGainTableROC *fCalOnGainROC; // Calibration table of online gain factors
   Int_t                fClusterROC;           // The index to the first cluster of a given ROC
   Int_t                firstClusterROC;       // The number of cluster in a given ROC
   Int_t                fNoOfClusters;         // Number of Clusters already processed and still owned by the clusterizer
   Int_t                fBaseline;             // Baseline of the ADC values
-  AliTRDrawStreamBase *fRawStream;            // Currently used RawStream
+  AliTRDrawStream     *fRawStream;            // Raw data streamer
+  UInt_t               fTrgFlags[AliTRDgeometry::kNsector]; // trigger flags
 
   ClassDef(AliTRDclusterizer,6)               //  TRD clusterfinder