]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDReconstructor.h
AliACORDEQAChecker::Check fixed
[u/mrichter/AliRoot.git] / TRD / AliTRDReconstructor.h
index 19b0ba7c01aa927f811b7a97ccd4263cf94b84f0..3eafd50507dd8ab943e7462f9b10a3f9109c6740 100644 (file)
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "AliReconstructor.h"
+#include "AliRecoParam.h"
 #include "AliDetectorRecoParam.h"
-#include "AliTRDrecoParam.h"
 #include "AliTRDpidUtil.h"
+#include "AliTRDrecoParam.h"
 
 class TClonesArray;
 class TTreeSRedirector;
@@ -22,92 +23,68 @@ class AliRawReader;
 class AliTRDReconstructor: public AliReconstructor 
 {
 public:
-  enum AliTRDsteerParam {
+  enum ETRDReconstructorSteer {
     kDigitsConversion= BIT(0)
     ,kWriteClusters  = BIT(1)
-    ,kSeeding        = BIT(2)
-    ,kSteerPID       = BIT(3)
-    ,kEightSlices    = BIT(4)
-    ,kWriteTracklets = BIT(5)
-    ,kDriftGas       = BIT(6)
-    ,kHLT            = BIT(7)
-    ,kCosmic         = BIT(8)
-  };
-  enum AliTRDReconstructorTask {
-    kRawReader    = 0
-    ,kClusterizer = 1
-    ,kTracker     = 2
-    ,kPID         = 3
-  };
-  enum AliTRDdriftGas {
-    kXe = 0,
-    kAr = 1
-  };
-  enum{
-    kOwner = BIT(14)
+    ,kWriteTracklets = BIT(2)
+    ,kSeeding        = BIT(3)
+    ,kHLT            = BIT(4)
+    ,kProcTracklets  = BIT(5) // process online tracklets
+    ,kDebug          = BIT(6)
+    ,kOwner          = BIT(7)
+    ,kNsteer         = 7       // number of tasks
   };
-
   AliTRDReconstructor();
-  AliTRDReconstructor(const AliTRDReconstructor &r);
   virtual ~AliTRDReconstructor();
-  AliTRDReconstructor& operator = (const AliTRDReconstructor&)          { return *this;}
        
        virtual void        Init();
 
   virtual void        ConvertDigits(AliRawReader *rawReader, TTree *digitsTree) const;
   virtual AliTracker* CreateTracker() const;
-  TTreeSRedirector*   GetDebugStream(AliTRDReconstructorTask task) const { return task < 4 ? fDebugStream[task] : 0x0; }
+  TTreeSRedirector*   GetDebugStream(AliTRDrecoParam::ETRDReconstructionTask task) const { return task < AliTRDrecoParam::kTRDreconstructionTasks ? fDebugStream[task] : 0x0; }
 
   virtual void        FillESD(AliRawReader *, TTree *clusterTree, AliESDEvent *esd) const { FillESD((TTree * )NULL, clusterTree, esd);                    }
   virtual void        FillESD(TTree *digitsTree, TTree *clusterTree, AliESDEvent *esd) const;
   static TClonesArray* GetClusters() {return fgClusters;}
+  static TClonesArray* GetTracklets() {return fgTracklets;}
   Int_t               GetNdEdxSlices() const     { return (Int_t)AliTRDpidUtil::GetNdEdxSlices(GetPIDMethod());}
-  AliTRDdriftGas      GetDriftGas() const        { return fSteerParam&kDriftGas ? kAr : kXe;}
-  AliTRDpidUtil::ETRDPIDMethod       GetPIDMethod() const       { return fSteerParam&kSteerPID ? AliTRDpidUtil::kNN : AliTRDpidUtil::kLQ;}
+  AliTRDpidUtil::ETRDPIDMethod       GetPIDMethod() const       { return GetRecoParam()->IsPIDNeuralNetwork() ? AliTRDpidUtil::kNN : AliTRDpidUtil::kLQ;}
   static const AliTRDrecoParam* GetRecoParam() { return dynamic_cast<const AliTRDrecoParam*>(AliReconstructor::GetRecoParam(2)); }
-  Int_t               GetStreamLevel(AliTRDReconstructorTask task) const    { return fStreamLevel[task];} 
-  inline void         GetTCParams(Double_t *par) const;
-  virtual Bool_t      HasDigitConversion() const                   { return fSteerParam&kDigitsConversion;  };
+  virtual Bool_t      HasDigitConversion() const { return fSteerParam&kDigitsConversion;  };
+  Bool_t              IsCosmic() const { return GetRecoParam()->GetEventSpecie() & AliRecoParam::kCosmic;}
   Bool_t              IsWritingClusters() const  { return fSteerParam&kWriteClusters;}
   Bool_t              IsWritingTracklets() const { return fSteerParam&kWriteTracklets;}
   Bool_t              IsHLT() const              { return fSteerParam&kHLT;}
   Bool_t              IsSeeding() const          { return fSteerParam&kSeeding;}
-  Bool_t              IsCosmic() const           { return fSteerParam&kCosmic;}
-  Bool_t              IsEightSlices() const      { return fSteerParam&kEightSlices;}
+  Bool_t              IsProcessingTracklets() const { return fSteerParam&kProcTracklets;}
+  Bool_t              IsDebugStreaming() const { return fSteerParam&kDebug;}
 
+  static void         Options(UInt_t steer=0);
   virtual void        Reconstruct(AliRawReader *rawReader, TTree *clusterTree) const;
   virtual void        Reconstruct(TTree *digitsTree, TTree *clusterTree) const;
 
-  static void         SetClusters(TClonesArray *clusters) {fgClusters = clusters;}
+  static void         SetClusters(TClonesArray *clusters) {fgClusters = clusters;} 
+  static void         SetTracklets(TClonesArray *tracklets) {fgTracklets = tracklets;}
   void               SetOption(Option_t *opt);
-  inline void         SetTCParams(Double_t *par);
-  void                SetStreamLevel(Int_t level, AliTRDReconstructorTask task= kTracker);
 
 private:
-  UChar_t           fStreamLevel[5];      // stream level for each reconstruction task         
-  UInt_t            fSteerParam;          // steering flags
-  Double_t          fTCParams[8];         // Tail Cancellation parameters for drift gases 
-  TTreeSRedirector *fDebugStream[4];      // Debug Streamer container;
+  AliTRDReconstructor(const AliTRDReconstructor &r); //Not implemented
+  AliTRDReconstructor& operator = (const AliTRDReconstructor&); //Not implemented
+
+  static Char_t    *fgSteerNames[kNsteer];//! steering names
+  static Char_t    *fgSteerFlags[kNsteer];//! steering flags
+  static Char_t    *fgTaskNames[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks names
+  static Char_t    *fgTaskFlags[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks flags
+  UInt_t            fSteerParam;          // steering bits
+  TTreeSRedirector *fDebugStream[AliTRDrecoParam::kTRDreconstructionTasks];// Debug Streamer container;
  
   static TClonesArray *fgClusters;    // list of clusters for local reconstructor
+  static TClonesArray *fgTracklets;   // list of online tracklets for local reconstructor
 
-  ClassDef(AliTRDReconstructor, 1)    //  Class for the TRD reconstruction
+  ClassDef(AliTRDReconstructor, 2)    //  Class for the TRD reconstruction
 
 };
 
-//___________________________________________________
-inline void AliTRDReconstructor::GetTCParams(Double_t *par) const
-{
-  if(!par) return;
-  if(GetDriftGas()==kAr) memcpy(par, &fTCParams[4], 4*sizeof(Double_t));
-  else memcpy(par, &fTCParams[0], 4*sizeof(Double_t));
-}
 
-//___________________________________________________
-inline void AliTRDReconstructor::SetTCParams(Double_t *par)
-{
-  if(!par) return;
-  memcpy(fTCParams, par, 8*sizeof(Double_t));
-}
 
 #endif