46 #include <fastjet/PseudoJet.hh>    47 #include <fastjet/ClusterSequence.hh>    48 #include <fastjet/Selector.hh>    50 #include "fastjet/tools/Filter.hh"    51 #include "fastjet/tools/Pruner.hh"    62   vector<PseudoJet> input_particles;
    64   double px, py , pz, E;
    65   while (cin >> px >> py >> pz >> E) {
    68     input_particles.push_back(
PseudoJet(px,py,pz,E)); 
    75   vector<PseudoJet> inclusive_jets = 
    79   printf(
"%5s %15s %15s %15s %15s\n",
"jet #", 
"rapidity", 
"phi", 
"pt", 
"mass");
    82   for (
unsigned int i = 0; i < inclusive_jets.size(); i++) {
    83     printf(
"%5u %15.8f %15.8f %15.8f %15.8f\n",
    84            i, inclusive_jets[i].rap(), inclusive_jets[i].phi(),
    85            inclusive_jets[i].perp(),inclusive_jets[i].m());
    90   if (inclusive_jets.size()<2){
    91     cout << 
"Please provide an event with at least 2 jets above 5 GeV" << endl;
   101   vector<Transformer *> groomers;
   107   unsigned int nfilt = 3;
   114   double ptfrac = 0.03;
   121   double rcut_factor = 0.5;
   129   cout << 
"\nOriginal jets that will be grooomed: " << endl;
   130   for (vector<PseudoJet>::iterator jit=candidates.begin(); jit!=candidates.end(); jit++){
   132     cout << 
"  rap = " << c.
rap() << 
", phi = " << c.
phi() << 
", pt = " << c.
perp() 
   133          << 
", mass = " << c.
m() 
   138   for (
unsigned int i=0; i < groomers.size(); i++){
   140     cout << 
"\nUsing groomer: " << f.
description() << endl;
   143     for (vector<PseudoJet>::iterator jit=candidates.begin(); jit!=candidates.end(); jit++){
   158          n_rejected = fj_struct.
rejected().size();
   162          n_rejected = fj_struct.
rejected().size();
   166       cout << 
"  rap = " << j.
rap() << 
", phi = " << j.
phi() << 
", pt = " << j.
perp()
   167            << 
" mass = " << j.
m() 
   168            << 
"  [kept: " << j.
pieces().size() 
   169            << 
", rejected: " << n_rejected;
   178   for (
unsigned int i=0; i < groomers.size(); i++) 
delete groomers[i];
 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...
 
Selector SelectorNHardest(unsigned int n)
select the n hardest objects 
 
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 
 
std::vector< PseudoJet > rejected() const 
return the constituents that have been rejected 
 
virtual std::vector< PseudoJet > pieces() const 
retrieve the pieces that make up the jet. 
 
Transformer that prunes a jet. 
 
int main()
an example program showing how to use Filter and Pruner in FastJet 
 
The structure associated with a PseudoJet thas has gone through a Pruner transformer. 
 
Class to contain structure information for a filtered jet. 
 
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) 
 
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...
 
double m() const 
returns the invariant mass (If m2() is negative then -sqrt(-m2()) is returned, as in CLHEP) ...
 
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