ROOT logo
#ifndef ALIMUONVCLUSTERSTORE_H
#define ALIMUONVCLUSTERSTORE_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup rec
/// \class AliMUONVClusterStore
/// \brief Interface of a cluster container
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ALIMUONVSTORE_H
#  include "AliMUONVStore.h"
#endif

#ifndef ALIMUONVCLUSTER_H
#  include "AliMUONVCluster.h" // must be there for covariant return type of FindObjet methods
#endif

class AliMUONVCluster;

class AliMUONVClusterStore : public AliMUONVStore
{
public:
  AliMUONVClusterStore();
  virtual ~AliMUONVClusterStore();
  
  virtual Bool_t Add(TObject* object);

  /// Add a cluster object to the store
  virtual AliMUONVCluster* Add(const AliMUONVCluster& Cluster) = 0;
  /// Create a new cluster with an unique ID and add it to the store
  virtual AliMUONVCluster* Add(Int_t chamberId, Int_t detElemId, Int_t clusterIndex) = 0;

  using AliMUONVStore::Create;
  
  static AliMUONVClusterStore* Create(TTree& tree);
  
  /// Create a cluster
  virtual AliMUONVCluster* CreateCluster(Int_t chamberId, Int_t detElemId, Int_t clusterIndex) const = 0;
  
  /// Return an iterator to loop over the whole store
  virtual TIterator* CreateIterator() const = 0;

  /// Return an iterator to loop over the store in the given chamber range
  virtual TIterator* CreateChamberIterator(Int_t firstChamberId, Int_t lastChamberId) const = 0;
  
  /// Clear container
  virtual void Clear(Option_t* opt="") = 0;
  
  /// Remove a cluster object to the store
  virtual AliMUONVCluster* Remove(AliMUONVCluster& cluster) = 0;
    
  using AliMUONVStore::FindObject;

  // Find an object (default is the same as in AliMUONVStore)
  virtual AliMUONVCluster* FindObject(const TObject* object) const;
  
  // Find an object by its uniqueID (default is the same as in AliMUONVStore)
  virtual AliMUONVCluster* FindObject(UInt_t uniqueID) const;
  
  ClassDef(AliMUONVClusterStore,1) // Cluster container interface
};

#endif

 AliMUONVClusterStore.h:1
 AliMUONVClusterStore.h:2
 AliMUONVClusterStore.h:3
 AliMUONVClusterStore.h:4
 AliMUONVClusterStore.h:5
 AliMUONVClusterStore.h:6
 AliMUONVClusterStore.h:7
 AliMUONVClusterStore.h:8
 AliMUONVClusterStore.h:9
 AliMUONVClusterStore.h:10
 AliMUONVClusterStore.h:11
 AliMUONVClusterStore.h:12
 AliMUONVClusterStore.h:13
 AliMUONVClusterStore.h:14
 AliMUONVClusterStore.h:15
 AliMUONVClusterStore.h:16
 AliMUONVClusterStore.h:17
 AliMUONVClusterStore.h:18
 AliMUONVClusterStore.h:19
 AliMUONVClusterStore.h:20
 AliMUONVClusterStore.h:21
 AliMUONVClusterStore.h:22
 AliMUONVClusterStore.h:23
 AliMUONVClusterStore.h:24
 AliMUONVClusterStore.h:25
 AliMUONVClusterStore.h:26
 AliMUONVClusterStore.h:27
 AliMUONVClusterStore.h:28
 AliMUONVClusterStore.h:29
 AliMUONVClusterStore.h:30
 AliMUONVClusterStore.h:31
 AliMUONVClusterStore.h:32
 AliMUONVClusterStore.h:33
 AliMUONVClusterStore.h:34
 AliMUONVClusterStore.h:35
 AliMUONVClusterStore.h:36
 AliMUONVClusterStore.h:37
 AliMUONVClusterStore.h:38
 AliMUONVClusterStore.h:39
 AliMUONVClusterStore.h:40
 AliMUONVClusterStore.h:41
 AliMUONVClusterStore.h:42
 AliMUONVClusterStore.h:43
 AliMUONVClusterStore.h:44
 AliMUONVClusterStore.h:45
 AliMUONVClusterStore.h:46
 AliMUONVClusterStore.h:47
 AliMUONVClusterStore.h:48
 AliMUONVClusterStore.h:49
 AliMUONVClusterStore.h:50
 AliMUONVClusterStore.h:51
 AliMUONVClusterStore.h:52
 AliMUONVClusterStore.h:53
 AliMUONVClusterStore.h:54
 AliMUONVClusterStore.h:55
 AliMUONVClusterStore.h:56
 AliMUONVClusterStore.h:57
 AliMUONVClusterStore.h:58
 AliMUONVClusterStore.h:59
 AliMUONVClusterStore.h:60
 AliMUONVClusterStore.h:61
 AliMUONVClusterStore.h:62
 AliMUONVClusterStore.h:63
 AliMUONVClusterStore.h:64
 AliMUONVClusterStore.h:65
 AliMUONVClusterStore.h:66
 AliMUONVClusterStore.h:67
 AliMUONVClusterStore.h:68
 AliMUONVClusterStore.h:69