|
FastJet 3.0alpha3
|
Implementation of the e+e- Cambridge algorithm (plugin for fastjet v2.4 upwards) More...
#include <EECambridgePlugin.hh>


Public Member Functions | |
| EECambridgePlugin (double ycut) | |
| Main constructor for the EECambridge Plugin class. | |
| EECambridgePlugin (const EECambridgePlugin &plugin) | |
| copy constructor | |
| virtual std::string | description () const |
| return a textual description of the jet-definition implemented in this plugin | |
| virtual void | run_clustering (ClusterSequence &) const |
| given a ClusterSequence that has been filled up with initial particles, the following function should fill up the rest of the ClusterSequence, using the following member functions of ClusterSequence: | |
| double | ycut () const |
| virtual double | R () const |
| the plugin mechanism's standard way of accessing the jet radius. | |
| virtual bool | exclusive_sequence_meaningful () const |
| avoid the warning whenever the user requests "exclusive" jets from the cluster sequence | |
Implementation of the e+e- Cambridge algorithm (plugin for fastjet v2.4 upwards)
EECambridgePlugin is a plugin for fastjet (v2.4 upwards) It implements the Cambridge algorithm, as defined in
Better jet clustering algorithms Yuri Dokshitzer, Garth Leder, Stefano Moretti, Bryan Webber JHEP 9708 (1997) 001 http://www-spires.slac.stanford.edu/spires/find/hep/www?rawcmd=FIND+j+JHEPA%2C9708%2C001
On construction one must supply a ycut value.
To get the jets at the end call ClusterSequence::inclusive_jets();
Definition at line 59 of file EECambridgePlugin.hh.
| fastjet::EECambridgePlugin::EECambridgePlugin | ( | double | ycut | ) | [inline] |
Main constructor for the EECambridge Plugin class.
It takes the dimensionless parameter ycut (the Q value for normalisation of the kt-distances is taken from the sum of all particle energies).
Definition at line 64 of file EECambridgePlugin.hh.
: _ycut(ycut) {}
| void fastjet::EECambridgePlugin::run_clustering | ( | ClusterSequence & | ) | const [virtual] |
given a ClusterSequence that has been filled up with initial particles, the following function should fill up the rest of the ClusterSequence, using the following member functions of ClusterSequence:
Implements fastjet::JetDefinition::Plugin.
Definition at line 77 of file EECambridgePlugin.cc.
References fastjet::ClusterSequence::jets(), fastjet::ClusterSequence::plugin_record_iB_recombination(), fastjet::ClusterSequence::plugin_record_ij_recombination(), and fastjet::ClusterSequence::Q2().
{
int njets = cs.jets().size();
NNH<EECamBriefJet> nnh(cs.jets());
double Q2 = cs.Q2();
while (njets > 0) {
int i, j, k;
// here we get a minimum based on the purely angular variable from the NNH class
// (called dij there, but vij in the Cambridge article (which uses dij for
// a kt distance...)
double vij = nnh.dij_min(i, j); // i,j are return values...
// next we work out the dij (ee kt distance), and based on its
// value decide whether we have soft-freezing (represented here by
// a "Beam" clustering) or not
double dij;
if (j >= 0) {
double scale = min(cs.jets()[i].E(), cs.jets()[j].E());
dij = 2 * vij * scale * scale;
if (dij > Q2 * ycut()) {
// we'll call the softer partner a "beam" jet
if (cs.jets()[i].E() > cs.jets()[j].E()) std::swap(i,j);
j = -1;
}
} else {
// for the last particle left, just use yij = 1
dij = Q2;
}
if (j >= 0) {
cs.plugin_record_ij_recombination(i, j, dij, k);
nnh.merge_jets(i, j, cs.jets()[k], k);
} else {
cs.plugin_record_iB_recombination(i, dij);
nnh.remove_jet(i);
}
njets--;
}
}
| virtual double fastjet::EECambridgePlugin::R | ( | ) | const [inline, virtual] |
the plugin mechanism's standard way of accessing the jet radius.
This must be set to return something sensible, even if R does not make sense for this algorithm!
Implements fastjet::JetDefinition::Plugin.
Definition at line 80 of file EECambridgePlugin.hh.
{return 1.0;}
1.7.4