1 #ifndef __FASTJET_BACKGROUND_ESTIMATOR_HH__
2 #define __FASTJET_BACKGROUND_ESTIMATOR_HH__
35 #include "fastjet/config.h"
36 #include "fastjet/ClusterSequenceAreaBase.hh"
37 #include "fastjet/AreaDefinition.hh"
38 #include "fastjet/FunctionOfPseudoJet.hh"
39 #include "fastjet/Selector.hh"
40 #include "fastjet/tools/BackgroundEstimatorBase.hh"
43 #ifdef FASTJET_HAVE_THREAD_SAFETY
47 FASTJET_BEGIN_NAMESPACE
132 _enable_rho_m(true){ reset(); }
147 virtual void set_particles(
const std::vector<PseudoJet> & particles) FASTJET_OVERRIDE;
152 virtual void set_particles_with_seed(
const std::vector<PseudoJet> & particles,
const std::vector<int> & seed) FASTJET_OVERRIDE;
176 void set_jets(
const std::vector<PseudoJet> &jets);
180 _rho_range = rho_range_selector;
181 _set_cache_unavailable();
187 _enable_rho_m = enable;
188 _set_cache_unavailable();
215 double rho() const FASTJET_OVERRIDE;
218 double sigma() const FASTJET_OVERRIDE;
226 double rho(const
PseudoJet & jet) FASTJET_OVERRIDE;
234 double sigma(const
PseudoJet &jet) FASTJET_OVERRIDE;
238 virtual
bool has_sigma() const FASTJET_OVERRIDE {
return true;}
245 virtual double rho_m() const FASTJET_OVERRIDE;
251 virtual
double sigma_m() const FASTJET_OVERRIDE;
254 virtual
double rho_m(const
PseudoJet & ) FASTJET_OVERRIDE;
257 virtual
double sigma_m(const
PseudoJet & ) FASTJET_OVERRIDE;
267 virtual
bool has_rho_m() const FASTJET_OVERRIDE {
return _enable_rho_m && (_jet_density_class == 0);}
276 double mean_area()
const;
281 unsigned int n_jets_used()
const;
285 std::vector<PseudoJet> jets_used()
const;
301 double empty_area()
const;
315 double n_empty_jets()
const;
340 _use_area_4vector = use_it;
341 _set_cache_unavailable();
352 _provide_fj2_sigma = provide_fj2_sigma;
353 _set_cache_unavailable();
367 return _jet_density_class;
379 BackgroundEstimatorBase::set_rescaling_class(rescaling_class_in);
380 _set_cache_unavailable();
390 std::string description() const FASTJET_OVERRIDE;
399 : _reference_jet(
PseudoJet()), _n_jets_used(0),
400 _n_empty_jets(0.0), _empty_area(0.0) {}
414 void set_reference_jet(
const PseudoJet &reference_jet_in){
415 _reference_jet = reference_jet_in;
417 void set_n_jets_used(
int n_jets_used_in){ _n_jets_used=n_jets_used_in;}
418 void set_n_empty_jets(
double n_empty_jets_in){ _n_empty_jets=n_empty_jets_in;}
419 void set_empty_area(
double empty_area_in){ _empty_area=empty_area_in;}
447 void _compute_and_cache_no_overwrite()
const;
465 void _check_csa_alive()
const;
470 void _check_jet_alg_good_for_median()
const;
476 std::vector<PseudoJet> _included_jets;
479 bool _use_area_4vector;
480 bool _provide_fj2_sigma;
507 virtual std::string description()
const {
return "BackgroundJetPtDensity";}
528 virtual double result(
const PseudoJet & jet)
const;
530 virtual std::string description()
const;
549 std::vector<PseudoJet> constituents = jet.
constituents();
550 double scalar_ptm = 0;
551 for (
unsigned i = 0; i < constituents.size(); i++) {
552 scalar_ptm += constituents[i].mperp() - constituents[i].perp();
554 return scalar_ptm / jet.
area();
557 virtual std::string description()
const {
return "BackgroundPtMDensity";}
561 FASTJET_END_NAMESPACE
563 #endif // __BACKGROUND_ESTIMATOR_HH__