ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

//-----------------------------------------------------------------------------
/// \class AliMUONTrackStoreV1
///
/// Implementation of AliMUONTrackStoreV1, which should be backward
/// compatible, i.e. able to read old TreeT files
///
/// \author Laurent Aphecetche, Subatech
//-----------------------------------------------------------------------------

#include "AliMUONTrackStoreV1.h"

#include <TClonesArray.h>
#include <TTree.h>
#include "AliLog.h"
#include "AliMUONTrack.h"
#include "AliMUONTreeManager.h"

/// \cond CLASSIMP
ClassImp(AliMUONTrackStoreV1)
/// \endcond

//_____________________________________________________________________________
AliMUONTrackStoreV1::AliMUONTrackStoreV1() : AliMUONVTrackStore(),
 fTracks(0x0)
{
   /// Ctor
  CreateTracks();
}

//_____________________________________________________________________________
AliMUONTrackStoreV1::AliMUONTrackStoreV1(TRootIOCtor* /*dummy*/) : AliMUONVTrackStore(),
fTracks(0x0)
{
  /// Ctor
}

//_____________________________________________________________________________
AliMUONTrackStoreV1::~AliMUONTrackStoreV1()
{
  /// dtor
  delete fTracks;
}

//_____________________________________________________________________________
AliMUONTrack* 
AliMUONTrackStoreV1::Add(const AliMUONTrack& track)
{
  /// Add a 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;
}

//_____________________________________________________________________________
Bool_t
AliMUONTrackStoreV1::Connect(TTree& tree, Bool_t alone) const
{
  /// Connect this store to the tree
  AliMUONTreeManager tman;
  
  Bool_t ok;
  
  if ( tree.GetBranch("MUONTrack") )
  {
    if ( alone ) tman.UpdateBranchStatuses(tree,"MUONTrack");
    ok = tman.SetAddress(tree,"MUONTrack",TracksPtr());
  }
  else
  {
    ok = tman.MakeBranch(tree,ClassName(),"TClonesArray","MUONTrack",
                         TracksPtr());
  }
  return ok;
}

//_____________________________________________________________________________
TIterator*
AliMUONTrackStoreV1::CreateIterator() const
{
  /// Create an iterator to loop over tracks
  if ( fTracks ) return fTracks->MakeIterator();
  return 0x0;
}

//_____________________________________________________________________________
void 
AliMUONTrackStoreV1::Clear(Option_t*)
{
  /// Reset
  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);
  }
}

