1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 #include "AliMUONDspHeader.h"
19 #include "AliMUONBusStruct.h"
22 /// DSP structure for tracker raw data.
23 /// Each block contains at most 5 Dsp structures.
24 /// Beside the total length and length of the below data
25 /// the header of the Dsp contains the front end DSP id, trigger words
26 /// and event word (1 for nb of word is odd and 0 if not
30 ClassImp(AliMUONDspHeader)
33 const Int_t AliMUONDspHeader::fgkHeaderLength = 10;
34 const UInt_t AliMUONDspHeader::fgkDefaultDataKey = 0xF000000F;
35 const UInt_t AliMUONDspHeader::fgkDefaultPaddingWord = 0xBEEFFACE;
37 //___________________________________________
38 AliMUONDspHeader::AliMUONDspHeader()
50 fBusPatchArray(new TClonesArray("AliMUONBusStruct",5))
58 //___________________________________________
59 AliMUONDspHeader::~AliMUONDspHeader()
64 fBusPatchArray->Delete();
65 delete fBusPatchArray;
68 //___________________________________________
69 AliMUONDspHeader::AliMUONDspHeader(const AliMUONDspHeader& event)
71 fDataKey(event.fDataKey),
72 fTotalLength(event.fTotalLength),
73 fLength(event.fLength),
75 fBlkL1ATrigger(event.fBlkL1ATrigger),
76 fMiniEventId(event.fMiniEventId),
77 fL1ATrigger(event.fL1ATrigger),
78 fL1RTrigger(event.fL1RTrigger),
79 fPaddingWord(event.fPaddingWord),
80 fErrorWord(event.fErrorWord),
81 fBusPatchArray(new TClonesArray("AliMUONBusStruct", 5))
87 for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
88 {new ((*fBusPatchArray)[fBusPatchArray->GetEntriesFast()])
89 AliMUONBusStruct(*(AliMUONBusStruct*)(event.fBusPatchArray)->At(index));}
91 // fBusPatchArray->SetOwner();
95 //___________________________________________
96 AliMUONDspHeader& AliMUONDspHeader::operator=(const AliMUONDspHeader& event)
99 // assignemnt constructor
101 if (this == &event) return *this;
103 fDataKey = event.fDataKey;
104 fTotalLength = event.fTotalLength;
105 fLength = event.fLength;
106 fDspId = event.fDspId;
107 fBlkL1ATrigger = event.fBlkL1ATrigger;
108 fMiniEventId = event.fMiniEventId;
109 fL1ATrigger = event.fL1ATrigger;
110 fL1RTrigger = event.fL1RTrigger;
111 fPaddingWord = event.fPaddingWord;
112 fErrorWord = event.fErrorWord;
115 fBusPatchArray = new TClonesArray("AliMUONBusStruct", 5);
116 for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
117 {new ((*fBusPatchArray)[fBusPatchArray->GetEntriesFast()])
118 AliMUONBusStruct(*(AliMUONBusStruct*)(event.fBusPatchArray)->At(index));}
122 //___________________________________________
123 void AliMUONDspHeader::AddBusPatch(const AliMUONBusStruct& busPatch)
126 // adding buspatch info
129 TClonesArray &eventArray = *fBusPatchArray;
130 new(eventArray[eventArray.GetEntriesFast()]) AliMUONBusStruct(busPatch);
132 //___________________________________________
133 void AliMUONDspHeader::Clear(Option_t* )
135 // Clear TClones arrays
136 // instead of deleting
138 fBusPatchArray->Clear("C");