-// @(#)alimdc:$Name$:$Id$
+// @(#) $Id$
// Author: Fons Rademakers 26/11/99
/**************************************************************************
// AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via //
// rootd using AliRawCastorDB (and for performance testing there is //
// also AliRawNullDB). //
-// The AliRunDB class provides the interface to the run and file //
-// catalogues (AliEn or plain MySQL). //
// 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. //
// //
//////////////////////////////////////////////////////////////////////////
+#include <AliRawDataArray.h>
+
#include "AliRawEquipmentHeader.h"
#include "AliRawData.h"
//______________________________________________________________________________
AliRawEquipment::AliRawEquipment():
fEqpHdr(NULL),
-fRawData(NULL)
+fRawData(NULL),
+fRawDataRef(NULL)
{
// Create ALICE equipment object.
{
// Get raw data part of AliRawEquipment.
- if (!fRawData)
+ if (!fRawData) {
+ if (!fRawDataRef.IsValid())
fRawData = new AliRawData;
-
- return fRawData;
+ else {
+ fRawData = (AliRawData*)fRawDataRef.GetObject();
+ }
+ }
+ return fRawData;
}
//______________________________________________________________________________
-void AliRawEquipment::Reset()
+AliRawEquipment::~AliRawEquipment()
{
- // Reset the equipment in case it needs to be re-used (avoiding costly
- // new/delete cycle). We reset the size marker for the AliRawData
- // object.
+ // Clean up event object. Delete also, possible, private raw data.
- if (fEqpHdr) fEqpHdr->Reset();
- GetRawData()->SetSize(0);
+ delete fEqpHdr;
+ delete fRawData;
}
//______________________________________________________________________________
-AliRawEquipment::~AliRawEquipment()
+void AliRawEquipment::CloneRawData(const AliRawData *rawData)
{
- // Clean up event object. Delete also, possible, private raw data.
+ // Clone the input raw data and
+ // flush the TRef
- delete fEqpHdr;
- delete fRawData;
+ fRawDataRef = NULL;
+ if (rawData) rawData = (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);
+ }
}