Helios++
Helios software for LiDAR simulations
KDGroveStats.h
1 #pragma once
2 
3 #include <string>
4 #include <sstream>
5 #include <ostream>
6 #include <vector>
7 
8 using std::string;
9 using std::stringstream;
10 using std::ostream;
11 using std::vector;
12 
19 public:
20  // *** ATTRIBUTES *** //
21  // ******************** //
27  int numTrees;
236  double meanMaxDepth;
385  double totalCost;
394  double minCost;
403  double maxCost;
412  double meanCost;
421  double stdevCost;
422 
423  // *** CONSTRUCTION / DESTRUCTION *** //
424  // ************************************ //
429  numTrees(0),
430  numStaticTrees(0),
431  numDynTrees(0),
433  minBuildingTime(0),
434  maxBuildingTime(0),
435  meanBuildingTime(0),
452  totalMaxDepth(0),
453  minMaxDepth(0),
454  maxMaxDepth(0),
455  meanMaxDepth(0),
456  stdevMaxDepth(0),
457  totalSurfaceArea(0),
458  minSurfaceArea(0),
459  maxSurfaceArea(0),
460  meanSurfaceArea(0),
461  stdevSurfaceArea(0),
462  totalNumInterior(0),
463  minNumInterior(0),
464  maxNumInterior(0),
465  meanNumInterior(0),
466  stdevNumInterior(0),
467  totalNumLeaves(0),
468  minNumLeaves(0),
469  maxNumLeaves(0),
470  meanNumLeaves(0),
471  stdevNumLeaves(0),
472  totalCost(0),
473  minCost(0),
474  maxCost(0),
475  meanCost(0),
476  stdevCost(0)
477  {}
478  virtual ~KDGroveStats() = default;
479 
480  // *** TO STRING *** //
481  // ******************* //
486  string toString() const {
487  stringstream ss;
488  ss.flags(std::ios_base::fixed);
489  ss.precision(4);
490  ss << "KDGrove stats:\n"
491  << "\tNumber of trees: " << numTrees << "\n"
492  << "\tNumber of static trees: " << numStaticTrees << "\n"
493  << "\tNumber of dynamic trees: " << numDynTrees << "\n"
494  << "\tStatistics (min, max, total, mean, stdev):\n"
495  << "\t\tBuilding time: ("
496  << minBuildingTime << ", "
497  << maxBuildingTime << ", "
498  << totalBuildingTime << ", "
499  << meanBuildingTime << ", "
500  << stdevBuildingTime << ")\n"
501  << "\t\tTree primitives: ("
502  << minTreePrimitives << ", "
503  << maxTreePrimitives << ", "
504  << totalTreePrimitives << ", "
505  << meanTreePrimitives << ", "
506  << stdevTreePrimitives << ")\n"
507  << "\t\tMax primitives in leaf: ("
508  << minMaxPrimsInLeaf << ", "
509  << maxMaxPrimsInLeaf << ", "
510  << totalMaxPrimsInLeaf << ", "
511  << meanMaxPrimsInLeaf << ", "
512  << stdevMaxPrimsInLeaf << ")\n"
513  << "\t\tMin primitives in leaf: ("
514  << minMinPrimsInLeaf << ", "
515  << maxMinPrimsInLeaf << ", "
516  << totalMinPrimsInLeaf << ", "
517  << meanMinPrimsInLeaf << ", "
518  << stdevMinPrimsInLeaf << ")\n"
519  << "\t\tMaximum depth: ("
520  << minMaxDepth << ", "
521  << maxMaxDepth << ", "
522  << totalMaxDepth << ", "
523  << meanMaxDepth << ", "
524  << stdevMaxDepth << ")\n"
525  << "\t\tAxis-aligned surface area: ("
526  << minSurfaceArea << ", "
527  << maxSurfaceArea << ", "
528  << totalSurfaceArea << ", "
529  << meanSurfaceArea << ", "
530  << stdevSurfaceArea << ")\n"
531  << "\t\tNumber of interior nodes: ("
532  << minNumInterior << ", "
533  << maxNumInterior << ", "
534  << totalNumInterior << ", "
535  << meanNumInterior << ", "
536  << stdevNumInterior << ")\n"
537  << "\t\tNumber of leaf nodes: ("
538  << minNumLeaves << ", "
539  << maxNumLeaves << ", "
540  << totalNumLeaves << ", "
541  << meanNumLeaves << ", "
542  << stdevNumLeaves << ")\n"
543  << "\t\tTree cost: ("
544  << minCost << ", "
545  << maxCost << ", "
546  << totalCost << ", "
547  << meanCost << ", "
548  << stdevCost << ")\n"
549  ;
550  return ss.str();
551  }
552 
556  friend ostream& operator<<(ostream &out, KDGroveStats const &stats){
557  out << stats.toString();
558  return out;
559  }
560 };
Data structure class containing statistics for KDGrove.
Definition: KDGroveStats.h:18
double minCost
The minimum tree cost among all KDTrees.
Definition: KDGroveStats.h:394
double stdevSurfaceArea
The standard deviation of axis-aligned surface area among all KDTrees.
Definition: KDGroveStats.h:286
int maxNumInterior
The maximum number of interior nodes among all KDTrees.
Definition: KDGroveStats.h:313
double minSurfaceArea
The minimum axis-aligned surface area among all KDTrees.
Definition: KDGroveStats.h:261
double meanNumInterior
The mean number of interior nodes among all KDTrees.
Definition: KDGroveStats.h:322
int maxNumLeaves
The maximum number of leaf nodes among all KDTrees.
Definition: KDGroveStats.h:358
int totalMaxDepth
The total maximum depth among all KDTrees (summation)
Definition: KDGroveStats.h:209
int minMaxPrimsInLeaf
The minimum maximum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:120
double totalSurfaceArea
The total axis-aligned surface area among all KDTrees (summation)
Definition: KDGroveStats.h:253
double totalBuildingTime
Total building time among all built KDTrees (seconds)
Definition: KDGroveStats.h:43
double maxBuildingTime
Maximum building time among all built KDTrees (seconds)
Definition: KDGroveStats.h:51
int minMinPrimsInLeaf
The minimun minimum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:170
int maxTreePrimitives
The maximum number of primitives among all KDTrees.
Definition: KDGroveStats.h:84
int maxMaxDepth
The maximum maximum depth among all KDTrees.
Definition: KDGroveStats.h:227
double minBuildingTime
Minimum building time among all built KDTrees (seconds)
Definition: KDGroveStats.h:47
string toString() const
Build a string representation of the KDGrove stats.
Definition: KDGroveStats.h:486
int numDynTrees
The number of dynamic trees composing the KDGrove.
Definition: KDGroveStats.h:39
friend ostream & operator<<(ostream &out, KDGroveStats const &stats)
Support for operator<< on output streams.
Definition: KDGroveStats.h:556
double stdevMaxDepth
The standard deviation of max depth among all KDTrees.
Definition: KDGroveStats.h:245
int totalNumInterior
The total number of interior nodes among all KDTrees (summation)
Definition: KDGroveStats.h:295
double meanNumLeaves
The mean number of leaf nodes among all KDTrees.
Definition: KDGroveStats.h:367
double stdevNumInterior
The standard deviation of interior nodes count among all KDTrees.
Definition: KDGroveStats.h:331
double stdevNumLeaves
The standard deviation of leaf nodes count among all KDTrees.
Definition: KDGroveStats.h:376
int minNumInterior
The minimum number of interior nodes among all KDTrees.
Definition: KDGroveStats.h:304
double meanMaxDepth
The mean max depth among all KDTrees.
Definition: KDGroveStats.h:236
KDGroveStats()
Default constructor for KDGrove stats.
Definition: KDGroveStats.h:428
double meanMinPrimsInLeaf
The mean minimum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:190
double stdevMinPrimsInLeaf
The standard deviation of minimum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:200
int minTreePrimitives
The minimum number of primitives among all KDTrees.
Definition: KDGroveStats.h:76
double maxCost
Definition: KDGroveStats.h:403
int totalTreePrimitives
The total number of primitives among all KDTrees (summation)
Definition: KDGroveStats.h:68
int minMaxDepth
The minimum maximum depth among all KDTrees.
Definition: KDGroveStats.h:218
int totalMaxPrimsInLeaf
The total maximum number of primitives among all leaves for each KDTree (summation)
Definition: KDGroveStats.h:110
double stdevCost
The standard deviation of cost among all KDTrees.
Definition: KDGroveStats.h:421
double meanBuildingTime
Mean building time among all built KDTrees (seconds)
Definition: KDGroveStats.h:55
double meanTreePrimitives
The mean number of primitives among all KDTrees.
Definition: KDGroveStats.h:92
double stdevTreePrimitives
The standard deviation of number of primitives among all KDTrees.
Definition: KDGroveStats.h:100
double stdevMaxPrimsInLeaf
The standard deviation of maximum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:150
double meanCost
The mean cost among all KDTrees.
Definition: KDGroveStats.h:412
int totalNumLeaves
The total number of leaf nodes among all KDTrees (summation)
Definition: KDGroveStats.h:340
int maxMinPrimsInLeaf
The maximum minimum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:180
double meanMaxPrimsInLeaf
The mean maximum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:140
int maxMaxPrimsInLeaf
The maximum maximum number of primitives among all leaves for each KDTree.
Definition: KDGroveStats.h:130
int minNumLeaves
The minimum number of leaf nodes among all KDTrees.
Definition: KDGroveStats.h:349
int numTrees
The total number of trees composing the KDGrove.
Definition: KDGroveStats.h:27
int totalMinPrimsInLeaf
The total minimum number of primitives among all leaves for each KDTree (summation)
Definition: KDGroveStats.h:160
double meanSurfaceArea
The mean axis-aligned surface area among all KDTrees.
Definition: KDGroveStats.h:277
double stdevBuildingTime
Standard deviation of building time among all built KDTrees (seconds)
Definition: KDGroveStats.h:60
int numStaticTrees
The number of static trees composing the KDGrove.
Definition: KDGroveStats.h:33
double maxSurfaceArea
The maximum axis-aligned surface area among all KDTrees.
Definition: KDGroveStats.h:269
double totalCost
Total cost among all KDTrees (summation)
Definition: KDGroveStats.h:385