ROOT logo
#ifndef ALIMUONDIGITMAKER_H
#define ALIMUONDIGITMAKER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/*$Id$*/

/// \ingroup base
/// \class AliMUONDigitMaker
/// \brief Reading Raw data class for trigger and tracker chambers
///
//  Author: Ch, Finck

#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); // 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,
                    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;

        /// Set flag to generates scaler event
  void  SetScalerEvent() { fScalerEvent = kTRUE; }

        /// Set flag whether or not we should generate digits for the trigger
  void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }

  /// Set flag whether or not we should generate digits for the tracker
  void  SetMakeTrackerDigits(Bool_t flag = kTRUE) { fMakeTrackerDigits = flag; }

  /// Return the raw stream object which decodes DDL raw data from tracking stations.
  AliMUONRawStreamTrackerHP* GetRawStreamTracker() const { return fRawStreamTracker; }

  /// Return the raw stream object which decodes DDL raw data from the trigger system.
  AliMUONRawStreamTriggerHP* GetRawStreamTrigger() const { return fRawStreamTrigger; }

  void Print(Option_t* opt="") const;

  void SetTryRecover(Bool_t flag);

private:
    
  /// Not implemented
  AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
  /// Not implemented
  AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator

private:
  Bool_t fScalerEvent;       //!< flag to generates scaler event
  Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
  Bool_t fMakeTrackerDigits; //!< whether or not we should generate digits for the tracker
  
  AliMUONRawStreamTrackerHP* fRawStreamTracker; //!< pointer of raw stream for tracker
  AliMUONRawStreamTriggerHP* fRawStreamTrigger;  //!< pointer of raw stream for trigger

  AliMUONVDigitStore* fDigitStore; //!< not owner
  AliMUONVTriggerStore* fTriggerStore; //!< not owner

  AliMUONLogger* fLogger; //!< to log messages
  
  ClassDef(AliMUONDigitMaker,8) // MUON digit maker from rawdata
};
	
#endif
 AliMUONDigitMaker.h:1
 AliMUONDigitMaker.h:2
 AliMUONDigitMaker.h:3
 AliMUONDigitMaker.h:4
 AliMUONDigitMaker.h:5
 AliMUONDigitMaker.h:6
 AliMUONDigitMaker.h:7
 AliMUONDigitMaker.h:8
 AliMUONDigitMaker.h:9
 AliMUONDigitMaker.h:10
 AliMUONDigitMaker.h:11
 AliMUONDigitMaker.h:12
 AliMUONDigitMaker.h:13
 AliMUONDigitMaker.h:14
 AliMUONDigitMaker.h:15
 AliMUONDigitMaker.h:16
 AliMUONDigitMaker.h:17
 AliMUONDigitMaker.h:18
 AliMUONDigitMaker.h:19
 AliMUONDigitMaker.h:20
 AliMUONDigitMaker.h:21
 AliMUONDigitMaker.h:22
 AliMUONDigitMaker.h:23
 AliMUONDigitMaker.h:24
 AliMUONDigitMaker.h:25
 AliMUONDigitMaker.h:26
 AliMUONDigitMaker.h:27
 AliMUONDigitMaker.h:28
 AliMUONDigitMaker.h:29
 AliMUONDigitMaker.h:30
 AliMUONDigitMaker.h:31
 AliMUONDigitMaker.h:32
 AliMUONDigitMaker.h:33
 AliMUONDigitMaker.h:34
 AliMUONDigitMaker.h:35
 AliMUONDigitMaker.h:36
 AliMUONDigitMaker.h:37
 AliMUONDigitMaker.h:38
 AliMUONDigitMaker.h:39
 AliMUONDigitMaker.h:40
 AliMUONDigitMaker.h:41
 AliMUONDigitMaker.h:42
 AliMUONDigitMaker.h:43
 AliMUONDigitMaker.h:44
 AliMUONDigitMaker.h:45
 AliMUONDigitMaker.h:46
 AliMUONDigitMaker.h:47
 AliMUONDigitMaker.h:48
 AliMUONDigitMaker.h:49
 AliMUONDigitMaker.h:50
 AliMUONDigitMaker.h:51
 AliMUONDigitMaker.h:52
 AliMUONDigitMaker.h:53
 AliMUONDigitMaker.h:54
 AliMUONDigitMaker.h:55
 AliMUONDigitMaker.h:56
 AliMUONDigitMaker.h:57
 AliMUONDigitMaker.h:58
 AliMUONDigitMaker.h:59
 AliMUONDigitMaker.h:60
 AliMUONDigitMaker.h:61
 AliMUONDigitMaker.h:62
 AliMUONDigitMaker.h:63
 AliMUONDigitMaker.h:64
 AliMUONDigitMaker.h:65
 AliMUONDigitMaker.h:66
 AliMUONDigitMaker.h:67
 AliMUONDigitMaker.h:68
 AliMUONDigitMaker.h:69
 AliMUONDigitMaker.h:70
 AliMUONDigitMaker.h:71
 AliMUONDigitMaker.h:72
 AliMUONDigitMaker.h:73
 AliMUONDigitMaker.h:74
 AliMUONDigitMaker.h:75
 AliMUONDigitMaker.h:76
 AliMUONDigitMaker.h:77
 AliMUONDigitMaker.h:78
 AliMUONDigitMaker.h:79
 AliMUONDigitMaker.h:80
 AliMUONDigitMaker.h:81
 AliMUONDigitMaker.h:82
 AliMUONDigitMaker.h:83
 AliMUONDigitMaker.h:84
 AliMUONDigitMaker.h:85
 AliMUONDigitMaker.h:86
 AliMUONDigitMaker.h:87
 AliMUONDigitMaker.h:88
 AliMUONDigitMaker.h:89
 AliMUONDigitMaker.h:90
 AliMUONDigitMaker.h:91
 AliMUONDigitMaker.h:92
 AliMUONDigitMaker.h:93
 AliMUONDigitMaker.h:94
 AliMUONDigitMaker.h:95
 AliMUONDigitMaker.h:96
 AliMUONDigitMaker.h:97
 AliMUONDigitMaker.h:98
 AliMUONDigitMaker.h:99
 AliMUONDigitMaker.h:100
 AliMUONDigitMaker.h:101
 AliMUONDigitMaker.h:102