#ifndef ALIMUONNODE_H
#define ALIMUONNODE_H
#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();
Int_t C() const { return fC; }
void C(Int_t v) { fC += v; }
Int_t P() const { return fP; }
void LeftNode(AliMUONNode* n) { fLeftNode = n; }
void RightNode(AliMUONNode* n) { fRightNode = n; }
private:
AliMUONNode(const AliMUONNode& node);
AliMUONNode& operator=(const AliMUONNode& node);
AliMUONNode* fLeftNode;
AliMUONNode* fRightNode;
Double_t fMin;
Double_t fMax;
Double_t fMidPoint;
Int_t fC;
Int_t fP;
ClassDef(AliMUONNode,0)
};
#endif