/*$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 TArrayS;
-class AliMpBusPatch;
-class AliMUONData;
-class AliMUONDigit;
-class AliMUONGlobalTrigger;
-class AliMUONLocalTrigger;
+class AliRawReader;
+class AliMUONLocalStruct;
-class AliMpSegFactory;
-class AliMUONRawStreamTracker;
-class AliMUONRawStreamTrigger;
+class AliMUONVRawStreamTracker;
+class AliMUONVRawStreamTrigger;
+
+class AliMUONVDigitStore;
+class AliMUONVTriggerStore;
+
+class AliMUONLogger;
class AliMUONDigitMaker : public TObject
{
public:
- AliMUONDigitMaker(AliMUONData* data); // 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);
+ Int_t Raw2Digits(AliRawReader* rawReader,
+ AliMUONVDigitStore* digitContainer=0,
+ AliMUONVTriggerStore* triggerStore=0);
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;
- 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 );
+ /// Set flag to generates scaler event
+ void SetScalerEvent() { fScalerEvent = kTRUE; }
- void SetScalerEvent() {fScalerEvent = kTRUE;}
+ /// Set flag whether or not we should generate digits for the trigger
+ void SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
- protected:
- AliMUONDigitMaker(); // Default constructor
- AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
- AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
+ Bool_t UsingFastTrackerDecoder() const;
+ Bool_t UsingFastTriggerDecoder() const;
+ void SetFastTrackerDecoder(Bool_t useFastDecoder);
+ void SetFastTriggerDecoder(Bool_t useFastDecoder);
- private:
+ /// Return the raw stream object which decodes DDL raw data from tracking stations.
+ AliMUONVRawStreamTracker* GetRawStreamTracker() const { return fRawStreamTracker; }
- AliMUONData* fMUONData; //! Data container for MUON subsystem
-
- AliMpSegFactory* fSegFactory; //! Mapping segmentation factory
+ /// Return the raw stream object which decodes DDL raw data from the trigger system.
+ AliMUONVRawStreamTrigger* GetRawStreamTrigger() const { return fRawStreamTrigger; }
- AliMpBusPatch* fBusPatchManager; //! buspatch versus DE's & DDL
+ void Print(Option_t* opt="") const;
- Bool_t fScalerEvent; //! flag to generates scaler event
-
- AliMUONRawStreamTracker* fRawStreamTracker; //!pointer of raw stream for tracker
- AliMUONRawStreamTrigger* fRawStreamTrigger; //!pointer of raw stream for trigger
+private:
+
+ /// Not implemented
+ AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
+ /// Not implemented
+ AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
- AliMUONDigit* fDigit; //! pointer to digits
+private:
+ void CreateRawStreamTracker(Bool_t useFastDecoder);
+ void CreateRawStreamTrigger(Bool_t useFastDecoder);
- AliMUONLocalTrigger* fLocalTrigger; //! pointer to local trigger
- AliMUONGlobalTrigger* fGlobalTrigger; //! pointer to local trigger
+ Bool_t fScalerEvent; //!< flag to generates scaler event
+ Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
+
+ AliMUONVRawStreamTracker* fRawStreamTracker; //!< pointer of raw stream for tracker
+ AliMUONVRawStreamTrigger* fRawStreamTrigger; //!< pointer of raw stream for trigger
- TStopwatch fTrackerTimer; //!
- TStopwatch fTriggerTimer; //!
- TStopwatch fMappingTimer; //!
+ AliMUONVDigitStore* fDigitStore; //!< not owner
+ AliMUONVTriggerStore* fTriggerStore; //!< not owner
- ClassDef(AliMUONDigitMaker,1) // MUON digit maker from rawdata
+ AliMUONLogger* fLogger; //!< to log messages
+
+ ClassDef(AliMUONDigitMaker,6) // MUON digit maker from rawdata
};
#endif