//_____________________________________________________________________________
Int_t
AliMUONTrackStoreV1::GetSize() const
{
  /// Return the number of tracks we hold
  if ( fTracks ) return fTracks->GetLast()+1;
  return 0;
}
 AliMUONTrackStoreV1.cxx:1
 AliMUONTrackStoreV1.cxx:2
 AliMUONTrackStoreV1.cxx:3
 AliMUONTrackStoreV1.cxx:4
 AliMUONTrackStoreV1.cxx:5
 AliMUONTrackStoreV1.cxx:6
 AliMUONTrackStoreV1.cxx:7
 AliMUONTrackStoreV1.cxx:8
 AliMUONTrackStoreV1.cxx:9
 AliMUONTrackStoreV1.cxx:10
 AliMUONTrackStoreV1.cxx:11
 AliMUONTrackStoreV1.cxx:12
 AliMUONTrackStoreV1.cxx:13
 AliMUONTrackStoreV1.cxx:14
 AliMUONTrackStoreV1.cxx:15
 AliMUONTrackStoreV1.cxx:16
 AliMUONTrackStoreV1.cxx:17
 AliMUONTrackStoreV1.cxx:18
 AliMUONTrackStoreV1.cxx:19
 AliMUONTrackStoreV1.cxx:20
 AliMUONTrackStoreV1.cxx:21
 AliMUONTrackStoreV1.cxx:22
 AliMUONTrackStoreV1.cxx:23
 AliMUONTrackStoreV1.cxx:24
 AliMUONTrackStoreV1.cxx:25
 AliMUONTrackStoreV1.cxx:26
 AliMUONTrackStoreV1.cxx:27
 AliMUONTrackStoreV1.cxx:28
 AliMUONTrackStoreV1.cxx:29
 AliMUONTrackStoreV1.cxx:30
 AliMUONTrackStoreV1.cxx:31
 AliMUONTrackStoreV1.cxx:32
 AliMUONTrackStoreV1.cxx:33
 AliMUONTrackStoreV1.cxx:34
 AliMUONTrackStoreV1.cxx:35
 AliMUONTrackStoreV1.cxx:36
 AliMUONTrackStoreV1.cxx:37
 AliMUONTrackStoreV1.cxx:38
 AliMUONTrackStoreV1.cxx:39
 AliMUONTrackStoreV1.cxx:40
 AliMUONTrackStoreV1.cxx:41
 AliMUONTrackStoreV1.cxx:42
 AliMUONTrackStoreV1.cxx:43
 AliMUONTrackStoreV1.cxx:44
 AliMUONTrackStoreV1.cxx:45
 AliMUONTrackStoreV1.cxx:46
 AliMUONTrackStoreV1.cxx:47
 AliMUONTrackStoreV1.cxx:48
 AliMUONTrackStoreV1.cxx:49
 AliMUONTrackStoreV1.cxx:50
 AliMUONTrackStoreV1.cxx:51
 AliMUONTrackStoreV1.cxx:52
 AliMUONTrackStoreV1.cxx:53
 AliMUONTrackStoreV1.cxx:54
 AliMUONTrackStoreV1.cxx:55
 AliMUONTrackStoreV1.cxx:56
 AliMUONTrackStoreV1.cxx:57
 AliMUONTrackStoreV1.cxx:58
 AliMUONTrackStoreV1.cxx:59
 AliMUONTrackStoreV1.cxx:60
 AliMUONTrackStoreV1.cxx:61
 AliMUONTrackStoreV1.cxx:62
 AliMUONTrackStoreV1.cxx:63
 AliMUONTrackStoreV1.cxx:64
 AliMUONTrackStoreV1.cxx:65
 AliMUONTrackStoreV1.cxx:66
 AliMUONTrackStoreV1.cxx:67
 AliMUONTrackStoreV1.cxx:68
 AliMUONTrackStoreV1.cxx:69
 AliMUONTrackStoreV1.cxx:70
 AliMUONTrackStoreV1.cxx:71
 AliMUONTrackStoreV1.cxx:72
 AliMUONTrackStoreV1.cxx:73
 AliMUONTrackStoreV1.cxx:74
 AliMUONTrackStoreV1.cxx:75
 AliMUONTrackStoreV1.cxx:76
 AliMUONTrackStoreV1.cxx:77
 AliMUONTrackStoreV1.cxx:78
 AliMUONTrackStoreV1.cxx:79
 AliMUONTrackStoreV1.cxx:80
 AliMUONTrackStoreV1.cxx:81
 AliMUONTrackStoreV1.cxx:82
 AliMUONTrackStoreV1.cxx:83
 AliMUONTrackStoreV1.cxx:84
 AliMUONTrackStoreV1.cxx:85
 AliMUONTrackStoreV1.cxx:86
 AliMUONTrackStoreV1.cxx:87
 AliMUONTrackStoreV1.cxx:88
 AliMUONTrackStoreV1.cxx:89
 AliMUONTrackStoreV1.cxx:90
 AliMUONTrackStoreV1.cxx:91
 AliMUONTrackStoreV1.cxx:92
 AliMUONTrackStoreV1.cxx:93
 AliMUONTrackStoreV1.cxx:94
 AliMUONTrackStoreV1.cxx:95
 AliMUONTrackStoreV1.cxx:96
 AliMUONTrackStoreV1.cxx:97
 AliMUONTrackStoreV1.cxx:98
 AliMUONTrackStoreV1.cxx:99
 AliMUONTrackStoreV1.cxx:100
 AliMUONTrackStoreV1.cxx:101
 AliMUONTrackStoreV1.cxx:102
 AliMUONTrackStoreV1.cxx:103
 AliMUONTrackStoreV1.cxx:104
 AliMUONTrackStoreV1.cxx:105
 AliMUONTrackStoreV1.cxx:106
 AliMUONTrackStoreV1.cxx:107
 AliMUONTrackStoreV1.cxx:108
 AliMUONTrackStoreV1.cxx:109
 AliMUONTrackStoreV1.cxx:110
 AliMUONTrackStoreV1.cxx:111
 AliMUONTrackStoreV1.cxx:112
 AliMUONTrackStoreV1.cxx:113
 AliMUONTrackStoreV1.cxx:114
 AliMUONTrackStoreV1.cxx:115
 AliMUONTrackStoreV1.cxx:116
 AliMUONTrackStoreV1.cxx:117
 AliMUONTrackStoreV1.cxx:118
 AliMUONTrackStoreV1.cxx:119
 AliMUONTrackStoreV1.cxx:120
 AliMUONTrackStoreV1.cxx:121
 AliMUONTrackStoreV1.cxx:122
 AliMUONTrackStoreV1.cxx:123
 AliMUONTrackStoreV1.cxx:124
 AliMUONTrackStoreV1.cxx:125
 AliMUONTrackStoreV1.cxx:126
 AliMUONTrackStoreV1.cxx:127
 AliMUONTrackStoreV1.cxx:128
 AliMUONTrackStoreV1.cxx:129
 AliMUONTrackStoreV1.cxx:130
 AliMUONTrackStoreV1.cxx:131
 AliMUONTrackStoreV1.cxx:132
 AliMUONTrackStoreV1.cxx:133
 AliMUONTrackStoreV1.cxx:134
 AliMUONTrackStoreV1.cxx:135
 AliMUONTrackStoreV1.cxx:136
 AliMUONTrackStoreV1.cxx:137
 AliMUONTrackStoreV1.cxx:138
 AliMUONTrackStoreV1.cxx:139
 AliMUONTrackStoreV1.cxx:140
 AliMUONTrackStoreV1.cxx:141
 AliMUONTrackStoreV1.cxx:142
 AliMUONTrackStoreV1.cxx:143