]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitMaker.h
spring cleaning, split flow lib into two
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.h
index 7a20f30cc557d1a0f3d449c53afa135843d363be..63c48968e3ff7d18f6e771ba040a2f638b167a9a 100644 (file)
 //  Author: Ch, Finck
 
 #include <TObject.h>
-#include "TStopwatch.h"
 
 class TArrayS;
 
 class AliRawReader;
-class AliMUONTriggerCrateStore;
 class AliMUONLocalStruct;
 
-class AliMUONRawStreamTracker;
-class AliMUONRawStreamTrigger;
+class AliMUONVRawStreamTracker;
+class AliMUONVRawStreamTrigger;
 
 class AliMUONVDigitStore;
 class AliMUONVTriggerStore;
 
+class AliMUONLogger;
+
 class AliMUONDigitMaker : public TObject 
 {
  public:
-  AliMUONDigitMaker(); // Constructor
+  AliMUONDigitMaker(
+         Bool_t enableErrorLogger = kTRUE,
+         Bool_t useFastTrackerDecoder = kTRUE, Bool_t useFastTriggerDecoder = kTRUE
+     ); // Constructor
   virtual ~AliMUONDigitMaker(void); // Destructor
     
+  /// Code to indicate readout errors
+  enum ErrorCode
+  {
+    kOK=0,             ///< everything is OK 
+    kTrackerBAD=1<<1,  ///< tracker part had readout errors 
+    kTriggerBAD=1<<2   ///< trigger part had readout errors 
+  };
+  
   // write raw data
   Int_t  Raw2Digits(AliRawReader* rawReader, 
                     AliMUONVDigitStore* digitContainer=0,
@@ -39,6 +50,7 @@ class AliMUONDigitMaker : public TObject
 
   Int_t  ReadTrackerDDL(AliRawReader* rawReader);
   Int_t  ReadTriggerDDL(AliRawReader* rawReader);
+  Int_t  ReadTriggerDDLFast(AliRawReader* rawReader);
   
   Int_t TriggerDigits(Int_t nBoard, TArrayS* xyPattern, 
                       AliMUONVDigitStore& digitStore) const;
@@ -46,12 +58,22 @@ class AliMUONDigitMaker : public TObject
         /// Set flag to generates scaler event
   void  SetScalerEvent() { fScalerEvent = kTRUE; }
 
-        /// Set Crate array
-  void  SetCrateManager(AliMUONTriggerCrateStore* crateManager) { fCrateManager =  crateManager; }
-
         /// Set flag whether or not we should generate digits for the trigger
   void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
 
+  Bool_t UsingFastTrackerDecoder() const;
+  Bool_t UsingFastTriggerDecoder() const;
+  void  SetFastTrackerDecoder(Bool_t useFastDecoder);
+  void  SetFastTriggerDecoder(Bool_t useFastDecoder);
+
+  /// Return the raw stream object which decodes DDL raw data from tracking stations.
+  AliMUONVRawStreamTracker* GetRawStreamTracker() const { return fRawStreamTracker; }
+
+  /// Return the raw stream object which decodes DDL raw data from the trigger system.
+  AliMUONVRawStreamTrigger* GetRawStreamTrigger() const { return fRawStreamTrigger; }
+
+  void Print(Option_t* opt="") const;
+
 private:
     
   /// Not implemented
@@ -59,26 +81,22 @@ private:
   /// Not implemented
   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
 
-  void GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg) const;
-
 private:
+  void CreateRawStreamTracker(Bool_t useFastDecoder);
+  void CreateRawStreamTrigger(Bool_t useFastDecoder);
 
-  Bool_t           fScalerEvent;       //!< flag to generates scaler event
+  Bool_t fScalerEvent;       //!< flag to generates scaler event
   Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
   
-  AliMUONRawStreamTracker* fRawStreamTracker;  //!< pointer of raw stream for tracker
-  AliMUONRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
-
-  AliMUONTriggerCrateStore* fCrateManager;     //!< Crate array
-
-  TStopwatch fTrackerTimer;                    //!< time watcher for tracker part
-  TStopwatch fTriggerTimer;                    //!< time watcher for trigger part
-  TStopwatch fMappingTimer;                    //!< time watcher for mapping-tracker part
+  AliMUONVRawStreamTracker* fRawStreamTracker; //!< pointer of raw stream for tracker
+  AliMUONVRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
 
   AliMUONVDigitStore* fDigitStore; //!< not owner
   AliMUONVTriggerStore* fTriggerStore; //!< not owner
+
+  AliMUONLogger* fLogger; //!< to log messages
   
-  ClassDef(AliMUONDigitMaker,4) // MUON digit maker from rawdata
+  ClassDef(AliMUONDigitMaker,6) // MUON digit maker from rawdata
 };
        
 #endif