#include <TClonesArray.h>
#include <TTree.h>
+#include "AliLog.h"
#include "AliMUONTrack.h"
#include "AliMUONTreeManager.h"
//_____________________________________________________________________________
AliMUONTrackStoreV1::AliMUONTrackStoreV1() : AliMUONVTrackStore(),
- fTracks(new TClonesArray("AliMUONTrack",10))
+ fTracks(0x0)
{
/// Ctor
- fTracks->SetOwner(kTRUE);
+ CreateTracks();
+}
+
+//_____________________________________________________________________________
+AliMUONTrackStoreV1::AliMUONTrackStoreV1(TRootIOCtor* /*dummy*/) : AliMUONVTrackStore(),
+fTracks(0x0)
+{
+ /// Ctor
}
//_____________________________________________________________________________
}
//_____________________________________________________________________________
-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;
}
//_____________________________________________________________________________
{
/// Connect this store to the tree
AliMUONTreeManager tman;
+
Bool_t ok;
if ( tree.GetBranch("MUONTrack") )
AliMUONTrackStoreV1::CreateIterator() const
{
/// Create an iterator to loop over tracks
- return fTracks->MakeIterator();
+ if ( fTracks ) return fTracks->MakeIterator();
+ return 0x0;
}
//_____________________________________________________________________________
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);
+ }
}
//_____________________________________________________________________________
AliMUONTrackStoreV1::GetSize() const
{
/// Return the number of tracks we hold
- return fTracks->GetLast()+1;
+ if ( fTracks ) return fTracks->GetLast()+1;
+ return 0;
}