44void GridMedianBackgroundEstimator::set_particles(
const vector<PseudoJet> & particles) {
45 vector<double> scalar_pt(n_tiles(), 0.0);
47 assert(all_tiles_equal_area());
50 _cached_estimate.reset();
51 _cached_estimate.set_has_sigma(
true);
52 _cached_estimate.set_mean_area(mean_tile_area());
59 vector<double> scalar_dt(n_tiles(), 0.0);
61 for (
unsigned i = 0; i < particles.size(); i++) {
62 int j = tile_index(particles[i]);
64 pt = particles[i].pt();
65 dt = particles[i].mt() - pt;
66 if (_rescaling_class == 0){
70 double r = (*_rescaling_class)(particles[i]);
77 sort(scalar_dt.begin(), scalar_dt.end());
81 double p50 = _percentile(scalar_dt, 0.5);
82 _cached_estimate.set_has_rho_m(
true);
83 _cached_estimate.set_rho_m(p50 / mean_tile_area());
84 _cached_estimate.set_sigma_m((p50-_percentile(scalar_dt, (1.0-0.6827)/2.0))/sqrt(mean_tile_area()));
88 for (
unsigned i = 0; i < particles.size(); i++) {
89 int j = tile_index(particles[i]);
91 if (_rescaling_class == 0){
92 scalar_pt[j] += particles[i].pt();
94 scalar_pt[j] += particles[i].pt()/(*_rescaling_class)(particles[i]);
106 if (n_good_tiles() != n_tiles()) {
108 for (
unsigned i = 0; i < scalar_pt.size(); i++) {
109 if (tile_is_good(i)) {
112 std::swap(scalar_pt[i],scalar_pt[newn]);
116 scalar_pt.resize(newn);
122 sort(scalar_pt.begin(), scalar_pt.end());
128 double p50 = _percentile(scalar_pt, 0.5);
129 _cached_estimate.set_rho(p50 / mean_tile_area());
130 _cached_estimate.set_sigma((p50-_percentile(scalar_pt, (1.0-0.6827)/2.0))/sqrt(mean_tile_area()));
132 _cache_available =
true;