* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
+
+ /* $Id$ */
+
#include "AliMUONDDLTracker.h"
-#include "AliRawDataHeader.h"
+#include "AliMUONBusStruct.h"
+#include "AliMUONDspHeader.h"
+#include "AliMUONBlockHeader.h"
+
+//-----------------------------------------------------------------------------
+/// \class AliMUONDDLTracker
+///
+/// A wrapper object for 1 DDL of the MUON tracking chambers.
+///
+/// \author C. Finck
+//-----------------------------------------------------------------------------
+
+/// \cond CLASSIMP
ClassImp(AliMUONDDLTracker)
- const Int_t AliMUONDDLTracker::fEndOfDDL = 0x0FFFFFFFF;
+/// \endcond
//___________________________________________
AliMUONDDLTracker::AliMUONDDLTracker()
: TObject(),
- fTotalBlkLength(0),
- fBlkLength(0),
- fDSPId(0),
- fPadding(0x0DEADDEAD),
- fTotalDspLength(0),
- fDspLength(0),
- fDSPId1(0),
- fEventWord(0)
+ fBlkHeaderArray(new TClonesArray("AliMUONBlockHeader", 2))
+{
+ ///
+ ///ctor
+ ///
+
+}
+
+//___________________________________________
+AliMUONDDLTracker::~AliMUONDDLTracker()
+{
+ ///
+ ///dtor
+ ///
+ fBlkHeaderArray->Delete();
+ delete fBlkHeaderArray;
+
+}
+
+//___________________________________________
+void AliMUONDDLTracker::AddBusPatch(const AliMUONBusStruct& busPatch, Int_t iBlock, Int_t iDsp )
+{
+ /// adding bus patch informations
+ /// for a given block & Dsp structure
+ /// using TClonesArrays
+
+ AliMUONBlockHeader* blockHeader = (AliMUONBlockHeader*)fBlkHeaderArray->At(iBlock);
+ AliMUONDspHeader* dspHeader = (AliMUONDspHeader*)blockHeader->GetDspHeaderEntry(iDsp);
+
+ TClonesArray* busPatchArray = (TClonesArray*)dspHeader->GetBusPatchArray();
+
+ TClonesArray &eventArray = *busPatchArray;
+ new(eventArray[eventArray.GetEntriesFast()]) AliMUONBusStruct(busPatch);
+}
+
+//___________________________________________
+void AliMUONDDLTracker::AddDspHeader(const AliMUONDspHeader& dspHeader, Int_t iBlock)
{
- //ctor
- for (Int_t i = 0; i < 4; i++)
- fBlkTriggerWord[i] = fDspTriggerWord[i] = 0;
+ /// adding DspHeader informations
+ /// for a given block structure
+ /// using TClonesArrays
+
+ AliMUONBlockHeader* blockHeader = (AliMUONBlockHeader*)fBlkHeaderArray->At(iBlock);
+
+ TClonesArray* dspHeaderArray = (TClonesArray*)blockHeader->GetDspHeaderArray();
+
+ TClonesArray &dspArray = *dspHeaderArray;
+ new(dspArray[dspArray.GetEntriesFast()]) AliMUONDspHeader(dspHeader);
+}
+
+//___________________________________________
+void AliMUONDDLTracker::AddBlkHeader(const AliMUONBlockHeader& blkHeader)
+{
+ /// adding Block header informations
+ /// for a given block structure
+ /// using TClonesArrays
+
+ TClonesArray &blkArray = *fBlkHeaderArray;
+ new(blkArray[blkArray.GetEntriesFast()]) AliMUONBlockHeader(blkHeader);
+}
+
+//___________________________________________
+void AliMUONDDLTracker::Clear(Option_t* )
+{
+ /// Clear TClones arrays
+ /// instead of deleting
+ ///
+ fBlkHeaderArray->Clear("C");
+
}