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__
virtual ~UserScaleBase()
empty virtual dtor
virtual std::string description() const
the textual descripotion
virtual ~UserScaleBaseStructureType()
empty virtual dtor
int cluster_hist_index() const
return the cluster_hist_index, intended to be used by clustering routines.
const PseudoJet & constituent(unsigned int i) const
returns the ith constituent (as a PseusoJet)
const Tjet & _jet
a reference to the internal jet in SISCone
Contains any information related to the clustering that should be directly accessible to PseudoJet...
virtual unsigned int size() const
returns the number of constituents
the structure that allows to store the information contained into a siscone::Cjet (built internally i...
virtual ~StructureType()
empty virtual dtor
virtual double ordering_var2() const
returns the sm_var2 (signed ordering variable squared) for this stable cone
virtual int constituent_index(unsigned int i) const
returns the index (in the original particle list) of the ith constituent
base class providing interface for a generic function of a PseudoJet
base class for user-defined ordering of stable cones (used for prorgessive removal) ...
virtual bool has_constituents() const
this structure has constituents
template class derived from UserScaleBase::StryctureType that works for both SISCone jet classes impl...
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
virtual std::vector< PseudoJet > constituents(const PseudoJet &) const
retrieve the constituents
StructureType(const ClusterSequence &cs)
base ctor (constructed from a ClusterSequence tin order to have access to the initial particles ...
const ClusterSequence & _cs
a reference to the CS (for access to the particles)