/*$Id$*/
-/// \ingroup rec
+/// \ingroup base
/// \class AliMUONRawWriter
/// \brief Raw data class for trigger and tracker chambers
///
-/// Writring Raw data class for trigger and tracker chambers
+// Author Christian Finck and Laurent Aphecetche, Subatech
#include <TObject.h>
-#include <TClonesArray.h>
-#include "AliMpBusPatch.h"
-#include "AliMUONSubEventTracker.h"
-
-class TArrayI;
-class AliLoader;
-class AliMUONData;
-class AliMUONDigit;
-class AliMUONDDLTracker;
-class AliMUONDDLTrigger;
-class AliMUONGlobalTrigger;
-class AliMUONSubEventTrigger;
-class AliRawReader;
+#include "AliFstream.h"
+
+class AliMUONBlockHeader;
+class AliMUONBusStruct;
+class AliMUONDarcHeader;
+class AliMUONVDigit;
+class AliMUONDspHeader;
class AliMUONGlobalTrigger;
-class AliMpSegFactory;
+class AliMUONLocalStruct;
+class AliMUONRegHeader;
+class AliMUONVDigitStore;
+class AliMUONVTriggerStore;
+class AliMpDDLStore;
+class AliMpExMap;
+class AliRawDataHeaderSim;
class AliMUONRawWriter : public TObject
{
public:
- AliMUONRawWriter(AliLoader* loader, AliMUONData* data); // Constructor
- virtual ~AliMUONRawWriter(void); // Destructor
+ AliMUONRawWriter(); // Constructor
+ virtual ~AliMUONRawWriter(); // Destructor
// write raw data
- Int_t Digits2Raw();
+ Int_t Digits2Raw(const AliMUONVDigitStore* digitStore, const AliMUONVTriggerStore* triggerStore);
+
+ void SetScalersNumbers();
- AliMUONData* GetMUONData() {return fMUONData;}
+ /// Set the header of DDL
+ void SetHeader(AliRawDataHeaderSim& header) {fHeader = &header;}
- void AddData(const AliMUONSubEventTracker* event) {
- TClonesArray &temp = *fSubEventArray;
- new(temp[temp.GetEntriesFast()])AliMUONSubEventTracker(*event);
- }
+private:
- // could be private function (public for debugging)
- Int_t GetInvMapping(const AliMUONDigit* digit, Int_t &busPatchId,
- UShort_t &manuId, UChar_t &channelId);
+ void Digits2BusPatchMap(const AliMUONVDigitStore& digitStore, AliMpExMap& busPatchMap);
+ void WriteTrackerDDL(AliMpExMap& busPatchMap, Int_t iDDL);
- Int_t GetGlobalTriggerPattern(const AliMUONGlobalTrigger* gloTrg) const;
+ //void WriteBusPatch(AliMUONLocalBusStruct* busStruct);
+
+ Int_t WriteTriggerDDL(const AliMUONVTriggerStore& triggerStore, AliFstream* file[2]);
+
+ Int_t GetBusPatch(const AliMUONVDigit& digit) const;
- protected:
- AliMUONRawWriter(); // Default constructor
+private:
+ /// Not implemented copy constructor
AliMUONRawWriter (const AliMUONRawWriter& rhs); // copy constructor
- AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs); // assignment operator
-
- private:
+ /// Not implemented assignment operator
+ AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs);
- AliMUONData* fMUONData; //! Data container for MUON subsystem
-
- AliLoader* fLoader; //! alice loader
-
- AliMpSegFactory* fSegFactory; //! Mapping segmentation factory
+ static void LocalWordPacking(UInt_t &word, UInt_t locId, UInt_t locDec,
+ UInt_t trigY, UInt_t posY, UInt_t posX,
+ UInt_t sdevX, UInt_t devX);
- FILE* fFile[2]; //! DDL binary file pointer one per 1/2 chamber
+ AliMUONBlockHeader* fBlockHeader; //!< DDL block header class pointers
+ AliMUONDspHeader* fDspHeader; //!< DDL Dsp header class pointers
+ AliMUONDarcHeader* fDarcHeader; //!< DDL darc header class pointers
+ AliMUONRegHeader* fRegHeader; //!< DDL regional header class pointers
+ AliMUONLocalStruct* fLocalStruct; //!< DDL local structure class pointers
- TClonesArray* fSubEventArray; //! array to sub event tracker
-
- AliMUONDDLTracker* fDDLTracker; //! DDL tracker class pointers
- AliMUONDDLTrigger* fDDLTrigger; //! DDL trigger class pointers
+ AliMpDDLStore* fDDLStore; //!< DDL store pointer
- AliMpBusPatch* fBusPatchManager; //! buspatch versus DE's & DDL
+ Bool_t fScalerEvent; ///< flag to generates scaler event
- // writing raw data
- Int_t WriteTrackerDDL(Int_t iCh);
- Int_t WriteTriggerDDL();
+ AliRawDataHeaderSim* fHeader; ///< header of DDL
+
+ Int_t fBufferSize; //!< size of internal data buffer
+ Int_t* fBuffer; //!< internal data buffer
- ClassDef(AliMUONRawWriter,1) // MUON cluster reconstructor in ALICE
+ ClassDef(AliMUONRawWriter,5) // MUON cluster reconstructor in ALICE
};
#endif