]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONDigitMaker.h
During simulation: fill STU region w/ non null time sums
[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 AliMUONRawStreamTrackerHP;
22 class AliMUONRawStreamTriggerHP;
23
24 class AliMUONVDigitStore;
25 class AliMUONVTriggerStore;
26
27 class AliMUONLogger;
28
29 class AliMUONDigitMaker : public TObject 
30 {
31  public:
32   AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t a, Bool_t b);
33
34   AliMUONDigitMaker(Bool_t enableErrorLogger = kTRUE); // Constructor
35
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   
54   Int_t TriggerDigits(Int_t nBoard, const TArrayS* xyPattern, 
55                       AliMUONVDigitStore& digitStore) const;
56
57   Bool_t TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore, 
58                               AliMUONVDigitStore& digitStore) const;
59
60         /// Set flag to generates scaler event
61   void  SetScalerEvent() { fScalerEvent = kTRUE; }
62
63         /// Set flag whether or not we should generate digits for the trigger
64   void  SetMakeTriggerDigits(Bool_t flag = kFALSE) { fMakeTriggerDigits = flag; }
65
66   /// Return the raw stream object which decodes DDL raw data from tracking stations.
67   AliMUONRawStreamTrackerHP* GetRawStreamTracker() const { return fRawStreamTracker; }
68
69   /// Return the raw stream object which decodes DDL raw data from the trigger system.
70   AliMUONRawStreamTriggerHP* GetRawStreamTrigger() const { return fRawStreamTrigger; }
71
72   void Print(Option_t* opt="") const;
73
74   void SetTryRecover(Bool_t flag);
75
76 private:
77     
78   /// Not implemented
79   AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
80   /// Not implemented
81   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
82
83 private:
84   Bool_t fScalerEvent;       //!< flag to generates scaler event
85   Bool_t fMakeTriggerDigits; //!< whether or not we should generate digits for the trigger
86   
87   AliMUONRawStreamTrackerHP* fRawStreamTracker; //!< pointer of raw stream for tracker
88   AliMUONRawStreamTriggerHP* fRawStreamTrigger;  //!< pointer of raw stream for trigger
89
90   AliMUONVDigitStore* fDigitStore; //!< not owner
91   AliMUONVTriggerStore* fTriggerStore; //!< not owner
92
93   AliMUONLogger* fLogger; //!< to log messages
94   
95   ClassDef(AliMUONDigitMaker,7) // MUON digit maker from rawdata
96 };
97         
98 #endif