#include "AliMUONSegmentTree.h"
#include "AliLog.h"
#include "AliMUONNode.h"
#include "Riostream.h"
#include "TArrayD.h"
#include "TMath.h"
using std::cout;
using std::endl;
ClassImp(AliMUONSegmentTree)
AliMUONSegmentTree::AliMUONSegmentTree(const TArrayD& values)
: fRoot(0x0), fStack()
{
fStack.SetOwner(kTRUE);
if ( values.GetSize() < 2 )
{
AliFatal("cannot build a segmenttree with less than 2 values !");
}
fRoot = Build(values,0,values.GetSize()-1);
}
AliMUONSegmentTree::~AliMUONSegmentTree()
{
delete fRoot;
}
AliMUONNode*
AliMUONSegmentTree::Build(const TArrayD& values, Int_t i, Int_t j)
{
double midpoint(TMath::Sqrt(-1.0));
Int_t mid((i+j)/2);
if ( mid != i && mid != j ) midpoint = values[mid];
AliMUONNode* node = new AliMUONNode(values[i],values[j],midpoint);
if ( j - i == 1 ) return node;
node->LeftNode(Build(values,i,(i+j)/2));
node->RightNode(Build(values,(i+j)/2,j));
return node;
}
void
AliMUONSegmentTree::Contribution(double b, double e)
{
fRoot->Contribution(b,e,fStack);
}
void
AliMUONSegmentTree::InsertInterval(double b, double e)
{
fRoot->InsertInterval(b,e,fStack);
}
void
AliMUONSegmentTree::DeleteInterval(double b, double e)
{
fRoot->DeleteInterval(b,e,fStack);
}
void
AliMUONSegmentTree::Print(Option_t*) const
{
if (fRoot)
fRoot->Print();
else
cout << "Empty binary tree" << endl;
}
AliMUONSegmentTree.cxx:10 AliMUONSegmentTree.cxx:11 AliMUONSegmentTree.cxx:12 AliMUONSegmentTree.cxx:13 AliMUONSegmentTree.cxx:14 AliMUONSegmentTree.cxx:15 AliMUONSegmentTree.cxx:16 AliMUONSegmentTree.cxx:17 AliMUONSegmentTree.cxx:18 AliMUONSegmentTree.cxx:19 AliMUONSegmentTree.cxx:20 AliMUONSegmentTree.cxx:21 AliMUONSegmentTree.cxx:22 AliMUONSegmentTree.cxx:23 AliMUONSegmentTree.cxx:24 AliMUONSegmentTree.cxx:25 AliMUONSegmentTree.cxx:26 AliMUONSegmentTree.cxx:27 AliMUONSegmentTree.cxx:28 AliMUONSegmentTree.cxx:29 AliMUONSegmentTree.cxx:30 AliMUONSegmentTree.cxx:31 AliMUONSegmentTree.cxx:32 AliMUONSegmentTree.cxx:33 AliMUONSegmentTree.cxx:34 AliMUONSegmentTree.cxx:35 AliMUONSegmentTree.cxx:36 AliMUONSegmentTree.cxx:37 AliMUONSegmentTree.cxx:38 AliMUONSegmentTree.cxx:39 AliMUONSegmentTree.cxx:40 AliMUONSegmentTree.cxx:41 AliMUONSegmentTree.cxx:42 AliMUONSegmentTree.cxx:43 AliMUONSegmentTree.cxx:44 AliMUONSegmentTree.cxx:45 AliMUONSegmentTree.cxx:46 AliMUONSegmentTree.cxx:47 AliMUONSegmentTree.cxx:48 AliMUONSegmentTree.cxx:49 AliMUONSegmentTree.cxx:50 AliMUONSegmentTree.cxx:51 AliMUONSegmentTree.cxx:52 AliMUONSegmentTree.cxx:53 AliMUONSegmentTree.cxx:54 AliMUONSegmentTree.cxx:55 AliMUONSegmentTree.cxx:56 AliMUONSegmentTree.cxx:57 AliMUONSegmentTree.cxx:58 AliMUONSegmentTree.cxx:59 AliMUONSegmentTree.cxx:60 AliMUONSegmentTree.cxx:61 AliMUONSegmentTree.cxx:62 AliMUONSegmentTree.cxx:63 AliMUONSegmentTree.cxx:64 AliMUONSegmentTree.cxx:65 AliMUONSegmentTree.cxx:66 AliMUONSegmentTree.cxx:67 AliMUONSegmentTree.cxx:68 AliMUONSegmentTree.cxx:69 AliMUONSegmentTree.cxx:70 AliMUONSegmentTree.cxx:71 AliMUONSegmentTree.cxx:72 AliMUONSegmentTree.cxx:73 AliMUONSegmentTree.cxx:74 AliMUONSegmentTree.cxx:75 AliMUONSegmentTree.cxx:76 AliMUONSegmentTree.cxx:77 AliMUONSegmentTree.cxx:78 AliMUONSegmentTree.cxx:79 AliMUONSegmentTree.cxx:80 AliMUONSegmentTree.cxx:81 AliMUONSegmentTree.cxx:82 AliMUONSegmentTree.cxx:83 AliMUONSegmentTree.cxx:84 AliMUONSegmentTree.cxx:85 AliMUONSegmentTree.cxx:86 AliMUONSegmentTree.cxx:87 AliMUONSegmentTree.cxx:88 AliMUONSegmentTree.cxx:89 AliMUONSegmentTree.cxx:90 AliMUONSegmentTree.cxx:91 AliMUONSegmentTree.cxx:92 AliMUONSegmentTree.cxx:93 AliMUONSegmentTree.cxx:94 AliMUONSegmentTree.cxx:95 AliMUONSegmentTree.cxx:96 AliMUONSegmentTree.cxx:97 AliMUONSegmentTree.cxx:98 AliMUONSegmentTree.cxx:99 AliMUONSegmentTree.cxx:100 AliMUONSegmentTree.cxx:101 AliMUONSegmentTree.cxx:102 AliMUONSegmentTree.cxx:103 AliMUONSegmentTree.cxx:104 AliMUONSegmentTree.cxx:105 AliMUONSegmentTree.cxx:106 AliMUONSegmentTree.cxx:107 AliMUONSegmentTree.cxx:108 AliMUONSegmentTree.cxx:109 AliMUONSegmentTree.cxx:110 AliMUONSegmentTree.cxx:111 AliMUONSegmentTree.cxx:112 AliMUONSegmentTree.cxx:113 AliMUONSegmentTree.cxx:114 AliMUONSegmentTree.cxx:115 AliMUONSegmentTree.cxx:116 AliMUONSegmentTree.cxx:117 AliMUONSegmentTree.cxx:118