ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * 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
//-----------------------------------------------------------------------------

using std::cout;
using std::endl;
/// \cond CLASSIMP
ClassImp(AliMUONDspHeader)
/// \endcond
  
  const Int_t  AliMUONDspHeader::fgkHeaderLength = 10;
  const UInt_t AliMUONDspHeader::fgkDefaultDataKey = 0xF000000F;
  const UInt_t AliMUONDspHeader::fgkDefaultPaddingWord = 0xBEEFFACE;

//___________________________________________
AliMUONDspHeader::AliMUONDspHeader(TRootIOCtor* /*dummy*/)
:  TObject(),
fDataKey(0),
fTotalLength(0),
fLength(0),
fDspId(0),
fBlkL1ATrigger(0),
fMiniEventId(0),
fL1ATrigger(0),
fL1RTrigger(0),
fPaddingWord(0),
fErrorWord(0),
fBusPatchArray(0x0)
{
  ///
  ///ctor
  ///
  
}

//___________________________________________
AliMUONDspHeader::AliMUONDspHeader()
  :  TObject(),
     fDataKey(0),
     fTotalLength(0),
     fLength(0),
     fDspId(0),
     fBlkL1ATrigger(0),
     fMiniEventId(0),
     fL1ATrigger(0),
     fL1RTrigger(0),
     fPaddingWord(0),
     fErrorWord(0),
     fBusPatchArray(new TClonesArray("AliMUONBusStruct",5))
{
  ///
  ///ctor
  ///

}

//___________________________________________
AliMUONDspHeader::~AliMUONDspHeader()
{
  ///
  /// dtr
  ///
  fBusPatchArray->Delete();
  delete fBusPatchArray;
}

//___________________________________________
AliMUONDspHeader::AliMUONDspHeader(const AliMUONDspHeader& 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
  ///

  for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
    {new ((*fBusPatchArray)[fBusPatchArray->GetEntriesFast()]) 
        AliMUONBusStruct(*(AliMUONBusStruct*)(event.fBusPatchArray)->At(index));}
  }
  // fBusPatchArray->SetOwner();
 
}

