]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDspHeader.cxx
Fixes for #86279 Improper usage of TClonesArrays in MUON
[u/mrichter/AliRoot.git] / MUON / AliMUONDspHeader.cxx
index 880b5fee8ccc55641c04efa1f5ab4734728e2c0e..8de2119a7cac0eea18310bc10545fd3123938870 100644 (file)
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
+
+/* $Id$ */
  
 #include "AliMUONDspHeader.h"
 #include "AliMUONBusStruct.h"
+#include <Riostream.h>
 
-
-/// 
+//-----------------------------------------------------------------------------
+/// \class AliMUONDspHeader
 /// DSP structure for tracker raw data.
 /// Each block contains at most 5 Dsp structures.
 /// Beside the total length and length of the below data
 /// the header of the Dsp contains the front end DSP id, trigger words
 /// and event word (1 for nb of word is odd and 0 if not 
 ///
+/// \author Christian Finck
+//-----------------------------------------------------------------------------
 
+/// \cond CLASSIMP
 ClassImp(AliMUONDspHeader)
+/// \endcond
   
-  const Int_t AliMUONDspHeader::fgkHeaderLength = 8;
+  const Int_t  AliMUONDspHeader::fgkHeaderLength = 10;
+  const UInt_t AliMUONDspHeader::fgkDefaultDataKey = 0xF000000F;
+  const UInt_t AliMUONDspHeader::fgkDefaultPaddingWord = 0xBEEFFACE;
 
 //___________________________________________
 AliMUONDspHeader::AliMUONDspHeader()
   :  TObject(),
+     fDataKey(0),
      fTotalLength(0),
      fLength(0),
      fDspId(0),
-     fEventWord(0)
+     fBlkL1ATrigger(0),
+     fMiniEventId(0),
+     fL1ATrigger(0),
+     fL1RTrigger(0),
+     fPaddingWord(0),
+     fErrorWord(0),
+     fBusPatchArray(new TClonesArray("AliMUONBusStruct",5))
 {
-  //
-  //ctor
-  //
-  for (Int_t i = 0; i < 4; i++)
-    fTriggerWord[i] = 0;
-
-  fBusPatchArray  = new TClonesArray("AliMUONBusStruct",5);
+  ///
+  ///ctor
+  ///
 
 }
 
 //___________________________________________
 AliMUONDspHeader::~AliMUONDspHeader()
 {
-  //
-  // dtr
-  //
+  ///
+  /// dtr
+  ///
   fBusPatchArray->Delete();
   delete fBusPatchArray;
 }
 
 //___________________________________________
 AliMUONDspHeader::AliMUONDspHeader(const AliMUONDspHeader& event)
-  :  TObject(event)
+  :  TObject(event),
+     fDataKey(event.fDataKey),
+     fTotalLength(event.fTotalLength),
+     fLength(event.fLength),
+     fDspId(event.fDspId),
+     fBlkL1ATrigger(event.fBlkL1ATrigger),
+     fMiniEventId(event.fMiniEventId),
+     fL1ATrigger(event.fL1ATrigger),
+     fL1RTrigger(event.fL1RTrigger),
+     fPaddingWord(event.fPaddingWord),
+     fErrorWord(event.fErrorWord),
+     fBusPatchArray(new TClonesArray("AliMUONBusStruct", 5))
 {
-  // 
-  // copy constructor
-  //
-  fTotalLength = event.fTotalLength;
-  fLength      = event.fLength;
-  fDspId       = event.fDspId;
-  fEventWord   = event.fEventWord;
+  /// 
+  /// copy constructor
+  ///
 
-  //ctor
-  for (Int_t i = 0; i < 4; i++)
-    fTriggerWord[i] = event.fTriggerWord[i];
-
-  fBusPatchArray = new TClonesArray("AliMUONBusStruct", 5);
   for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
     {new ((*fBusPatchArray)[fBusPatchArray->GetEntriesFast()]) 
         AliMUONBusStruct(*(AliMUONBusStruct*)(event.fBusPatchArray)->At(index));}
@@ -85,19 +99,22 @@ AliMUONDspHeader::AliMUONDspHeader(const AliMUONDspHeader& event)
 //___________________________________________
 AliMUONDspHeader& AliMUONDspHeader::operator=(const AliMUONDspHeader& event)
 {
-  //
-  // assignemnt constructor
-  //
+  ///
+  /// assignemnt constructor
+  ///
   if (this == &event) return *this;
 
-  fTotalLength = event.fTotalLength;
-  fLength      = event.fLength;
-  fDspId       = event.fDspId;
-  fEventWord   = event.fEventWord;
+  fDataKey       = event.fDataKey;
+  fTotalLength   = event.fTotalLength;
+  fLength        = event.fLength;
+  fDspId         = event.fDspId;
+  fBlkL1ATrigger = event.fBlkL1ATrigger;
+  fMiniEventId   = event.fMiniEventId;
+  fL1ATrigger    = event.fL1ATrigger;
+  fL1RTrigger    = event.fL1RTrigger;
+  fPaddingWord   = event.fPaddingWord;
+  fErrorWord     = event.fErrorWord;
 
-  //ctor
-  for (Int_t i = 0; i < 4; i++)
-    fTriggerWord[i] = event.fTriggerWord[i];
 
   fBusPatchArray = new TClonesArray("AliMUONBusStruct", 5);
   for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
@@ -109,19 +126,38 @@ AliMUONDspHeader& AliMUONDspHeader::operator=(const AliMUONDspHeader& event)
 //___________________________________________
 void AliMUONDspHeader::AddBusPatch(const AliMUONBusStruct& busPatch)
 {
-  // 
-  // adding buspatch info
-  // into TClonesArray
-  //
+  /// 
+  /// adding buspatch info
+  /// into TClonesArray
+  ///
   TClonesArray &eventArray = *fBusPatchArray;
   new(eventArray[eventArray.GetEntriesFast()]) AliMUONBusStruct(busPatch);
 }
 //___________________________________________
 void AliMUONDspHeader::Clear(Option_t* )
 {
-  // Clear TClones arrays
-  // instead of deleting
-  //
+  /// Clear TClones arrays
+  /// instead of deleting
+  ///
   fBusPatchArray->Clear("C");
  
 }
+
+//___________________________________________
+void AliMUONDspHeader::Print(Option_t* /*opt*/) const
+{
+  /// print out
+
+  cout << "FRT info"        << endl;
+  cout << "DataKey: "       << fDataKey << endl;
+  cout << "TotalLength: "   << fTotalLength << endl;
+  cout << "Length : "       << fLength << endl;
+  cout << "DspId: "         << fDspId << endl;
+  cout << "BlkL1ATrigger: " << fBlkL1ATrigger << endl;
+  cout << "MiniEventId: "   << fMiniEventId << endl;
+  cout << "L1ATrigger: "    << fL1ATrigger << endl;
+  cout << "L1RTrigger: "    << fL1RTrigger << endl;
+  cout << "PaddingWord: "   << fPaddingWord << endl;
+  cout << "ErrorWord: "     << fErrorWord << endl;
+
+}