ROOT logo
#ifndef ALIMUONNODE_H
#define ALIMUONNODE_H

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

// $Id$

/// \ingroup geometry
/// \class AliMUONNode
/// \brief A node of a segment tree
/// 
// author Laurent Aphecetche

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

class TObjArray;

class AliMUONNode : public TObject
{
public:
  AliMUONNode(Double_t a, Double_t b, Double_t midpoInt_t);
  virtual ~AliMUONNode();
  
  void Print(const char* opt="") const;
  
  void Contribution(Double_t b, Double_t e, TObjArray& stack);
  
  void InsertInterval(Double_t b, Double_t e, TObjArray& stack);
  
  void DeleteInterval(Double_t b, Double_t e, TObjArray& stack);
  
  Bool_t IsFullyContained(Double_t b, Double_t e) const;
  
  void Update();
  
  void Demote();
  
  void Promote();
  
  /// Get cardinality
  Int_t C() const { return fC; }
  
  /// Increase cardinality
  void C(Int_t v) { fC += v; }
  
  /// Get potent state
  Int_t P() const { return fP; }
  
  /// Set left node
  void LeftNode(AliMUONNode* n) { fLeftNode = n; }
  
  /// Set right node
  void RightNode(AliMUONNode* n) { fRightNode = n; }
  
private:
  
  /// not implemented
  AliMUONNode(const AliMUONNode& node); 
  /// not implemented
  AliMUONNode& operator=(const AliMUONNode& node);  
  AliMUONNode* fLeftNode; ///< left node
  AliMUONNode* fRightNode; ///< right node
  
  Double_t fMin; ///< Min
  Double_t fMax; ///< Max
  Double_t fMidPoint; ///< (Min+Max)/2
  
  Int_t fC; ///< cardinality
  Int_t fP; ///< potent state
  
  ClassDef(AliMUONNode,0) // A node of a segment tree
};

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