]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackStoreV1.cxx
Coverity fix for uninitialized variables and check for returned null value
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackStoreV1.cxx
index ce9dcea4afc72e9d53bf87a5164e5ec1405d6a49..ba048e7394011e079454cfb228e7bf32446b16be 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <TClonesArray.h>
 #include <TTree.h>
+#include "AliLog.h"
 #include "AliMUONTrack.h"
 #include "AliMUONTreeManager.h"
 
@@ -37,10 +38,17 @@ ClassImp(AliMUONTrackStoreV1)
 
 //_____________________________________________________________________________
 AliMUONTrackStoreV1::AliMUONTrackStoreV1() : AliMUONVTrackStore(),
- fTracks(new TClonesArray("AliMUONTrack",10))
+ fTracks(0x0)
 {
    /// Ctor
-   fTracks->SetOwner(kTRUE);
+  CreateTracks();
+}
+
+//_____________________________________________________________________________
+AliMUONTrackStoreV1::AliMUONTrackStoreV1(TRootIOCtor* /*dummy*/) : AliMUONVTrackStore(),
+fTracks(0x0)
+{
+  /// Ctor
 }
 
 //_____________________________________________________________________________
@@ -51,11 +59,24 @@ AliMUONTrackStoreV1::~AliMUONTrackStoreV1()
 }
 
 //_____________________________________________________________________________
-void 
+AliMUONTrack* 
 AliMUONTrackStoreV1::Add(const AliMUONTrack& track)
 {
   /// Add a track
-  new((*fTracks)[fTracks->GetLast()+1]) AliMUONTrack(track);
+  
+  if (!fTracks) CreateTracks();
+
+  return new((*fTracks)[fTracks->GetLast()+1]) AliMUONTrack(track);
+}
+
+//_____________________________________________________________________________
+AliMUONTrack*
+AliMUONTrackStoreV1::Remove(AliMUONTrack& track)
+{
+  /// Remove a track from the store
+  AliMUONTrack* t = static_cast<AliMUONTrack*>(fTracks->Remove(&track));
+  if (t) fTracks->Compress();
+  return t;
 }
 
 //_____________________________________________________________________________
@@ -64,6 +85,7 @@ AliMUONTrackStoreV1::Connect(TTree& tree, Bool_t alone) const
 {
   /// Connect this store to the tree
   AliMUONTreeManager tman;
+  
   Bool_t ok;
   
   if ( tree.GetBranch("MUONTrack") )
@@ -84,7 +106,8 @@ TIterator*
 AliMUONTrackStoreV1::CreateIterator() const
 {
   /// Create an iterator to loop over tracks
-  return fTracks->MakeIterator();
+  if ( fTracks ) return fTracks->MakeIterator();
+  return 0x0;
 }
 
 //_____________________________________________________________________________
@@ -92,7 +115,22 @@ void
 AliMUONTrackStoreV1::Clear(Option_t*)
 {
   /// Reset
-  fTracks->Clear("C");
+  if (fTracks) fTracks->Clear("C");
+}
+
+//_____________________________________________________________________________
+void
+AliMUONTrackStoreV1::CreateTracks()
+{
+  /// Allocate track container
+  if (fTracks) 
+  {
+    AliError("Cannot allocate again fTracks as it is there already !");
+  }
+  else
+  {
+    fTracks = new TClonesArray("AliMUONTrack",10);
+  }
 }
 
 //_____________________________________________________________________________
@@ -100,5 +138,6 @@ Int_t
 AliMUONTrackStoreV1::GetSize() const
 {
   /// Return the number of tracks we hold
-  return fTracks->GetLast()+1;
+  if ( fTracks ) return fTracks->GetLast()+1;
+  return 0;
 }