]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - OADB/AliOADBPhysicsSelection.cxx
Coverity fixes 16578 16568 566 565
[u/mrichter/AliRoot.git] / OADB / AliOADBPhysicsSelection.cxx
index 05f22bfa4f38516fead879e1512ddc140c17fccb..8cff8c783bb2e0fae4eafdf68097c5195cfacad6 100644 (file)
@@ -188,13 +188,20 @@ void AliOADBPhysicsSelection::Browse(TBrowser *b)
    // Browse this object.
    // If b=0, there is no Browse call TObject::Browse(0) instead.
    //         This means TObject::Inspect() will be invoked indirectly
-
-  TFolder  ** bitFolders = new TFolder*[fNtriggerBits];
+  static TFolder  ** bitFolders = 0;
+  if(!bitFolders) {
+    bitFolders = new TFolder*[fNtriggerBits];
+    for(UInt_t ibit = 0; ibit < fNtriggerBits; ibit++){
+      bitFolders[ibit] = 0;
+    }
+    
+  }
 
   if (b) {
     for(UInt_t ibit = 0; ibit < fNtriggerBits; ibit++){
-      //      if(bitFolders[ibit]) delete bitFolders[ibit];
+      if(bitFolders[ibit]) delete bitFolders[ibit];
       bitFolders[ibit] = new TFolder (Form("Bit %2.2d", ibit), "Trigger bit folder");
+      bitFolders[ibit]->SetOwner(); // Delete also the TObjString when deleting the folder
       for(UInt_t ilogic = 0; ilogic < fNtriggerLogics; ilogic++){
        if(GetHardwareTrigger(ilogic) != "" ||  GetOfflineTrigger(ilogic) != "")  {
          bitFolders[ibit]->Add(new TObjString(Form("Hardware Trig    [*%d][%s]",ilogic,GetHardwareTrigger(ilogic).Data())));
@@ -209,6 +216,7 @@ void AliOADBPhysicsSelection::Browse(TBrowser *b)
        bitFolders[ibit]->Add(new TObjString(Form("Collision Class  [%s] [%s]", coll->String().Data(), 
                                                  GetBeamSide(coll->String().Data()).Data())));
       }
+      delete itColl;
 
       TIterator *itBG = fBGTrigClasses[ibit]->MakeIterator();
       TObjString * bg = 0;
@@ -216,7 +224,7 @@ void AliOADBPhysicsSelection::Browse(TBrowser *b)
        bitFolders[ibit]->Add(new TObjString(Form("Background Class [%s] [%s]", bg->String().Data(), 
                                                  GetBeamSide(bg->String().Data()).Data())));
       }
-
+      delete itBG;
 
       b->Add(bitFolders[ibit]);
 
@@ -226,13 +234,16 @@ void AliOADBPhysicsSelection::Browse(TBrowser *b)
       TObject::Browse(b);
 }
 
-const UInt_t AliOADBPhysicsSelection::GetActiveBit(UInt_t mask) {
+UInt_t AliOADBPhysicsSelection::GetActiveBit(UInt_t mask) {
   // Returns the active bit index in the mask
   // Assumes only one bit is on.
   // If more than one bit is lit, prints an error and returns the first.
   // If no bit is on, prints an error and returns 0
 
-  Int_t nbit = sizeof(mask)*8;
+  const Int_t kNBitsToCheck = 28;
+
+  //  Int_t nbit = sizeof(mask)*8;
+  Int_t nbit = kNBitsToCheck;
   Int_t activeBit = -1;
   for(Int_t ibit = 0; ibit < nbit; ibit++){
     if ( mask & (0x1 << ibit) ) {