50 #include <fastjet/PseudoJet.hh>
51 #include <fastjet/ClusterSequence.hh>
52 #include <fastjet/Selector.hh>
54 #include "fastjet/tools/Filter.hh"
56 #include "fastjet/tools/GridMedianBackgroundEstimator.hh"
57 #include "fastjet/ClusterSequenceArea.hh"
58 #include "fastjet/tools/Subtractor.hh"
72 DynamicRfilt(
double Rmax,
double deltaR_factor) : _Rmax(Rmax), _deltaR_factor(deltaR_factor){}
78 vector<PseudoJet> pieces = j.
pieces();
79 if (pieces.size() != 2)
return _Rmax;
81 double deltaR = pieces[0].delta_R(pieces[1]);
82 return min(_Rmax, _deltaR_factor * deltaR);
86 double _Rmax, _deltaR_factor;
93 vector<PseudoJet> input_particles;
95 double px, py , pz, E;
96 while (cin >> px >> py >> pz >> E) {
99 input_particles.push_back(
PseudoJet(px,py,pz,E));
113 printf(
"%5s %15s %15s %15s\n",
"jet #",
"rapidity",
"phi",
"pt");
116 for (
unsigned int i = 0; i < inclusive_jets.size(); i++) {
117 printf(
"%5u %15.8f %15.8f %15.8f\n",
118 i, inclusive_jets[i].rap(), inclusive_jets[i].phi(),
119 inclusive_jets[i].perp());
124 if (inclusive_jets.size()<3){
125 cout <<
"Please provide an event with at least 3 jets above 5 GeV" << endl;
134 vector<PseudoJet> candidates;
135 candidates.push_back(inclusive_jets[0]);
136 candidates.push_back(join(inclusive_jets[1],inclusive_jets[2]));
141 vector<Filter> filters;
161 double rho = bkgd.
rho();
173 filters.push_back(filt);
181 cout <<
"\nOriginal jets that will be filtered: " << endl;
182 for (vector<PseudoJet>::iterator jit=candidates.begin(); jit!=candidates.end(); jit++){
184 cout <<
" rap = " << c.
rap() <<
", phi = " << c.
phi() <<
", pt = " << c.
perp()
189 for (vector<Filter>::iterator it=filters.begin(); it!=filters.end(); it++){
191 cout <<
"\nUsing filter: " << f.
description() << endl;
194 for (vector<PseudoJet>::iterator jit=candidates.begin(); jit!=candidates.end(); jit++){
210 cout <<
" rap = " << j.
rap() <<
", phi = " << j.
phi() <<
", pt = " << j.
perp()
211 <<
" [kept: " << j.
pieces().size() <<
", rejected: "
212 << fj_struct.
rejected().size() <<
"]" << endl;
Class that helps perform jet background subtraction.
double rap() const
returns the rapidity or some large value when the rapidity is infinite
std::string description() const
return a string describing what kind of PseudoJet we are dealing with
Selector SelectorPtFractionMin(double fraction)
select objects that carry at least a fraction "fraction" of the reference jet.
vector< PseudoJet > sorted_by_pt(const vector< PseudoJet > &jets)
return a vector of jets sorted into decreasing kt2
const TransformerType::StructureType & structure_of() const
this is a helper to access any structure created by a Transformer (that is, of type Transformer::Stru...
General class for user to obtain ClusterSequence with additional area information.
Selector SelectorNHardest(unsigned int n)
select the n hardest objects
void set_subtractor(const FunctionOfPseudoJet< PseudoJet > *subtractor_in)
Set a subtractor that is applied to all individual subjets before deciding which ones to keep...
std::vector< PseudoJet > inclusive_jets(const double ptmin=0.0) const
return a vector of all jets (in the sense of the inclusive algorithm) with pt >= ptmin.
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 longitudinally invariant kt algorithm
class that holds a generic area definition
virtual std::vector< PseudoJet > pieces() const
retrieve the pieces that make up the jet.
virtual std::string description() const
class description
virtual bool has_pieces() const
returns true if a jet has pieces
Class to contain structure information for a filtered jet.
an implementation of C++0x shared pointers (or boost's)
const std::vector< PseudoJet > & rejected() const
returns the subjets that were not kept during the filtering procedure (subtracted if the filter reque...
double phi() const
returns phi (in the range 0..2pi)
base class providing interface for a generic function of a PseudoJet
int main()
an example program showing how to use Filter in FastJet
double perp() const
returns the scalar transverse momentum
the longitudinally invariant variant of the cambridge algorithm (aka Aachen algoithm).
bool has_structure_of() const
check if the PseudoJet has the structure resulting from a Transformer (that is, its structure is comp...
T * get() const
get the stored pointer
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
class that is intended to hold a full definition of the jet clusterer