Update of HP decoders:
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.h
1 #ifndef ALIMUONDIGITMAKER_H
2 #define ALIMUONDIGITMAKER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*$Id$*/
7
8 /// \ingroup base
9 /// \class AliMUONDigitMaker
10 /// \brief Reading Raw data class for trigger and tracker chambers
11 ///
12 //  Author: Ch, Finck
13
14 #include <TObject.h>
15
16 class TArrayS;
17
18 class AliRawReader;
19 class AliMUONLocalStruct;
20
21 class AliMUONVRawStreamTracker;
22 class AliMUONVRawStreamTrigger;
23
24 class AliMUONVDigitStore;
25 class AliMUONVTriggerStore;
26
27 class AliMUONLogger;
28
29 class AliMUONDigitMaker : public TObject 
30 {
31  public:
32   AliMUONDigitMaker(
33          Bool_t enableErrorLogger = kTRUE,
34          Bool_t useFastTrackerDecoder = kFALSE, Bool_t useFastTriggerDecoder = kFALSE
35      ); // Constructor
36   virtual ~AliMUONDigitMaker(void); // Destructor
37     
38   /// Code to indicate readout errors
39   enum ErrorCode
40   {
41     kOK=0,             ///< everything is OK 
42     kTrackerBAD=1<<1,  ///< tracker part had readout errors 
43     kTriggerBAD=1<<2   ///< trigger part had readout errors 
44   };
45   
46   // write raw data
47   Int_t  Raw2Digits(AliRawReader* rawReader, 
48                     AliMUONVDigitStore* digitContainer=0,
49                     AliMUONVTriggerStore* triggerStore=0);
50
51   Int_t  ReadTrackerDDL(AliRawReader* rawReader);
52   Int_t  ReadTriggerDDL(AliRawReader* rawReader);
53   Int_t  ReadTriggerDDLFast(AliRawReader* rawReader);
54   
55   Int_t TriggerDigits(Int_t nBoard, TArrayS* xyPattern, 
56                       AliMUONVDigitStore& digitStore) const;
57
58         /// Set flag to generates scaler event
59   void  SetScalerEvent() { fScalerEvent = kTRUE; }
60
61         /// Set flag whether or not we should generate digits for the trigger
62   void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
63
64   Bool_t UsingFastTrackerDecoder() const;
65   Bool_t UsingFastTriggerDecoder() const;
66   void  SetFastTrackerDecoder(Bool_t useFastDecoder);
67   void  SetFastTriggerDecoder(Bool_t useFastDecoder);
68
69   void Print(Option_t* opt="") const;
70
71 private:
72     
73   /// Not implemented
74   AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
75   /// Not implemented
76   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
77
78 private:
79   void CreateRawStreamTracker(Bool_t useFastDecoder);
80   void CreateRawStreamTrigger(Bool_t useFastDecoder);
81
82   Bool_t fScalerEvent;       //!< flag to generates scaler event
83   Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
84   
85   AliMUONVRawStreamTracker* fRawStreamTracker; //!< pointer of raw stream for tracker
86   AliMUONVRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
87
88   AliMUONVDigitStore* fDigitStore; //!< not owner
89   AliMUONVTriggerStore* fTriggerStore; //!< not owner
90
91   AliMUONLogger* fLogger; //!< to log messages
92   
93   ClassDef(AliMUONDigitMaker,6) // MUON digit maker from rawdata
94 };
95         
96 #endif