31 #ifndef __FASTJET_CLUSTERSEQUENCEAREA_HH__
32 #define __FASTJET_CLUSTERSEQUENCEAREA_HH__
34 #include "fastjet/ClusterSequenceAreaBase.hh"
35 #include "fastjet/ClusterSequenceActiveArea.hh"
36 #include "fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh"
37 #include "fastjet/ClusterSequencePassiveArea.hh"
38 #include "fastjet/ClusterSequenceVoronoiArea.hh"
39 #include "fastjet/AreaDefinition.hh"
41 FASTJET_BEGIN_NAMESPACE
55 (
const std::vector<L> & pseudojets,
58 initialize_and_run_cswa(pseudojets, jet_def_in);
63 (
const std::vector<L> & pseudojets,
66 initialize_and_run_cswa(pseudojets, jet_def_in);
71 (
const std::vector<L> & pseudojets,
74 initialize_and_run_cswa(pseudojets, jet_def_in);
83 return _area_base->area(jet);}
88 return _area_base->area_error(jet);}
92 return _area_base->area_4vector(jet);}
113 return _area_base->empty_area(selector);}
125 return _area_base->n_empty_jets(selector);
130 return _area_base->is_pure_ghost(jet);
135 return _area_base->has_explicit_ghosts();
149 bool use_area_4vector,
150 double & median,
double & sigma,
152 bool all_are_incl =
false) const FASTJET_OVERRIDE {
153 _warn_if_range_unsuitable(selector);
154 ClusterSequenceAreaBase::_get_median_rho_and_sigma(
155 all_jets, selector, use_area_4vector,
156 median, sigma, mean_area, all_are_incl);
165 bool use_area_4vector,
166 double & median,
double & sigma)
const FASTJET_OVERRIDE {
167 ClusterSequenceAreaBase::_get_median_rho_and_sigma(selector,use_area_4vector,
177 bool use_area_4vector,
178 double & median,
double & sigma,
179 double & mean_area)
const FASTJET_OVERRIDE {
180 ClusterSequenceAreaBase::_get_median_rho_and_sigma(selector,use_area_4vector,
181 median,sigma, mean_area);
191 double exclude_above=-1.0,
192 bool use_area_4vector=
false) const FASTJET_OVERRIDE {
193 return _parabolic_pt_per_unit_area(a,b,selector,exclude_above,use_area_4vector);
202 void _warn_if_range_unsuitable(
const Selector & selector)
const;
204 template<
class L>
void initialize_and_run_cswa (
205 const std::vector<L> & pseudojets,
219 virtual void _parabolic_pt_per_unit_area(
double & a,
double & b,
221 double exclude_above=-1.0,
222 bool use_area_4vector=
false) const FASTJET_OVERRIDE {
223 _warn_if_range_unsuitable(selector);
224 ClusterSequenceAreaBase::_parabolic_pt_per_unit_area(
225 a,b,selector, exclude_above, use_area_4vector);
231 template<
class L>
void ClusterSequenceArea::initialize_and_run_cswa(
232 const std::vector<L> & pseudojets,
233 const JetDefinition & jet_def_in)
236 ClusterSequenceAreaBase * _area_base_ptr;
237 switch(_area_def.area_type()) {
239 _area_base_ptr =
new ClusterSequenceActiveArea(pseudojets,
241 _area_def.ghost_spec());
243 case active_area_explicit_ghosts:
244 if (_area_def.ghost_spec().repeat() != 1)
245 _explicit_ghosts_repeats_warnings.warn(
"Requested active area with explicit ghosts with repeat != 1; only 1 set of ghosts will be used");
246 _area_base_ptr =
new ClusterSequenceActiveAreaExplicitGhosts(pseudojets,
248 _area_def.ghost_spec());
251 _area_base_ptr =
new ClusterSequenceVoronoiArea(pseudojets,
253 _area_def.voronoi_spec());
255 case one_ghost_passive_area:
256 _area_base_ptr =
new ClusterSequence1GhostPassiveArea(pseudojets,
258 _area_def.ghost_spec());
261 _area_base_ptr =
new ClusterSequencePassiveArea(pseudojets,
263 _area_def.ghost_spec());
266 std::ostringstream err;
267 err <<
"Error: unrecognized area_type in ClusterSequenceArea:"
268 << _area_def.area_type();
269 throw Error(err.str());
273 _area_base = SharedPtr<ClusterSequenceAreaBase>(_area_base_ptr);
274 transfer_from_sequence(*_area_base);
277 FASTJET_END_NAMESPACE
279 #endif // __FASTJET_CLUSTERSEQUENCEAREA_HH__