#ifndef ALIMUONDIGITMAKER_H
#define ALIMUONDIGITMAKER_H
#include <TObject.h>
class TArrayS;
class AliRawReader;
class AliMUONLocalStruct;
class AliMUONRawStreamTrackerHP;
class AliMUONRawStreamTriggerHP;
class AliMUONVDigitStore;
class AliMUONVTriggerStore;
class AliMUONLogger;
class AliMUONDigitMaker : public TObject
{
public:
AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t a, Bool_t b);
AliMUONDigitMaker(Bool_t enableErrorLogger = kTRUE);
virtual ~AliMUONDigitMaker(void);
enum ErrorCode
{
kOK=0,
kTrackerBAD=1<<1,
kTriggerBAD=1<<2
};
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, const TArrayS* xyPattern,
AliMUONVDigitStore& digitStore, Bool_t warn = kTRUE) const;
Bool_t TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore,
AliMUONVDigitStore& digitStore) const;
void SetScalerEvent() { fScalerEvent = kTRUE; }
void SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
void SetMakeTrackerDigits(Bool_t flag = kTRUE) { fMakeTrackerDigits = flag; }
AliMUONRawStreamTrackerHP* GetRawStreamTracker() const { return fRawStreamTracker; }
AliMUONRawStreamTriggerHP* GetRawStreamTrigger() const { return fRawStreamTrigger; }
void Print(Option_t* opt="") const;
void SetTryRecover(Bool_t flag);
private:
AliMUONDigitMaker (const AliMUONDigitMaker& rhs);
AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs);
private:
Bool_t fScalerEvent;
Bool_t fMakeTriggerDigits;
Bool_t fMakeTrackerDigits;
AliMUONRawStreamTrackerHP* fRawStreamTracker;
AliMUONRawStreamTriggerHP* fRawStreamTrigger;
AliMUONVDigitStore* fDigitStore;
AliMUONVTriggerStore* fTriggerStore;
AliMUONLogger* fLogger;
ClassDef(AliMUONDigitMaker,8)
};
#endif