- Adding hits pattern in trigger chambers in AliMUONTrack (Diego)
[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 #include "TStopwatch.h"
16
17 class TList;
18 class TArrayS;
19
20 class AliRawReader;
21 class AliMUONData;
22 class AliMUONDigit;
23 class AliMUONGlobalTrigger;
24 class AliMUONLocalTrigger;
25 class AliMUONTriggerCrateStore;
26 class AliMUONLocalStruct;
27
28 class AliMUONRawStreamTracker;
29 class AliMUONRawStreamTrigger;
30
31 class AliMUONDigitMaker : public TObject 
32 {
33  public:
34   AliMUONDigitMaker(Bool_t digit = kTRUE); // Constructor
35   virtual ~AliMUONDigitMaker(void); // Destructor
36     
37   // write raw data
38   Int_t  Raw2Digits(AliRawReader* rawReader);
39
40   Int_t  ReadTrackerDDL(AliRawReader* rawReader);
41   Int_t  ReadTriggerDDL(AliRawReader* rawReader);
42  
43          /// Return MUON data
44   AliMUONData*   GetMUONData() const {return fMUONData;}
45         /// Set MUON data
46   void SetMUONData(AliMUONData* data) {fMUONData = data;}
47  
48   Int_t GetMapping(Int_t buspatchId, UShort_t manuId, 
49                           UChar_t channelId, AliMUONDigit* digit );
50
51   Int_t TriggerDigits(Int_t nBoard, TArrayS* xyPattern, TList& digitList );
52
53         /// Set flag to generates scaler event
54   void  SetScalerEvent() {fScalerEvent = kTRUE;}
55
56       /// Disable trigger rawdata reading
57   void  DisableTrigger() {fTriggerFlag = kFALSE;}
58
59         /// Set Crate array
60   void  SetCrateManager(AliMUONTriggerCrateStore* crateManager) {fCrateManager =  crateManager;}
61
62        /// enable only list of digits for the display
63   void SetDisplayFlag() { fDisplayFlag = kTRUE;  fDigitFlag = kFALSE;}
64
65
66  private:
67   /// Not implemented
68   AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
69   /// Not implemented
70   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
71
72   void GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg) const;
73
74   AliMUONData*     fMUONData;          //!< Data container for MUON subsystem 
75   
76   Bool_t           fScalerEvent;       //!< flag to generates scaler event
77
78   Bool_t           fDigitFlag;         //!< true for Digit, false for SDigit
79
80   Bool_t           fTriggerFlag;       //!< true for reading also trigger rawdata
81
82   Bool_t           fDisplayFlag;       //!< true for returning digits list to the display
83
84   AliMUONRawStreamTracker* fRawStreamTracker;  //!< pointer of raw stream for tracker
85   AliMUONRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
86
87   AliMUONDigit*        fDigit;                 //!< pointer to digits
88
89   AliMUONLocalTrigger*  fLocalTrigger;         //!< pointer to local trigger
90   AliMUONGlobalTrigger* fGlobalTrigger;        //!< pointer to local trigger
91
92   AliMUONTriggerCrateStore* fCrateManager;     //!< Crate array
93
94   TStopwatch fTrackerTimer;                    //!< time watcher for tracker part
95   TStopwatch fTriggerTimer;                    //!< time watcher for trigger part
96   TStopwatch fMappingTimer;                    //!< time watcher for mapping-tracker part
97
98   ClassDef(AliMUONDigitMaker,1) // MUON digit maker from rawdata
99 };
100         
101 #endif