1 #ifndef __FASTJET_TOOLS_FILTER_HH__
2 #define __FASTJET_TOOLS_FILTER_HH__
34 #include <fastjet/ClusterSequence.hh>
35 #include <fastjet/Selector.hh>
36 #include <fastjet/CompositeJetStructure.hh>
37 #include <fastjet/tools/Transformer.hh>
41 FASTJET_BEGIN_NAMESPACE
45 class FilterStructure;
102 Filter() : _Rfiltfunc(0), _initialised(false){};
117 _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {}
125 _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {
127 throw Error(
"Attempt to create a Filter with a negative filtering radius");
137 _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {}
154 virtual std::string description()
const;
165 bool _set_filtered_elements(
const PseudoJet & jet,
166 std::vector<PseudoJet> & filtered_elements)
const;
176 std::vector<PseudoJet> & kept,
177 std::vector<PseudoJet> & rejected,
178 bool ca_optimisation_used)
const;
180 bool _uses_subtraction()
const {
return (_subtractor || _rho != 0);}
182 JetDefinition _subjet_def;
183 FunctionOfPseudoJet<double> *_Rfiltfunc;
188 const FunctionOfPseudoJet<PseudoJet> * _subtractor;
212 virtual std::string
description()
const {
return "Filtered PseudoJet"; }
224 const std::vector<PseudoJet> &
rejected()
const {
return _rejected;}
234 FASTJET_END_NAMESPACE
236 #endif // __FASTJET_TOOLS_FILTER_HH__
Filter(JetDefinition subjet_def, Selector selector, double rho=0.0)
define a filter that decomposes a jet into subjets using a generic JetDefinition and then keeps only ...
void set_subtractor(const FunctionOfPseudoJet< PseudoJet > *subtractor_in)
Set a subtractor that is applied to all individual subjets before deciding which ones to keep...
Class that helps perform filtering (Butterworth, Davison, Rubin and Salam, arXiv:0802.2470) and trimming (Krohn, Thaler and Wang, arXiv:0912.1342) on jets, optionally in conjunction with subtraction (Cacciari and Salam, arXiv:0707.1378).
The structure for a jet made of pieces.
FilterStructure(const std::vector< PseudoJet > &pieces_in, const JetDefinition::Recombiner *rec=0)
constructor from an original ClusterSequenceInfo We just share the original ClusterSequenceWrapper an...
Filter(double Rfilt, Selector selector, double rho=0.0)
Same as the full constructor (see above) but just specifying the radius By default, Cambridge-Aachen is used If the jet (or all its pieces) is obtained with a non-default recombiner, that one will be used.
Filter()
trivial ctor Note: this is just for derived classes a Filter initialised through this constructor wil...
base class corresponding to errors that can be thrown by FastJet
Class to contain structure information for a filtered jet.
virtual ~FilterStructure()
virtual dtor to allow further overloading
Class that encodes information about cuts and other selection criteria that can be applied to PseudoJ...
const std::vector< PseudoJet > & rejected() const
returns the subjets that were not kept during the filtering procedure (subtracted if the filter reque...
Filter(FunctionOfPseudoJet< double > *Rfilt_func, Selector selector, double rho=0.0)
Same as the full constructor (see above) but just specifying a filtering radius that will depend on t...
virtual ~Filter()
default dtor
std::vector< PseudoJet > _rejected
the subjets rejected by the filter
An abstract base class that will provide the recombination scheme facilities and/or allow a user to e...
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
virtual std::string description() const
description
class that is intended to hold a full definition of the jet clusterer