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);}
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();
148 bool use_area_4vector,
149 double & median,
double & sigma,
151 bool all_are_incl =
false)
const {
152 _warn_if_range_unsuitable(selector);
153 ClusterSequenceAreaBase::get_median_rho_and_sigma(
154 all_jets, selector, use_area_4vector,
155 median, sigma, mean_area, all_are_incl);
163 bool use_area_4vector,
164 double & median,
double & sigma)
const {
165 ClusterSequenceAreaBase::get_median_rho_and_sigma(selector,use_area_4vector,
174 bool use_area_4vector,
175 double & median,
double & sigma,
176 double & mean_area)
const {
177 ClusterSequenceAreaBase::get_median_rho_and_sigma(selector,use_area_4vector,
178 median,sigma, mean_area);
187 double exclude_above=-1.0,
188 bool use_area_4vector=
false)
const {
189 _warn_if_range_unsuitable(selector);
190 ClusterSequenceAreaBase::parabolic_pt_per_unit_area(
191 a,b,selector, exclude_above, use_area_4vector);
200 void _warn_if_range_unsuitable(
const Selector & selector)
const;
202 template<
class L>
void initialize_and_run_cswa (
203 const std::vector<L> & pseudojets,
206 std::auto_ptr<ClusterSequenceAreaBase> _area_base;
214 template<
class L>
void ClusterSequenceArea::initialize_and_run_cswa(
215 const std::vector<L> & pseudojets,
216 const JetDefinition & jet_def_in)
219 ClusterSequenceAreaBase * _area_base_ptr;
220 switch(_area_def.area_type()) {
222 _area_base_ptr =
new ClusterSequenceActiveArea(pseudojets,
224 _area_def.ghost_spec());
226 case active_area_explicit_ghosts:
227 if (_area_def.ghost_spec().repeat() != 1)
228 _explicit_ghosts_repeats_warnings.warn(
"Requested active area with explicit ghosts with repeat != 1; only 1 set of ghosts will be used");
229 _area_base_ptr =
new ClusterSequenceActiveAreaExplicitGhosts(pseudojets,
231 _area_def.ghost_spec());
234 _area_base_ptr =
new ClusterSequenceVoronoiArea(pseudojets,
236 _area_def.voronoi_spec());
238 case one_ghost_passive_area:
239 _area_base_ptr =
new ClusterSequence1GhostPassiveArea(pseudojets,
241 _area_def.ghost_spec());
244 _area_base_ptr =
new ClusterSequencePassiveArea(pseudojets,
246 _area_def.ghost_spec());
249 std::ostringstream err;
250 err <<
"Error: unrecognized area_type in ClusterSequenceArea:"
251 << _area_def.area_type();
252 throw Error(err.str());
256 _area_base = std::auto_ptr<ClusterSequenceAreaBase>(_area_base_ptr);
257 transfer_from_sequence(*_area_base);
260 FASTJET_END_NAMESPACE
262 #endif // __FASTJET_CLUSTERSEQUENCEAREA_HH__