]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Removing TClonesArray deletions (C.Cheshkov)
authorfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 14:14:33 +0000 (14:14 +0000)
committerfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 14:14:33 +0000 (14:14 +0000)
RAW/AliRawEquipmentV2.cxx
RAW/AliRawEquipmentV2.h
RAW/AliRawEventV2.cxx
RAW/AliRawEventV2.h
RAW/alirawdump_main.cxx

index 8bd2aed0674a456da2c7c07347342fab41261523..46c1ba2c45531429839858d3a32d600b3846e69a 100644 (file)
@@ -87,6 +87,17 @@ void AliRawEquipmentV2::Reset()
    fRawDataRef = NULL;
 }
 
+//______________________________________________________________________________
+void AliRawEquipmentV2::Clear(Option_t*)
+{
+   // Clear the equipment in case it needs to be re-used (avoiding costly
+   // new/delete cycle). Called by AliRawEventV2 Clear method inside the event loop.
+
+   fEqpHdr.Reset();
+   fRawDataRef = NULL;
+   fRawData = NULL;
+}
+
 //______________________________________________________________________________
 AliRawEquipmentV2::~AliRawEquipmentV2()
 {
index 9c7b79e6244144b6042df9d50343291015de7015..351ec5e6e7390d60e322617c5b439531244f22f8 100644 (file)
@@ -49,6 +49,7 @@ public:
    virtual AliRawEquipmentHeader *GetEquipmentHeader();
    virtual AliRawData            *GetRawData();
    void                           Reset();
+   virtual void                          Clear(Option_t* = "");
    AliRawData                    *NextRawData(AliRawDataArrayV2 *array);
 
    virtual void                   CloneRawData(const AliRawData *rawData);
index 5f4d542f47639c8a0a870ad0a6bd19ecbca2a0fa..a2e0c55b74f612208a2cde68bb47e218a103fcea 100644 (file)
@@ -215,3 +215,22 @@ AliRawEventV2::~AliRawEventV2()
       fEvtHdrs->Delete();
    delete fEvtHdrs;
 }
+
+//______________________________________________________________________________
+void AliRawEventV2::Clear(Option_t*)
+{
+   // Clear the event in case it needs to be re-used (avoiding costly
+   // new/delete cycle). Can be used inside the event loop.
+
+  fEquipments.Clear("C");
+
+  if (fEvtHdrs) {
+    for (int i = 0; i < fEvtHdrs->GetEntriesFast(); i++) {
+      AliRawEventHeaderBase *hdr = (AliRawEventHeaderBase *)fEvtHdrs->UncheckedAt(i);
+      hdr->Reset();
+    }
+    fEvtHdrs->Clear();
+  }
+  fIndex = 0;
+}
+
index 070dd5f2a03721c0a8d0c82f59a37108146ba47d..f6ab8d23986f0ae123990afc35988aa0ff63ac43 100644 (file)
@@ -60,6 +60,7 @@ public:
    AliRawEventV2                 *NextSubEvent();
    virtual AliRawVEvent          *GetSubEvent(Int_t index);
    void                           Reset();
+   virtual void                          Clear(Option_t* = "");
 
 private:
    TClonesArray           fEquipments;  // AliRawEquipmentV2's
index 464d079e90d23a6273a7a1e2f03403a440de99ec..67768b5dcd5fdd990f87bf6e4309b710225b735d 100644 (file)
@@ -237,13 +237,16 @@ int main(int argc, char **argv)
   cout << "*******************************************" << endl;
 
   for(Int_t iEvent=0; iEvent < nEvents; iEvent++) {
-    rawEvent=NULL;
+    //    rawEvent=NULL;
     rawTree->GetEntry(iEvent);
     cout << "  *********** Event " << iEvent << " *******" << endl;
     DumpEvent(argv[0],rawEvent);
-    delete rawEvent;
+    //    delete rawEvent;
+    rawEvent->Clear();
   }
 
+  delete rawEvent;
+
   cout << "*******************************************" << endl;
   cout << "EOF" << endl;
   cout << "*******************************************" << endl;