#include <TObject.h>
#include <TClonesArray.h>
-#include "AliMpBusPatch.h"
-#include "AliMUONSubEventTracker.h"
+#include "AliMUONBusStruct.h"
+#include "AliRawDataHeader.h"
+#include "TStopwatch.h"
-class TArrayI;
-class AliLoader;
class AliMUONData;
class AliMUONDigit;
-class AliMUONDDLTracker;
-class AliMUONDDLTrigger;
-class AliMUONGlobalTrigger;
-class AliMUONSubEventTrigger;
-class AliRawReader;
+class AliMUONDspHeader;
+class AliMUONBlockHeader;
+class AliMUONDarcHeader;
+class AliMUONRegHeader;
+class AliMUONLocalStruct;
class AliMUONGlobalTrigger;
+class AliMpBusPatch;
class AliMpSegFactory;
class AliMUONRawWriter : public TObject
{
public:
- AliMUONRawWriter(AliLoader* loader, AliMUONData* data); // Constructor
- virtual ~AliMUONRawWriter(void); // Destructor
+ AliMUONRawWriter(AliMUONData* data); // Constructor
+ virtual ~AliMUONRawWriter(); // Destructor
// write raw data
- Int_t Digits2Raw();
+ Int_t Digits2Raw();
- AliMUONData* GetMUONData() {return fMUONData;}
+ void SetScalerEvent() {fScalerEvent = kTRUE;}
+
+protected:
+ AliMUONRawWriter(); // Default constructor
+ AliMUONRawWriter (const AliMUONRawWriter& rhs); // copy constructor
+ AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs); // assignment operator
- void AddData(const AliMUONSubEventTracker* event) {
- TClonesArray &temp = *fSubEventArray;
- new(temp[temp.GetEntriesFast()])AliMUONSubEventTracker(*event);
- }
+ // writing raw data
+ Int_t WriteTrackerDDL(Int_t iCh);
+ Int_t WriteTriggerDDL();
+
+private:
- // could be private function (public for debugging)
- Int_t GetInvMapping(const AliMUONDigit* digit, Int_t &busPatchId,
- UShort_t &manuId, UChar_t &channelId);
+ void AddData(const AliMUONBusStruct& event)
+ {
+ TClonesArray &temp = *fBusArray;
+ new(temp[temp.GetEntriesFast()]) AliMUONBusStruct(event);
+ }
+ Int_t GetBusPatch(const AliMUONDigit& digit);
+
Int_t GetGlobalTriggerPattern(const AliMUONGlobalTrigger* gloTrg) const;
- protected:
- AliMUONRawWriter(); // Default constructor
- AliMUONRawWriter (const AliMUONRawWriter& rhs); // copy constructor
- AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs); // assignment operator
-
- private:
+private:
AliMUONData* fMUONData; //! Data container for MUON subsystem
- AliLoader* fLoader; //! alice loader
-
- AliMpSegFactory* fSegFactory; //! Mapping segmentation factory
-
FILE* fFile[2]; //! DDL binary file pointer one per 1/2 chamber
- TClonesArray* fSubEventArray; //! array to sub event tracker
+ TClonesArray* fBusArray; //! array to sub event tracker
- AliMUONDDLTracker* fDDLTracker; //! DDL tracker class pointers
- AliMUONDDLTrigger* fDDLTrigger; //! DDL trigger class pointers
-
- AliMpBusPatch* fBusPatchManager; //! buspatch versus DE's & DDL
-
- // writing raw data
- Int_t WriteTrackerDDL(Int_t iCh);
- Int_t WriteTriggerDDL();
-
+ AliMUONBlockHeader* fBlockHeader; //! DDL block header class pointers
+ AliMUONDspHeader* fDspHeader; //! DDL Dsp header class pointers
+ AliMUONBusStruct* fBusStruct; //! DDL bus patch structure class pointers
+ AliMUONDarcHeader* fDarcHeader; //! DDL darc header class pointers
+ AliMUONRegHeader* fRegHeader; //! DDL regional header class pointers
+ AliMUONLocalStruct* fLocalStruct; //! DDL local structure class pointers
+
+ AliMpBusPatch* fBusPatchManager; //! buspatch versus DE's & DDL
+
+ Bool_t fScalerEvent; // flag to generates scaler event
+
+ AliRawDataHeader fHeader; // header of DDL
+
+ static Int_t fgManuPerBusSwp1B[12]; //! array containing the first manuId for each buspatch st1, Bending
+ static Int_t fgManuPerBusSwp1NB[12]; //! array containing the first manuId for each buspatch st1, NBending
+
+ static Int_t fgManuPerBusSwp2B[12]; //! array containing the first manuId for each buspatch st2, Bending
+ static Int_t fgManuPerBusSwp2NB[12]; //! array containing the first manuId for each buspatch st2, NBending
+
+ TStopwatch fTrackerTimer; //!
+ TStopwatch fTriggerTimer; //!
+ TStopwatch fMappingTimer; //!
+
+ AliMpSegFactory* fSegFactory; //!
+
ClassDef(AliMUONRawWriter,1) // MUON cluster reconstructor in ALICE
};