]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
New method to resolve the TRefs and clone the raw-data itself. Will be used in order...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Sep 2009 21:55:03 +0000 (21:55 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Sep 2009 21:55:03 +0000 (21:55 +0000)
RAW/AliRawEquipment.cxx
RAW/AliRawEquipment.h
RAW/AliRawEquipmentV2.cxx
RAW/AliRawEquipmentV2.h
RAW/AliRawVEquipment.h

index 26747581df0eb8e8d0ea7d0433041e9d09955ccd..e9291c031fc61170fb401c6684d2230708d4f024 100644 (file)
@@ -94,6 +94,20 @@ AliRawEquipment::~AliRawEquipment()
    delete fRawData;
 }
 
+//______________________________________________________________________________
+void AliRawEquipment::CloneRawData()
+{
+  // Load raw-data part of the object via the TRef
+  // flush the Tref and clone the raw data
+
+  if (!fRawData) {
+    if (fRawDataRef.IsValid())
+      fRawData = (AliRawData*)fRawDataRef.GetObject();
+  }
+  fRawDataRef = NULL;
+  if (fRawData) fRawData = (AliRawData*)fRawData->Clone();
+}
+
 //______________________________________________________________________________
 void AliRawEquipment::Streamer(TBuffer &R__b)
 {
index f429242b8923acfad96e5aff47edd1a9efd3fe9b..a4c51a66ed91415dc66e21767aceb5a165651ccd 100644 (file)
@@ -52,7 +52,9 @@ public:
    virtual AliRawEquipmentHeader *GetEquipmentHeader();
    virtual AliRawData            *GetRawData();
 
-private:
+   virtual void                   CloneRawData();
+
+ private:
    AliRawEquipmentHeader *fEqpHdr;      // equipment header
    AliRawData            *fRawData;     // raw data container
    TRef                   fRawDataRef;  // reference to raw data container
index 10991d55bf97cdc65e0f9ead7cfaff2da532da35..f03bfe161537d4334a7e9a9b43b1865348a6afc7 100644 (file)
@@ -115,3 +115,14 @@ AliRawData *AliRawEquipmentV2::NextRawData(AliRawDataArrayV2 *array)
 
   return raw;
 }
+
+//______________________________________________________________________________
+void AliRawEquipmentV2::CloneRawData()
+{
+  // Load raw-data part of the object via the TRef
+  // flush the Tref and clone the raw data
+
+  GetRawData();
+  fRawDataRef = NULL;
+  if (fRawData) fRawData = (AliRawData*)fRawData->Clone();
+}
index b250aaf41bfbbe2d02a298be058d6e55df7d85d0..cbd311f2e85f8cf2b20654d940fa4ac3f42b81aa 100644 (file)
@@ -51,6 +51,8 @@ public:
    void                           Reset();
    AliRawData                    *NextRawData(AliRawDataArrayV2 *array);
 
+   virtual void                   CloneRawData();
+
 private:
    AliRawEquipmentHeader  fEqpHdr;      // equipment header
    AliRawData            *fRawData;     //! raw data container
index 98465848871f57a5dcca3d94a69599c6f60f4338..6cfad5ff13d0f19a1339e8890b6d4830f8d3cbf0 100644 (file)
@@ -46,6 +46,8 @@ public:
    virtual AliRawEquipmentHeader *GetEquipmentHeader() = 0;
    virtual AliRawData            *GetRawData() = 0;
 
+   virtual void                   CloneRawData() = 0;
+
 private:
 
    AliRawVEquipment(const AliRawVEquipment& eq);