1 #ifndef __SISCONEBASEPLUGIN_HH__
2 #define __SISCONEBASEPLUGIN_HH__
4 #include "fastjet/JetDefinition.hh"
5 #include "fastjet/ClusterSequence.hh"
13 FASTJET_BEGIN_NAMESPACE
40 class SISConeBasePlugin :
public JetDefinition::Plugin {
44 _use_jet_def_recombiner =
false;
45 set_progressive_removal(
false);
49 SISConeBasePlugin (
const SISConeBasePlugin & plugin) {
67 void set_progressive_removal(
bool progressive_removal_in=
true){
68 _progressive_removal = progressive_removal_in;
72 bool progressive_removal()
const{
return _progressive_removal;}
75 double cone_radius ()
const {
return _cone_radius ;}
79 double overlap_threshold ()
const {
return _overlap_threshold ;}
83 int n_pass_max ()
const {
return _n_pass_max ;}
91 void set_split_merge_stopping_scale(
double scale) {
92 _split_merge_stopping_scale = scale;}
96 double split_merge_stopping_scale() {
return _split_merge_stopping_scale;}
99 void set_use_jet_def_recombiner(
bool choice) {_use_jet_def_recombiner = choice;}
102 bool use_jet_def_recombiner()
const {
return _use_jet_def_recombiner;}
105 bool caching()
const {
return _caching ;}
108 virtual double R()
const {
return cone_radius();}
114 virtual bool supports_ghosted_passive_areas()
const {
121 virtual void set_ghost_separation_scale(
double scale)
const {
122 _ghost_sep_scale = scale;
125 virtual double ghost_separation_scale()
const {
126 return _ghost_sep_scale;
163 virtual double result(
const PseudoJet & jet)
const = 0;
183 void set_user_scale(
const UserScaleBase *user_scale_in){ _user_scale = user_scale_in;}
186 const UserScaleBase * user_scale()
const{
return _user_scale;}
193 virtual std::string description ()
const =0;
199 double _cone_radius, _overlap_threshold;
202 double _split_merge_stopping_scale;
203 bool _use_jet_def_recombiner;
204 bool _progressive_removal;
206 mutable double _ghost_sep_scale;
210 virtual void reset_stored_plugin()
const =0;
212 const UserScaleBase * _user_scale;
239 const std::vector<PseudoJet> &
stable_cones()
const {
return _protocones;}
242 const std::vector<PseudoJet> &
protocones()
const {
return _protocones;}
251 std::ostringstream ostr;
252 ostr <<
"This SISCone clustering found " << protocones().size()
253 <<
" stable protocones";
263 std::vector<PseudoJet> _protocones;
264 std::vector<int> _pass;
265 double _most_ambiguous_split;
266 const SISConeBasePlugin * _jet_def_plugin;
270 inline SISConeBaseExtras::~SISConeBaseExtras(){}
293 return "PseudoJet wrapping a siscone jet from a stable cone";
304 std::vector<PseudoJet> constits;
305 constits.reserve(size());
306 for (
unsigned int i=0; i<size();i++)
307 constits.push_back(constituent(i));
315 virtual unsigned int size()
const = 0;
319 virtual int constituent_index(
unsigned int i)
const = 0;
323 return _cs.jets()[constituent_index(i)];
330 virtual double ordering_var2()
const = 0;
354 virtual unsigned int size()
const{
361 return _jet.contents[i];
379 FASTJET_END_NAMESPACE
381 #endif // __SISCONEBASEPLUGIN_HH__