35 #include "fastjet/ClusterSequence.hh" 36 #include "fastjet/NestedDefsPlugin.hh" 42 FASTJET_BEGIN_NAMESPACE
46 string NestedDefsPlugin::description ()
const {
49 desc <<
"NestedDefs: successive application of " ;
51 for (list<JetDefinition>::const_iterator it=_defs.begin();it!=_defs.end();it++){
52 desc <<
"Definition " << i++ <<
" [" << it->description() <<
"] - ";
59 vector<PseudoJet> momenta;
62 momenta = clust_seq.
jets();
63 unsigned int step_n = momenta.size();
67 vector<unsigned int> conversion_table(2*step_n);
68 vector<unsigned int> new_conversion_table;
69 for (
unsigned int i=0;i<step_n;i++)
70 conversion_table[i]=i;
77 list<JetDefinition>::const_iterator def_iterator = _defs.begin();
78 unsigned int def_index=0;
81 while (def_iterator!=_defs.end()){
82 last_def = (def_index == (_defs.size()-1));
89 new_conversion_table.clear();
92 const vector<ClusterSequence::history_element> & step_history = step_cs.
history();
97 vector<ClusterSequence::history_element>::const_iterator
98 hist_iterator = step_history.begin();
100 for (
unsigned int i=step_n;i!=0;i--)
103 while (hist_iterator != step_history.end()){
105 if (hist_iterator->parent2 == ClusterSequence::BeamJet){
108 unsigned int step_jet_index = step_cs.
history()[hist_iterator->parent1].jetp_index;
113 momenta.push_back(step_cs.
jets()[step_jet_index]);
114 new_conversion_table.push_back(conversion_table[step_jet_index]);
119 unsigned int step_jet1_index = step_cs.
history()[hist_iterator->parent1].jetp_index;
120 unsigned int step_jet2_index = step_cs.
history()[hist_iterator->parent2].jetp_index;
121 PseudoJet newjet = step_cs.
jets()[hist_iterator->jetp_index];
124 conversion_table[step_jet2_index],
125 last_def ? hist_iterator->dij : 0.0,
129 conversion_table[hist_iterator->jetp_index]=jet_k;
139 step_n = momenta.size();
140 for (
unsigned int i=0;i<step_n;i++)
141 conversion_table[i] = new_conversion_table[i];
150 FASTJET_END_NAMESPACE
const std::vector< history_element > & history() const
allow the user to access the raw internal history.
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
record the fact that there has been a recombination between jets()[jet_i] and jets()[jet_k], with the specified dij, and return the index (newjet_k) allocated to the new jet, whose momentum is assumed to be the 4-vector sum of that of jet_i and jet_j
void plugin_record_iB_recombination(int jet_i, double diB)
record the fact that there has been a recombination between jets()[jet_i] and the beam...
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
const std::vector< PseudoJet > & jets() const
allow the user to access the internally stored _jets() array, which contains both the initial particl...