Make the Scan method public
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackStoreV1.cxx
CommitLineData
3a018b82 1/**************************************************************************
2* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16// $Id$
17
3d1463c8 18//-----------------------------------------------------------------------------
3a018b82 19/// \class AliMUONTrackStoreV1
20///
21/// Implementation of AliMUONTrackStoreV1, which should be backward
22/// compatible, i.e. able to read old TreeT files
23///
24/// \author Laurent Aphecetche, Subatech
3d1463c8 25//-----------------------------------------------------------------------------
3a018b82 26
27#include "AliMUONTrackStoreV1.h"
28
29#include <TClonesArray.h>
30#include <TTree.h>
ce350193 31#include "AliLog.h"
3a018b82 32#include "AliMUONTrack.h"
33#include "AliMUONTreeManager.h"
34
35/// \cond CLASSIMP
36ClassImp(AliMUONTrackStoreV1)
37/// \endcond
38
39//_____________________________________________________________________________
40AliMUONTrackStoreV1::AliMUONTrackStoreV1() : AliMUONVTrackStore(),
ce350193 41 fTracks(0x0)
3a018b82 42{
43 /// Ctor
ce350193 44 CreateTracks();
45}
46
47//_____________________________________________________________________________
48AliMUONTrackStoreV1::AliMUONTrackStoreV1(TRootIOCtor* /*dummy*/) : AliMUONVTrackStore(),
49fTracks(0x0)
50{
51 /// Ctor
3a018b82 52}
53
54//_____________________________________________________________________________
55AliMUONTrackStoreV1::~AliMUONTrackStoreV1()
56{
57 /// dtor
58 delete fTracks;
59}
60
61//_____________________________________________________________________________
7332f213 62AliMUONTrack*
3a018b82 63AliMUONTrackStoreV1::Add(const AliMUONTrack& track)
64{
65 /// Add a track
ce350193 66
67 if (!fTracks) CreateTracks();
68
7332f213 69 return new((*fTracks)[fTracks->GetLast()+1]) AliMUONTrack(track);
70}
71
72//_____________________________________________________________________________
73AliMUONTrack*
74AliMUONTrackStoreV1::Remove(AliMUONTrack& track)
75{
76 /// Remove a track from the store
77 AliMUONTrack* t = static_cast<AliMUONTrack*>(fTracks->Remove(&track));
78 if (t) fTracks->Compress();
79 return t;
3a018b82 80}
81
82//_____________________________________________________________________________
83Bool_t
84AliMUONTrackStoreV1::Connect(TTree& tree, Bool_t alone) const
85{
86 /// Connect this store to the tree
87 AliMUONTreeManager tman;
ce350193 88
3a018b82 89 Bool_t ok;
90
91 if ( tree.GetBranch("MUONTrack") )
92 {
93 if ( alone ) tman.UpdateBranchStatuses(tree,"MUONTrack");
94 ok = tman.SetAddress(tree,"MUONTrack",TracksPtr());
95 }
96 else
97 {
98 ok = tman.MakeBranch(tree,ClassName(),"TClonesArray","MUONTrack",
99 TracksPtr());
100 }
101 return ok;
102}
103
104//_____________________________________________________________________________
105TIterator*
106AliMUONTrackStoreV1::CreateIterator() const
107{
108 /// Create an iterator to loop over tracks
ce350193 109 if ( fTracks ) return fTracks->MakeIterator();
110 return 0x0;
3a018b82 111}
112
113//_____________________________________________________________________________
114void
115AliMUONTrackStoreV1::Clear(Option_t*)
116{
117 /// Reset
ce350193 118 if (fTracks) fTracks->Clear("C");
119}
120
121//_____________________________________________________________________________
122void
123AliMUONTrackStoreV1::CreateTracks()
124{
125 /// Allocate track container
126 if (fTracks)
127 {
128 AliError("Cannot allocate again fTracks as it is there already !");
129 }
130 else
131 {
132 fTracks = new TClonesArray("AliMUONTrack",10);
133 }
3a018b82 134}
135
136//_____________________________________________________________________________
137Int_t
138AliMUONTrackStoreV1::GetSize() const
139{
140 /// Return the number of tracks we hold
ce350193 141 if ( fTracks ) return fTracks->GetLast()+1;
142 return 0;
3a018b82 143}