]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RAW/AliRawEquipment.cxx
FMD settings uncommented and med ids decreased by 1
[u/mrichter/AliRoot.git] / RAW / AliRawEquipment.cxx
index 0bc634077dd4fe699e9bc3030db8a6b334639ed0..fc8e5873ea0c839790997cdaab7ec173d1d4c82b 100644 (file)
@@ -1,4 +1,4 @@
-// @(#)alimdc:$Name$:$Id$
+// @(#) $Id$
 // Author: Fons Rademakers  26/11/99
 
 /**************************************************************************
@@ -38,6 +38,8 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
+#include <AliRawDataArray.h>
+
 #include "AliRawEquipmentHeader.h"
 #include "AliRawData.h"
 
@@ -50,7 +52,8 @@ ClassImp(AliRawEquipment)
 //______________________________________________________________________________
 AliRawEquipment::AliRawEquipment():
 fEqpHdr(NULL),
-fRawData(NULL)
+fRawData(NULL),
+fRawDataRef(NULL)
 {
    // Create ALICE equipment object.
 
@@ -72,28 +75,54 @@ AliRawData *AliRawEquipment::GetRawData()
 {
    // 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);
+   }
 }