ROOT logo
// @(#) $Id$
// Author: Fons Rademakers  26/11/99

/**************************************************************************
 * Copyright(c) 1998-2003, 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.                  *
 **************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliRawEvent                                                          //
//                                                                      //
// Set of classes defining the ALICE RAW event format. The AliRawEvent  //
// class defines a RAW event. It consists of an AliEventHeader object   //
// an AliEquipmentHeader object, an AliRawData object and an array of   //
// sub-events, themselves also being AliRawEvents. The number of        //
// sub-events depends on the number of DATE LDC's.                      //
// The AliRawEvent objects are written to a ROOT file using different   //
// technologies, i.e. to local disk via AliRawDB or via rfiod using     //
// AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
// rootd using AliRawCastorDB (and for performance testing there is     //
// also AliRawNullDB).                                                  //
// The AliStats class provides statics information that is added as     //
// a single keyed object to each raw file.                              //
// The AliTagDB provides an interface to a TAG database.                //
// The AliMDC class is usid by the "alimdc" stand-alone program         //
// that reads data directly from DATE.                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <AliRawDataArray.h>

#include "AliRawEquipmentHeader.h"
#include "AliRawData.h"

#include "AliRawEquipment.h"


ClassImp(AliRawEquipment)


//______________________________________________________________________________
AliRawEquipment::AliRawEquipment():
fEqpHdr(NULL),
fRawData(NULL),
fRawDataRef(NULL)
{
   // Create ALICE equipment object.

}

//______________________________________________________________________________
AliRawEquipmentHeader *AliRawEquipment::GetEquipmentHeader()
{
   // Get equipment header part of AliRawEquipment.

   if (!fEqpHdr)
      fEqpHdr = new AliRawEquipmentHeader;

   return fEqpHdr;
}

//______________________________________________________________________________
AliRawData *AliRawEquipment::GetRawData()
{
   // Get raw data part of AliRawEquipment.

  if (!fRawData) {
    if (!fRawDataRef.IsValid())
      fRawData = new AliRawData;
    else {
      fRawData = (AliRawData*)fRawDataRef.GetObject();
    }
  }
  return fRawData;
}

//______________________________________________________________________________
AliRawEquipment::~AliRawEquipment()
{
   // Clean up event object. Delete also, possible, private raw data.

   delete fEqpHdr;
   delete fRawData;
}

//______________________________________________________________________________
void AliRawEquipment::CloneRawData(const AliRawData *rawData)
{
  // Clone the input raw data and
  // flush the TRef

  fRawDataRef = NULL;
  if (rawData) fRawData = (AliRawData*)rawData->Clone();
}

//______________________________________________________________________________
void AliRawEquipment::Streamer(TBuffer &R__b)
{
   // Stream an object of class AliRawEquipment.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> fEqpHdr;
      R__b >> fRawData;
      fRawDataRef.Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, AliRawEquipment::IsA());
   } else {
      R__c = R__b.WriteVersion(AliRawEquipment::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b << fEqpHdr;
      R__b << fRawData;
      fRawDataRef.Streamer(R__b);
      R__b.SetByteCount(R__c, kTRUE);
   }
}
 AliRawEquipment.cxx:1
 AliRawEquipment.cxx:2
 AliRawEquipment.cxx:3
 AliRawEquipment.cxx:4
 AliRawEquipment.cxx:5
 AliRawEquipment.cxx:6
 AliRawEquipment.cxx:7
 AliRawEquipment.cxx:8
 AliRawEquipment.cxx:9
 AliRawEquipment.cxx:10
 AliRawEquipment.cxx:11
 AliRawEquipment.cxx:12
 AliRawEquipment.cxx:13
 AliRawEquipment.cxx:14
 AliRawEquipment.cxx:15
 AliRawEquipment.cxx:16
 AliRawEquipment.cxx:17
 AliRawEquipment.cxx:18
 AliRawEquipment.cxx:19
 AliRawEquipment.cxx:20
 AliRawEquipment.cxx:21
 AliRawEquipment.cxx:22
 AliRawEquipment.cxx:23
 AliRawEquipment.cxx:24
 AliRawEquipment.cxx:25
 AliRawEquipment.cxx:26
 AliRawEquipment.cxx:27
 AliRawEquipment.cxx:28
 AliRawEquipment.cxx:29
 AliRawEquipment.cxx:30
 AliRawEquipment.cxx:31
 AliRawEquipment.cxx:32
 AliRawEquipment.cxx:33
 AliRawEquipment.cxx:34
 AliRawEquipment.cxx:35
 AliRawEquipment.cxx:36
 AliRawEquipment.cxx:37
 AliRawEquipment.cxx:38
 AliRawEquipment.cxx:39
 AliRawEquipment.cxx:40
 AliRawEquipment.cxx:41
 AliRawEquipment.cxx:42
 AliRawEquipment.cxx:43
 AliRawEquipment.cxx:44
 AliRawEquipment.cxx:45
 AliRawEquipment.cxx:46
 AliRawEquipment.cxx:47
 AliRawEquipment.cxx:48
 AliRawEquipment.cxx:49
 AliRawEquipment.cxx:50
 AliRawEquipment.cxx:51
 AliRawEquipment.cxx:52
 AliRawEquipment.cxx:53
 AliRawEquipment.cxx:54
 AliRawEquipment.cxx:55
 AliRawEquipment.cxx:56
 AliRawEquipment.cxx:57
 AliRawEquipment.cxx:58
 AliRawEquipment.cxx:59
 AliRawEquipment.cxx:60
 AliRawEquipment.cxx:61
 AliRawEquipment.cxx:62
 AliRawEquipment.cxx:63
 AliRawEquipment.cxx:64
 AliRawEquipment.cxx:65
 AliRawEquipment.cxx:66
 AliRawEquipment.cxx:67
 AliRawEquipment.cxx:68
 AliRawEquipment.cxx:69
 AliRawEquipment.cxx:70
 AliRawEquipment.cxx:71
 AliRawEquipment.cxx:72
 AliRawEquipment.cxx:73
 AliRawEquipment.cxx:74
 AliRawEquipment.cxx:75
 AliRawEquipment.cxx:76
 AliRawEquipment.cxx:77
 AliRawEquipment.cxx:78
 AliRawEquipment.cxx:79
 AliRawEquipment.cxx:80
 AliRawEquipment.cxx:81
 AliRawEquipment.cxx:82
 AliRawEquipment.cxx:83
 AliRawEquipment.cxx:84
 AliRawEquipment.cxx:85
 AliRawEquipment.cxx:86
 AliRawEquipment.cxx:87
 AliRawEquipment.cxx:88
 AliRawEquipment.cxx:89
 AliRawEquipment.cxx:90
 AliRawEquipment.cxx:91
 AliRawEquipment.cxx:92
 AliRawEquipment.cxx:93
 AliRawEquipment.cxx:94
 AliRawEquipment.cxx:95
 AliRawEquipment.cxx:96
 AliRawEquipment.cxx:97
 AliRawEquipment.cxx:98
 AliRawEquipment.cxx:99
 AliRawEquipment.cxx:100
 AliRawEquipment.cxx:101
 AliRawEquipment.cxx:102
 AliRawEquipment.cxx:103
 AliRawEquipment.cxx:104
 AliRawEquipment.cxx:105
 AliRawEquipment.cxx:106
 AliRawEquipment.cxx:107
 AliRawEquipment.cxx:108
 AliRawEquipment.cxx:109
 AliRawEquipment.cxx:110
 AliRawEquipment.cxx:111
 AliRawEquipment.cxx:112
 AliRawEquipment.cxx:113
 AliRawEquipment.cxx:114
 AliRawEquipment.cxx:115
 AliRawEquipment.cxx:116
 AliRawEquipment.cxx:117
 AliRawEquipment.cxx:118
 AliRawEquipment.cxx:119
 AliRawEquipment.cxx:120
 AliRawEquipment.cxx:121
 AliRawEquipment.cxx:122
 AliRawEquipment.cxx:123
 AliRawEquipment.cxx:124
 AliRawEquipment.cxx:125
 AliRawEquipment.cxx:126
 AliRawEquipment.cxx:127
 AliRawEquipment.cxx:128