]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitMaker.h
Write only detector coefficients from HLT (Raphaelle)
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.h
index 354825d912815b13a21300f9c65fec807dfb9cb0..a7a2e57d8ab35b7cc73d9c71d3c021ab83987f6f 100644 (file)
@@ -5,73 +5,94 @@
 
 /*$Id$*/
 
-/// \ingroup rec
+/// \ingroup base
 /// \class AliMUONDigitMaker
-/// \brief Raw data class for trigger and tracker chambers
+/// \brief Reading Raw data class for trigger and tracker chambers
 ///
-/// Readding Raw data class for trigger and tracker chambers
+//  Author: Ch, Finck
 
 #include <TObject.h>
-#include "TStopwatch.h"
 
-class AliMpBusPatch;
-class AliMUONData;
-class AliMUONDigit;
-class AliMUONGlobalTrigger;
-class AliMUONLocalTrigger;
+class TArrayS;
 
-class AliMpSegFactory;
-class AliMUONRawStreamTracker;
-class AliMUONRawStreamTrigger;
+class AliRawReader;
+class AliMUONLocalStruct;
+
+class AliMUONRawStreamTrackerHP;
+class AliMUONRawStreamTriggerHP;
+
+class AliMUONVDigitStore;
+class AliMUONVTriggerStore;
+
+class AliMUONLogger;
 
 class AliMUONDigitMaker : public TObject 
 {
  public:
-  AliMUONDigitMaker(AliMUONData* data); // Constructor
+  AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t a, Bool_t b);
+
+  AliMUONDigitMaker(Bool_t enableErrorLogger = 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);
+  Int_t  Raw2Digits(AliRawReader* rawReader, 
+                    AliMUONVDigitStore* digitContainer=0,
+                    AliMUONVTriggerStore* triggerStore=0);
 
   Int_t  ReadTrackerDDL(AliRawReader* rawReader);
   Int_t  ReadTriggerDDL(AliRawReader* rawReader);
+  
+  Int_t TriggerDigits(Int_t nBoard, TArrayS* xyPattern, 
+                      AliMUONVDigitStore& digitStore) const;
 
-  AliMUONData*   GetMUONData() const {return fMUONData;}
-  void SetMUONData(AliMUONData* data) {fMUONData = data;}
-  Int_t GetMapping(Int_t buspatchId, UShort_t manuId, 
-                         UChar_t channelId, AliMUONDigit* digit );
-
-  void  SetScalerEvent() {fScalerEvent = kTRUE;}
+  Bool_t TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore, 
+                              AliMUONVDigitStore& digitStore) const;
 
- protected:
-  AliMUONDigitMaker();                  // Default constructor
-  AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
-  AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
+        /// Set flag to generates scaler event
+  void  SetScalerEvent() { fScalerEvent = kTRUE; }
 
- private:
+        /// Set flag whether or not we should generate digits for the trigger
+  void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
 
-  AliMUONData*     fMUONData;          //!< Data container for MUON subsystem 
-  
-  AliMpSegFactory* fSegFactory;        //!< Mapping segmentation factory
+  /// Return the raw stream object which decodes DDL raw data from tracking stations.
+  AliMUONRawStreamTrackerHP* GetRawStreamTracker() const { return fRawStreamTracker; }
 
-  AliMpBusPatch*   fBusPatchManager;   //!< buspatch versus DE's & DDL
+  /// Return the raw stream object which decodes DDL raw data from the trigger system.
+  AliMUONRawStreamTriggerHP* GetRawStreamTrigger() const { return fRawStreamTrigger; }
 
-  Bool_t           fScalerEvent;       //!< flag to generates scaler event
+  void Print(Option_t* opt="") const;
 
-  AliMUONRawStreamTracker* fRawStreamTracker;  //!< pointer of raw stream for tracker
-  AliMUONRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
+  void SetTryRecover(Bool_t flag);
 
-  AliMUONDigit*        fDigit;                 //!< pointer to digits
+private:
+    
+  /// Not implemented
+  AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
+  /// Not implemented
+  AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
 
-  AliMUONLocalTrigger*  fLocalTrigger;         //!< pointer to local trigger
-  AliMUONGlobalTrigger* fGlobalTrigger;        //!< pointer to local trigger
+private:
+  Bool_t fScalerEvent;       //!< flag to generates scaler event
+  Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
+  
+  AliMUONRawStreamTrackerHP* fRawStreamTracker; //!< pointer of raw stream for tracker
+  AliMUONRawStreamTriggerHP* fRawStreamTrigger;  //!< pointer of raw stream for trigger
 
-  TStopwatch fTrackerTimer;                    //!< time watcher for tracker part
-  TStopwatch fTriggerTimer;                    //!< time watcher for trigger part
-  TStopwatch fMappingTimer;                    //!< time watcher for mapping-tracker part
+  AliMUONVDigitStore* fDigitStore; //!< not owner
+  AliMUONVTriggerStore* fTriggerStore; //!< not owner
 
-  ClassDef(AliMUONDigitMaker,1) // MUON digit maker from rawdata
+  AliMUONLogger* fLogger; //!< to log messages
+  
+  ClassDef(AliMUONDigitMaker,7) // MUON digit maker from rawdata
 };
        
 #endif