 |
DAS
3.0
Das Analysis System
|
|
void | _initialize (const std::vector< T > &init) |
|
void | _do_initial_connections (unsigned int this_one, unsigned int scale, unsigned int left_edge, unsigned int right_edge, unsigned int depth) |
|
◆ SearchTree() [1/2]
◆ SearchTree() [2/2]
SearchTree |
( |
const std::vector< T > & |
init, |
|
|
unsigned int |
max_size |
|
) |
| |
362 for (
unsigned int i = init.size(); i < max_size; i++) {
◆ _do_initial_connections()
void _do_initial_connections |
( |
unsigned int |
this_one, |
|
|
unsigned int |
scale, |
|
|
unsigned int |
left_edge, |
|
|
unsigned int |
right_edge, |
|
|
unsigned int |
depth |
|
) |
| |
|
private |
405 #ifdef __FJCORE_SEARCHTREE_TRACK_DEPTH
406 _max_depth = max(depth, _max_depth);
408 unsigned int ref_new_scale = (scale+1)/2;
409 unsigned new_scale = ref_new_scale;
410 bool did_child =
false;
412 int left = this_one - new_scale;
413 if (left >=
static_cast<int>(left_edge)
414 &&
_nodes[left].treelinks_null() ) {
421 unsigned int old_new_scale = new_scale;
422 new_scale = (old_new_scale + 1)/2;
423 if (new_scale == old_new_scale)
break;
425 if (!did_child) {
_nodes[this_one].left = NULL;}
426 new_scale = ref_new_scale;
429 unsigned int right = this_one + new_scale;
430 if (right < right_edge &&
_nodes[right].treelinks_null()) {
437 unsigned int old_new_scale = new_scale;
438 new_scale = (old_new_scale + 1)/2;
439 if (new_scale == old_new_scale)
break;
441 if (!did_child) {
_nodes[this_one].right = NULL;}
◆ _find_predecessor()
592 if (node->left != NULL) {
593 newnode = node->
left;
594 while(newnode->
right != NULL) {newnode = newnode->
right;}
599 while(newnode != NULL) {
600 if (newnode->
right == lastnode) {
return newnode;}
602 newnode = newnode->
parent;
◆ _find_successor()
609 if (node->right != NULL) {
610 newnode = node->
right;
611 while(newnode->
left != NULL) {newnode = newnode->
left;}
616 while(newnode != NULL) {
617 if (newnode->
left == lastnode) {
return newnode;}
619 newnode = newnode->
parent;
◆ _initialize()
void _initialize |
( |
const std::vector< T > & |
init | ) |
|
|
private |
374 unsigned n = init.size();
376 #ifdef __FJCORE_SEARCHTREE_TRACK_DEPTH
379 for (
unsigned int i = 1; i<n; i++) {
380 assert(!(init[i] < init[i-1]));
382 for(
unsigned int i = 0; i < n; i++) {
383 _nodes[i].value = init[i];
386 _nodes[i].nullify_treelinks();
390 unsigned int scale = (n+1)/2;
391 unsigned int top = std::min(n-1,scale);
392 _nodes[top].parent = NULL;
◆ insert()
507 Node * old_location = NULL;
509 #ifdef __FJCORE_SEARCHTREE_TRACK_DEPTH
510 unsigned int depth = 0;
512 while(location != NULL) {
513 #ifdef __FJCORE_SEARCHTREE_TRACK_DEPTH
516 old_location = location;
517 on_left = value < location->
value;
518 if (on_left) {location = location->left;}
519 else {location = location->right;}
521 #ifdef __FJCORE_SEARCHTREE_TRACK_DEPTH
522 _max_depth = max(depth, _max_depth);
524 node->parent = old_location;
525 if (on_left) {node->parent->left = node;}
526 else {node->parent->right = node;}
530 if (node->predecessor != NULL) {
531 node->successor = node->predecessor->successor;
532 node->predecessor->successor = node;
533 node->successor->predecessor = node;
536 assert(node->successor != NULL);
537 node->predecessor = node->successor->predecessor;
538 node->successor->predecessor = node;
539 node->predecessor->successor = node;
541 return circulator(node);
◆ loc()
int loc |
( |
const Node * |
node | ) |
const |
|
inline |
396 {
return node == NULL?
397 -999 : node - &(
_nodes[0]);}
◆ max_depth()
unsigned int max_depth |
( |
| ) |
const |
|
inline |
◆ operator[]() [1/2]
const Node& operator[] |
( |
int |
i | ) |
const |
|
inline |
◆ operator[]() [2/2]
const Node& operator[] |
( |
unsigned int |
i | ) |
const |
|
inline |
◆ print_elements()
628 for(; node - base_node < n ; node++) {
◆ remove() [1/3]
◆ remove() [2/3]
◆ remove() [3/3]
void remove |
( |
unsigned |
node_index | ) |
|
◆ size()
unsigned int size |
( |
| ) |
const |
|
inline |
◆ somewhere() [1/2]
◆ somewhere() [2/2]
◆ verify_structure()
546 while (left_limit->left != NULL) {left_limit = left_limit->
left;}
548 while (right_limit->right != NULL) {right_limit = right_limit->
right;}
◆ verify_structure_linear()
void verify_structure_linear |
573 for(
unsigned i = 0; i <
_nodes.size(); i++) {
576 if (node->
parent == NULL) {
581 if (node->
left != NULL) {
583 if (node->
right != NULL) {
586 assert(n_top == 1 || (n_top == 0 &&
size() <= 1) );
◆ verify_structure_recursive()
void verify_structure_recursive |
( |
const Node * |
, |
|
|
const Node * |
, |
|
|
const Node * |
|
|
) |
| const |
555 assert(!(element->value < left_limit->value));
556 assert(!(right_limit->value < element->value));
557 const Node * left = element->left;
559 assert(!(element->value < left->value));
560 if (left != left_limit) {
563 const Node * right = element->right;
565 assert(!(right->value < element->value));
566 if (right != right_limit) {
◆ _available_nodes
std::vector<Node *> _available_nodes |
|
private |
◆ _n_removes
◆ _nodes
◆ _top_node
The documentation for this class was generated from the following file:
- /builds/cms-analysis/general/DasAnalysisSystem/Core/Installer/Core/JetObservables/src/fjcore.cc
int loc(const Node *node) const
Definition: fjcore.cc:396
std::vector< Node * > _available_nodes
Definition: fjcore.cc:261
Node * left
Definition: fjcore.cc:283
Node * parent
Definition: fjcore.cc:285
void _initialize(const std::vector< T > &init)
Definition: fjcore.cc:372
std::vector< Node > _nodes
Definition: fjcore.cc:260
Node * _top_node
Definition: fjcore.cc:262
Definition: fjcore.cc:271
Node * _find_successor(const Node *)
Definition: fjcore.cc:607
Node * successor
Definition: fjcore.cc:286
Node * _find_predecessor(const Node *)
Definition: fjcore.cc:590
unsigned int size() const
Definition: fjcore.cc:242
bool treelinks_null() const
default constructor
Definition: fjcore.cc:274
void _do_initial_connections(unsigned int this_one, unsigned int scale, unsigned int left_edge, unsigned int right_edge, unsigned int depth)
Definition: fjcore.cc:398
void verify_structure_linear() const
Definition: fjcore.cc:570
void verify_structure_recursive(const Node *, const Node *, const Node *) const
Definition: fjcore.cc:551
T value
Definition: fjcore.cc:282
void remove(unsigned node_index)
Node * predecessor
Definition: fjcore.cc:287
Node * right
Definition: fjcore.cc:284
unsigned int _n_removes
Definition: fjcore.cc:263