|
FastJet 3.0alpha3
|
Implementation of the D0 Run II Cone (plugin for fastjet v2.1 upwards) More...
#include <D0RunIIConePlugin.hh>
Public Member Functions | |
| D0RunIIConePlugin (double cone_radius, double min_jet_Et, double split_ratio=_DEFAULT_split_ratio) | |
| A D0RunIIConePlugin constructor which sets the "free" parameters of the algorithm: | |
| double | cone_radius () const |
| double | min_jet_Et () const |
| double | split_ratio () const |
| double | far_ratio () const |
| double | Et_min_ratio () const |
| bool | kill_duplicate () const |
| double | duplicate_dR () const |
| double | duplicate_dPT () const |
| double | search_factor () const |
| double | pT_min_leading_protojet () const |
| double | pT_min_second_protojet () const |
| int | merge_max () const |
| double | pT_min_nomerge () const |
| double | overlap_threshold () const |
| access the split_ratio() also by the name overlap_threshold() | |
| 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: | |
| virtual double | R () const |
| the plugin mechanism's standard way of accessing the jet radius | |
Implementation of the D0 Run II Cone (plugin for fastjet v2.1 upwards)
D0RunIIConePlugin is a plugin for fastjet (v2.1 upwards) that provides an interface to the D0 version of Run-II iterative cone algorithm with midpoint seeds (also known as the Iterative Legacy Cone Algorithm, ILCA).
The D0 code has been taken from Lars Sonnenschein's web-space http://www-d0.fnal.gov/~sonne/D0RunIIcone.tgz
The version of the D0 Run II code distributed here has been modified by the FastJet authors, so as to provide access to the contents of the jets (as is necessary for the plugin). This does not modify the results of the clustering.
Definition at line 60 of file D0RunIIConePlugin.hh.
| fastjet::D0RunIIConePlugin::D0RunIIConePlugin | ( | double | cone_radius, |
| double | min_jet_Et, | ||
| double | split_ratio = _DEFAULT_split_ratio |
||
| ) | [inline] |
A D0RunIIConePlugin constructor which sets the "free" parameters of the algorithm:
The remaining parameters of the algorithm are not to be modified if the algorithm is to correspond to the one actually used by D0.
Definition at line 80 of file D0RunIIConePlugin.hh.
:
_cone_radius (cone_radius ),
_min_jet_Et (min_jet_Et ),
_split_ratio (split_ratio ),
_far_ratio (_DEFAULT_far_ratio ),
_Et_min_ratio (_DEFAULT_Et_min_ratio ),
_kill_duplicate (_DEFAULT_kill_duplicate ),
_duplicate_dR (_DEFAULT_duplicate_dR ),
_duplicate_dPT (_DEFAULT_duplicate_dPT ),
_search_factor (_DEFAULT_search_factor ),
_pT_min_leading_protojet(_DEFAULT_pT_min_leading_protojet),
_pT_min_second_protojet (_DEFAULT_pT_min_second_protojet ),
_merge_max (_DEFAULT_merge_max ),
_pT_min_nomerge (_DEFAULT_pT_min_nomerge )
{
// nothing to be done here!
}
| void fastjet::D0RunIIConePlugin::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 71 of file D0RunIIConePlugin.cc.
References fastjet::ClusterSequence::jets(), fastjet::ClusterSequence::plugin_record_iB_recombination(), and fastjet::ClusterSequence::plugin_record_ij_recombination().
{
// create the entities needed by the D0 code
vector<HepEntity> entities(clust_seq.jets().size());
list<const HepEntity * > ensemble;
for (unsigned i = 0; i < clust_seq.jets().size(); i++) {
entities[i].Fill(clust_seq.jets()[i].E(),
clust_seq.jets()[i].px(),
clust_seq.jets()[i].py(),
clust_seq.jets()[i].pz(),
i);
// use only the particles that do not have infinite rapidity
if (abs(entities[i].pz) < entities[i].E) {
ensemble.push_back(& (entities[i]));
}
}
// prepare the D0 algorithm
ILConeAlgorithm<HepEntity>
ilegac(cone_radius(),
min_jet_Et(),
split_ratio(),
far_ratio(),
Et_min_ratio(),
kill_duplicate(),
duplicate_dR(),
duplicate_dPT(),
search_factor(),
pT_min_leading_protojet(),
pT_min_second_protojet(),
merge_max(),
pT_min_nomerge());
// run the algorithm
float Item_ET_Threshold = 0.;
list<HepEntity> jets;
ilegac.makeClusters(jets, ensemble, Item_ET_Threshold);
// now transfer the information about the jets into the
// FastJet structure
for(int i = ilegac.ilcv.size()-1; i >= 0; i--) {
std::list<const HepEntity*> tlist = ilegac.ilcv[i].LItems();
std::list<const HepEntity*>::iterator tk;
// get first particle in list
tk = tlist.begin();
// if there is no particle, just discard it
// Note: this unexpected behaviour has been observed when the
// min_jet_Et parameter was set to 0
if (tk==tlist.end())
continue;
int jet_k = (*tk)->index;
// now merge with remaining particles in list
tk++;
for (; tk != tlist.end(); tk++) {
int jet_i = jet_k;
int jet_j = (*tk)->index;
// do a fake recombination step with dij=0
double dij = 0.0;
clust_seq.plugin_record_ij_recombination(jet_i, jet_j, dij, jet_k);
}
// NB: put a sensible looking d_iB just to be nice...
double d_iB = clust_seq.jets()[jet_k].perp2();
clust_seq.plugin_record_iB_recombination(jet_k, d_iB);
}
}
1.7.4