/** * \details Calculates incusive and exclusive values for every metric. */ void AggrCube::get_met_tree(vector<double>& excl_sevv, vector<double>& incl_sevv, inclmode cnode_mode, inclmode sys_mode, Cnode* cnode, Sysres* sys) const { const vector<Metric*>& metrics = get_metv(); size_t num_metrics = metrics.size(); excl_sevv.resize(num_metrics); incl_sevv.resize(num_metrics); #pragma omp parallel { #pragma omp for for (size_t i = 0; i < num_metrics; ++i) incl_sevv[i] = get_vcsev(INCL, cnode_mode, sys_mode, metrics[i], cnode, sys); #pragma omp for for (size_t i = 0; i < num_metrics; ++i) { Metric* met = metrics[i]; double result = incl_sevv[i]; for (unsigned int j = 0; j < met->num_children(); ++j) result -= incl_sevv[met->get_child(j)->get_id()]; excl_sevv[i] = result; } } }