1 #ifndef __FASTJET_TOOLS_FILTER_HH__
2 #define __FASTJET_TOOLS_FILTER_HH__
32 #include <fastjet/ClusterSequence.hh>
33 #include <fastjet/Selector.hh>
34 #include <fastjet/CompositeJetStructure.hh>
35 #include <fastjet/tools/Transformer.hh>
39 FASTJET_BEGIN_NAMESPACE
43 class FilterStructure;
115 _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {}
123 _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0) {
125 throw Error(
"Attempt to create a Filter with a negative filtering radius");
135 _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {}
152 virtual std::string description()
const;
161 void _set_filtered_elements(
const PseudoJet & jet,
162 std::vector<PseudoJet> & filtered_elements,
164 bool & discard_area)
const;
167 void _set_filtered_elements_cafilt(
const PseudoJet & jet,
168 std::vector<PseudoJet> & filtered_elements,
172 void _set_filtered_elements_generic(
const PseudoJet & jet,
173 std::vector<PseudoJet> & filtered_elements,
175 bool do_areas)
const;
180 std::vector<PseudoJet> & kept,
181 std::vector<PseudoJet> & rejected,
183 const bool discard_area)
const;
188 bool _get_all_pieces(
const PseudoJet &jet, std::vector<PseudoJet> &all_pieces)
const;
194 bool _check_ca(
const std::vector<PseudoJet> &all_pieces)
const;
201 bool _check_explicit_ghosts(
const std::vector<PseudoJet> &all_pieces)
const;
203 bool _uses_subtraction()
const {
return (_subtractor || _rho != 0);}
205 JetDefinition _subjet_def;
206 FunctionOfPseudoJet<double> *_Rfiltfunc;
211 const Transformer * _subtractor;
233 virtual std::string
description()
const {
return "Filtered PseudoJet"; }
245 const std::vector<PseudoJet> &
rejected()
const {
return _rejected;}
255 FASTJET_END_NAMESPACE
257 #endif // __FASTJET_TOOLS_FILTER_HH__