]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONDigitMaker.h
291ad6eacd6d0e14ad036b1119548aa4f0fc51fc
[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 = kTRUE, Bool_t useFastTriggerDecoder = kTRUE
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   Bool_t TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore, 
59                               AliMUONVDigitStore& digitStore) const;
60
61         /// Set flag to generates scaler event
62   void  SetScalerEvent() { fScalerEvent = kTRUE; }
63
64         /// Set flag whether or not we should generate digits for the trigger
65   void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
66
67   Bool_t UsingFastTrackerDecoder() const;
68   Bool_t UsingFastTriggerDecoder() const;
69   void  SetFastTrackerDecoder(Bool_t useFastDecoder);
70   void  SetFastTriggerDecoder(Bool_t useFastDecoder);
71
72   /// Return the raw stream object which decodes DDL raw data from tracking stations.
73   AliMUONVRawStreamTracker* GetRawStreamTracker() const { return fRawStreamTracker; }
74
75   /// Return the raw stream object which decodes DDL raw data from the trigger system.
76   AliMUONVRawStreamTrigger* GetRawStreamTrigger() const { return fRawStreamTrigger; }
77
78   void Print(Option_t* opt="") const;
79
80 private:
81     
82   /// Not implemented
83   AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
84   /// Not implemented
85   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
86
87 private:
88   void CreateRawStreamTracker(Bool_t useFastDecoder);
89   void CreateRawStreamTrigger(Bool_t useFastDecoder);
90
91   Bool_t fScalerEvent;       //!< flag to generates scaler event
92   Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
93   
94   AliMUONVRawStreamTracker* fRawStreamTracker; //!< pointer of raw stream for tracker
95   AliMUONVRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
96
97   AliMUONVDigitStore* fDigitStore; //!< not owner
98   AliMUONVTriggerStore* fTriggerStore; //!< not owner
99
100   AliMUONLogger* fLogger; //!< to log messages
101   
102   ClassDef(AliMUONDigitMaker,6) // MUON digit maker from rawdata
103 };
104         
105 #endif