- Removing AliMpSegFactory -> using AliMpSegmentation instead
[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 Raw data class for trigger and tracker chambers
11 ///
12 /// Readding Raw data class for trigger and tracker chambers
13
14 #include <TObject.h>
15 #include "TStopwatch.h"
16
17 class AliMpBusPatch;
18 class AliMUONData;
19 class AliMUONDigit;
20 class AliMUONGlobalTrigger;
21 class AliMUONLocalTrigger;
22 class AliMUONTriggerCrateStore;
23 class AliMUONLocalTriggerBoard;
24 class AliMUONLocalStruct;
25
26 class AliMUONRawStreamTracker;
27 class AliMUONRawStreamTrigger;
28
29 class AliMUONDigitMaker : public TObject 
30 {
31  public:
32   AliMUONDigitMaker(Bool_t digit = kTRUE); // Constructor
33   virtual ~AliMUONDigitMaker(void); // Destructor
34     
35   // write raw data
36   Int_t  Raw2Digits(AliRawReader* rawReader);
37
38   Int_t  ReadTrackerDDL(AliRawReader* rawReader);
39   Int_t  ReadTriggerDDL(AliRawReader* rawReader);
40  
41          /// Return MUON data
42   AliMUONData*   GetMUONData() const {return fMUONData;}
43         /// Set MUON data
44   void SetMUONData(AliMUONData* data) {fMUONData = data;}
45  
46   Int_t GetMapping(Int_t buspatchId, UShort_t manuId, 
47                           UChar_t channelId, AliMUONDigit* digit );
48
49   Int_t TriggerDigits(AliMUONLocalTriggerBoard* localBoard, 
50                       AliMUONLocalStruct* localStruct, TList& digitList );
51
52   void GetTriggerChamber(AliMUONLocalStruct* localStruct, 
53                          Int_t& xyPattern, Int_t& iChamber, Int_t& iCath, Int_t iCase );
54
55         /// Set flag to generates scaler event
56   void  SetScalerEvent() {fScalerEvent = kTRUE;}
57
58         /// Set Crate array
59   void  SetCrateManager(AliMUONTriggerCrateStore* crateManager) {fCrateManager =  crateManager;}
60
61  private:
62
63   AliMUONData*     fMUONData;          //!< Data container for MUON subsystem 
64   
65   AliMpBusPatch*   fBusPatchManager;   //!< buspatch versus DE's & DDL
66
67   Bool_t           fScalerEvent;       //!< flag to generates scaler event
68
69   Bool_t           fDigitFlag;        //!< true for Digit, false for SDigit
70
71   AliMUONRawStreamTracker* fRawStreamTracker;  //!< pointer of raw stream for tracker
72   AliMUONRawStreamTrigger* fRawStreamTrigger;  //!< pointer of raw stream for trigger
73
74   AliMUONDigit*        fDigit;                 //!< pointer to digits
75
76   AliMUONLocalTrigger*  fLocalTrigger;         //!< pointer to local trigger
77   AliMUONGlobalTrigger* fGlobalTrigger;        //!< pointer to local trigger
78
79   AliMUONTriggerCrateStore* fCrateManager;     //!< Crate array
80
81   TStopwatch fTrackerTimer;                    //!< time watcher for tracker part
82   TStopwatch fTriggerTimer;                    //!< time watcher for trigger part
83   TStopwatch fMappingTimer;                    //!< time watcher for mapping-tracker part
84
85   AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor
86   AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator
87
88   void GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg);
89
90   ClassDef(AliMUONDigitMaker,1) // MUON digit maker from rawdata
91 };
92         
93 #endif