ROOT logo
#ifndef ALIMUONSEGMENTTREE_H
#define ALIMUONSEGMENTTREE_H

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

// $Id$

/// \ingroup geometry
/// \class AliMUONSegmentTree
/// \brief Implementation of a segment tree
/// 
// author Laurent Aphecetche

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

#ifndef ROOT_TObjArray
#  include "TObjArray.h"
#endif

class TArrayD;
class AliMUONNode;

class AliMUONSegmentTree : public TObject
{
public:
  AliMUONSegmentTree(const TArrayD& values);
  virtual ~AliMUONSegmentTree();
  
  AliMUONNode* Build(const TArrayD& values, Int_t i, Int_t j);
  
  void Print(Option_t* opt="") const;
  
  /// Get the stack
  const TObjArray& Stack() const { return fStack; }
  
  /// Reset the stack
  void ResetStack() { fStack.Clear(); }
  
  void Contribution(double b, double e);
  
  void InsertInterval(double b, double e);
  
  void DeleteInterval(double d, double e);
  
private:
  /// not implemented
  AliMUONSegmentTree(const AliMUONSegmentTree& rhs);
  /// not implemented
  AliMUONSegmentTree& operator=(const AliMUONSegmentTree& rhs);
  
  AliMUONNode* fRoot; ///< root of the tree
  TObjArray fStack; ///< array of AliMUONSegment objects
  
  ClassDef(AliMUONSegmentTree,1) // Implementation of a segment tree
};

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