10 jet_sign->resize(
et_.size());
18 if (
et_.size() > (
unsigned int) std::numeric_limits<unsigned int>::digits)
23 const double sum_et = std::accumulate(
et_.begin(),
et_.end(), 0. );
24 const double sum_px = std::accumulate(
px_.begin(),
px_.end(), 0. );
25 const double sum_py = std::accumulate(
py_.begin(),
py_.end(), 0. );
28 double min_delta_sum_et = sum_et;
31 min_delta_sum_et = 0.;
33 for (
unsigned int i = 0;
i < (1
U << (
et_.size() - 1));
i++) {
34 double delta_sum_et = 0.;
35 for (
unsigned int j = 0; j <
et_.size(); ++j) {
37 delta_sum_et -=
et_[j];
39 delta_sum_et +=
et_[j];
41 delta_sum_et =
std::abs(delta_sum_et);
42 if (delta_sum_et < min_delta_sum_et) {
43 min_delta_sum_et = delta_sum_et;
45 for (
unsigned int j = 0; j <
et_.size(); ++j)
46 (*jet_sign)[j] = ((
i & (1
U << j)) == 0);
52 return (0.5 * (sum_et - min_delta_sum_et) /
std::sqrt( sum_et*sum_et - (sum_px*sum_px+sum_py*sum_py) ));
std::vector< double > px_
std::vector< double > py_
double value_(std::vector< bool > *jet_sign) const
std::vector< double > et_
Abs< T >::type abs(const T &t)