//___________________________________________
AliMUONDspHeader& AliMUONDspHeader::operator=(const AliMUONDspHeader& event)
{
  ///
  /// assignemnt constructor
  ///
  if (this == &event) return *this;

  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);
  for (Int_t index = 0; index < (event.fBusPatchArray)->GetEntriesFast(); index++) {
    {new ((*fBusPatchArray)[fBusPatchArray->GetEntriesFast()]) 
        AliMUONBusStruct(*(AliMUONBusStruct*)(event.fBusPatchArray)->At(index));}
  }
  return *this;
}
//___________________________________________
void AliMUONDspHeader::AddBusPatch(const AliMUONBusStruct& busPatch)
{
  /// 
  /// 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
  ///
  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;

}
 AliMUONDspHeader.cxx:1
 AliMUONDspHeader.cxx:2
 AliMUONDspHeader.cxx:3
 AliMUONDspHeader.cxx:4
 AliMUONDspHeader.cxx:5
 AliMUONDspHeader.cxx:6
 AliMUONDspHeader.cxx:7
 AliMUONDspHeader.cxx:8
 AliMUONDspHeader.cxx:9
 AliMUONDspHeader.cxx:10
 AliMUONDspHeader.cxx:11
 AliMUONDspHeader.cxx:12
 AliMUONDspHeader.cxx:13
 AliMUONDspHeader.cxx:14
 AliMUONDspHeader.cxx:15
 AliMUONDspHeader.cxx:16
 AliMUONDspHeader.cxx:17
 AliMUONDspHeader.cxx:18
 AliMUONDspHeader.cxx:19
 AliMUONDspHeader.cxx:20
 AliMUONDspHeader.cxx:21
 AliMUONDspHeader.cxx:22
 AliMUONDspHeader.cxx:23
 AliMUONDspHeader.cxx:24
 AliMUONDspHeader.cxx:25
 AliMUONDspHeader.cxx:26
 AliMUONDspHeader.cxx:27
 AliMUONDspHeader.cxx:28
 AliMUONDspHeader.cxx:29
 AliMUONDspHeader.cxx:30
 AliMUONDspHeader.cxx:31
 AliMUONDspHeader.cxx:32
 AliMUONDspHeader.cxx:33
 AliMUONDspHeader.cxx:34
 AliMUONDspHeader.cxx:35
 AliMUONDspHeader.cxx:36
 AliMUONDspHeader.cxx:37
 AliMUONDspHeader.cxx:38
 AliMUONDspHeader.cxx:39
 AliMUONDspHeader.cxx:40
 AliMUONDspHeader.cxx:41
 AliMUONDspHeader.cxx:42
 AliMUONDspHeader.cxx:43
 AliMUONDspHeader.cxx:44
 AliMUONDspHeader.cxx:45
 AliMUONDspHeader.cxx:46
 AliMUONDspHeader.cxx:47
 AliMUONDspHeader.cxx:48
 AliMUONDspHeader.cxx:49
 AliMUONDspHeader.cxx:50
 AliMUONDspHeader.cxx:51
 AliMUONDspHeader.cxx:52
 AliMUONDspHeader.cxx:53
 AliMUONDspHeader.cxx:54
 AliMUONDspHeader.cxx:55
 AliMUONDspHeader.cxx:56
 AliMUONDspHeader.cxx:57
 AliMUONDspHeader.cxx:58
 AliMUONDspHeader.cxx:59
 AliMUONDspHeader.cxx:60
 AliMUONDspHeader.cxx:61
 AliMUONDspHeader.cxx:62
 AliMUONDspHeader.cxx:63
 AliMUONDspHeader.cxx:64
 AliMUONDspHeader.cxx:65
 AliMUONDspHeader.cxx:66
 AliMUONDspHeader.cxx:67
 AliMUONDspHeader.cxx:68
 AliMUONDspHeader.cxx:69
 AliMUONDspHeader.cxx:70
 AliMUONDspHeader.cxx:71
 AliMUONDspHeader.cxx:72
 AliMUONDspHeader.cxx:73
 AliMUONDspHeader.cxx:74
 AliMUONDspHeader.cxx:75
 AliMUONDspHeader.cxx:76
 AliMUONDspHeader.cxx:77
 AliMUONDspHeader.cxx:78
 AliMUONDspHeader.cxx:79
 AliMUONDspHeader.cxx:80
 AliMUONDspHeader.cxx:81
 AliMUONDspHeader.cxx:82
 AliMUONDspHeader.cxx:83
 AliMUONDspHeader.cxx:84
 AliMUONDspHeader.cxx:85
 AliMUONDspHeader.cxx:86
 AliMUONDspHeader.cxx:87
 AliMUONDspHeader.cxx:88
 AliMUONDspHeader.cxx:89
 AliMUONDspHeader.cxx:90
 AliMUONDspHeader.cxx:91
 AliMUONDspHeader.cxx:92
 AliMUONDspHeader.cxx:93
 AliMUONDspHeader.cxx:94
 AliMUONDspHeader.cxx:95
 AliMUONDspHeader.cxx:96
 AliMUONDspHeader.cxx:97
 AliMUONDspHeader.cxx:98
 AliMUONDspHeader.cxx:99
 AliMUONDspHeader.cxx:100
 AliMUONDspHeader.cxx:101
 AliMUONDspHeader.cxx:102
 AliMUONDspHeader.cxx:103
 AliMUONDspHeader.cxx:104
 AliMUONDspHeader.cxx:105
 AliMUONDspHeader.cxx:106
 AliMUONDspHeader.cxx:107
 AliMUONDspHeader.cxx:108
 AliMUONDspHeader.cxx:109
 AliMUONDspHeader.cxx:110
 AliMUONDspHeader.cxx:111
 AliMUONDspHeader.cxx:112
 AliMUONDspHeader.cxx:113
 AliMUONDspHeader.cxx:114
 AliMUONDspHeader.cxx:115
 AliMUONDspHeader.cxx:116
 AliMUONDspHeader.cxx:117
 AliMUONDspHeader.cxx:118
 AliMUONDspHeader.cxx:119
 AliMUONDspHeader.cxx:120
 AliMUONDspHeader.cxx:121
 AliMUONDspHeader.cxx:122
 AliMUONDspHeader.cxx:123
 AliMUONDspHeader.cxx:124
 AliMUONDspHeader.cxx:125
 AliMUONDspHeader.cxx:126
 AliMUONDspHeader.cxx:127
 AliMUONDspHeader.cxx:128
 AliMUONDspHeader.cxx:129
 AliMUONDspHeader.cxx:130
 AliMUONDspHeader.cxx:131
 AliMUONDspHeader.cxx:132
 AliMUONDspHeader.cxx:133
 AliMUONDspHeader.cxx:134
 AliMUONDspHeader.cxx:135
 AliMUONDspHeader.cxx:136
 AliMUONDspHeader.cxx:137
 AliMUONDspHeader.cxx:138
 AliMUONDspHeader.cxx:139
 AliMUONDspHeader.cxx:140
 AliMUONDspHeader.cxx:141
 AliMUONDspHeader.cxx:142
 AliMUONDspHeader.cxx:143
 AliMUONDspHeader.cxx:144
 AliMUONDspHeader.cxx:145
 AliMUONDspHeader.cxx:146
 AliMUONDspHeader.cxx:147
 AliMUONDspHeader.cxx:148
 AliMUONDspHeader.cxx:149
 AliMUONDspHeader.cxx:150
 AliMUONDspHeader.cxx:151
 AliMUONDspHeader.cxx:152
 AliMUONDspHeader.cxx:153
 AliMUONDspHeader.cxx:154
 AliMUONDspHeader.cxx:155
 AliMUONDspHeader.cxx:156
 AliMUONDspHeader.cxx:157
 AliMUONDspHeader.cxx:158
 AliMUONDspHeader.cxx:159
 AliMUONDspHeader.cxx:160
 AliMUONDspHeader.cxx:161
 AliMUONDspHeader.cxx:162
 AliMUONDspHeader.cxx:163
 AliMUONDspHeader.cxx:164
 AliMUONDspHeader.cxx:165
 AliMUONDspHeader.cxx:166
 AliMUONDspHeader.cxx:167
 AliMUONDspHeader.cxx:168
 AliMUONDspHeader.cxx:169
 AliMUONDspHeader.cxx:170
 AliMUONDspHeader.cxx:171
 AliMUONDspHeader.cxx:172
 AliMUONDspHeader.cxx:173
 AliMUONDspHeader.cxx:174
 AliMUONDspHeader.cxx:175
 AliMUONDspHeader.cxx:176
 AliMUONDspHeader.cxx:177
 AliMUONDspHeader.cxx:178
 AliMUONDspHeader.cxx:179
 AliMUONDspHeader.cxx:180
 AliMUONDspHeader.cxx:181
 AliMUONDspHeader.cxx:182
 AliMUONDspHeader.cxx:183
 AliMUONDspHeader.cxx:184
 AliMUONDspHeader.cxx:185
 AliMUONDspHeader.cxx:186