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"
41FASTJET_BEGIN_NAMESPACE
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) {}
158 virtual std::string description()
const;
169 bool _set_filtered_elements(
const PseudoJet & jet,
170 std::vector<PseudoJet> & filtered_elements)
const;
180 std::vector<PseudoJet> & kept,
181 std::vector<PseudoJet> & rejected,
182 bool ca_optimisation_used)
const;
184 bool _uses_subtraction()
const {
return (_subtractor || _rho != 0);}
186 JetDefinition _subjet_def;
187 FunctionOfPseudoJet<double> *_Rfiltfunc;
192 const FunctionOfPseudoJet<PseudoJet> * _subtractor;
216 virtual std::string
description()
const {
return "Filtered PseudoJet"; }
228 const std::vector<PseudoJet> &
rejected()
const {
return _rejected;}
The structure for a jet made of pieces.
base class corresponding to errors that can be thrown by FastJet
Class to contain structure information for a filtered jet.
virtual std::string description() const
description
std::vector< PseudoJet > _rejected
the subjets rejected by the filter
const std::vector< PseudoJet > & rejected() const
returns the subjets that were not kept during the filtering procedure (subtracted if the filter reque...
FilterStructure(const std::vector< PseudoJet > &pieces_in, const JetDefinition::Recombiner *rec=0)
constructor from an original ClusterSequenceInfo We just share the original ClusterSequenceWrapper an...
virtual ~FilterStructure()
virtual dtor to allow further overloading
Class that helps perform filtering (Butterworth, Davison, Rubin and Salam, arXiv:0802....
Filter(double Rfilt, Selector selector, double rho=0.0)
Same as the full constructor (see above) but just specifying the radius By default,...
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
void set_subtractor(const FunctionOfPseudoJet< PseudoJet > *subtractor_in)
Set a subtractor that is applied to all individual subjets before deciding which ones to keep.
Filter()
trivial ctor Note: this is just for derived classes a Filter initialised through this constructor wil...
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 ...
const FunctionOfPseudoJet< PseudoJet > * subtractor() const
Set a subtractor that is applied to all individual subjets before deciding which ones to keep.
An abstract base class that will provide the recombination scheme facilities and/or allow a user to e...
class that is intended to hold a full definition of the jet clusterer
Class to contain pseudojets, including minimal information of use to jet-clustering routines.
Class that encodes information about cuts and other selection criteria that can be applied to PseudoJ...