Handle deletion of AliFMDAltroMapping object. If we make the object
authorcholm <Christian.Holm.Christensen@cern.ch>
Wed, 3 Dec 2014 11:15:39 +0000 (12:15 +0100)
committercholm <Christian.Holm.Christensen@cern.ch>
Wed, 3 Dec 2014 11:15:39 +0000 (12:15 +0100)
ourselves, make sure to set the bit TObject::kCanDelete.  If the
object comes from OCDB, make sure to clear that bit.  Only delete the
object if TObject::kCanDelete is set.

Note, AliFMDAltroMapping is a static object.  None of it members
ever various based on run number or the like.  It reflects the
static nature of the hardware mapping of the FMD.

FMD/AliFMDParameters.cxx

index b5673af..1c12fbd 100644 (file)
@@ -126,6 +126,7 @@ AliFMDParameters::AliFMDParameters()
   SetStripRange();
   SetGain();
   fAltroMap = new AliFMDAltroMapping;
+  fAltroMap->SetBit(TObject::kCanDelete);
 }
 
 //__________________________________________________________________
@@ -841,7 +842,7 @@ AliFMDParameters::InitAltroMap(AliFMDPreprocessor* pp)
   // Parameters:
   //    pp Pre-processor if called from shuttle
   //
-  if (fAltroMap) { 
+  if (fAltroMap && fAltroMap->TestBit(TObject::kCanDelete)) { 
     delete fAltroMap;
     fAltroMap = 0;
   }
@@ -849,10 +850,12 @@ AliFMDParameters::InitAltroMap(AliFMDPreprocessor* pp)
   if (hwMap) {
     AliFMDDebug(5, ("Got ALTRO map from CDB"));
     fAltroMap = dynamic_cast<AliFMDAltroMapping*>(hwMap->GetObject());
+    if (fAltroMap) fAltroMap->ResetBit(TObject::kCanDelete);
   }
   if (!fAltroMap) {
     AliError("Invalid ALTRO map object from CDB");
     fAltroMap = new AliFMDAltroMapping;
+    fAltroMap->SetBit(TObject::kCanDelete);
     // return kAltroMap;
   }
   return 0;