#include <ClusterSequencePassiveArea.hh>
Inheritance diagram for fastjet::ClusterSequencePassiveArea:
Public Member Functions | |
template<class L> | |
ClusterSequencePassiveArea (const std::vector< L > &pseudojets, const JetDefinition &jet_def, const GhostedAreaSpec &area_spec, const bool &writeout_combinations=false) | |
constructor based on JetDefinition and PassiveAreaSpec | |
virtual double | empty_area (const RangeDefinition &range) const |
return an empty area that's appropriate to the passive area determination carried out | |
Private Member Functions | |
void | _initialise_and_run_PA (const JetDefinition &jet_def, const GhostedAreaSpec &area_spec, const bool &writeout_combinations=false) |
global routine for initialising and running a passive area that is correct in general, but that chooses an optimal approach for various special cases. |
.. Figure out what to do about seeds later...)
Definition at line 48 of file ClusterSequencePassiveArea.hh.
fastjet::ClusterSequencePassiveArea::ClusterSequencePassiveArea | ( | const std::vector< L > & | pseudojets, | |
const JetDefinition & | jet_def, | |||
const GhostedAreaSpec & | area_spec, | |||
const bool & | writeout_combinations = false | |||
) | [inline] |
constructor based on JetDefinition and PassiveAreaSpec
Definition at line 76 of file ClusterSequencePassiveArea.hh.
00079 { 00080 00081 // transfer the initial jets (type L) into our own array 00082 _transfer_input_jets(pseudojets); 00083 00084 // run the clustering for passive areas 00085 _initialise_and_run_PA(jet_def, area_spec, writeout_combinations); 00086 00087 }
double fastjet::ClusterSequencePassiveArea::empty_area | ( | const RangeDefinition & | range | ) | const [virtual] |
return an empty area that's appropriate to the passive area determination carried out
Reimplemented from fastjet::ClusterSequenceActiveArea.
Definition at line 97 of file ClusterSequencePassiveArea.cc.
References fastjet::ClusterSequenceActiveArea::empty_area(), fastjet::ClusterSequenceAreaBase::empty_area(), fastjet::ClusterSequence::jet_def(), and fastjet::kt_algorithm.
00097 { 00098 if (jet_def().jet_algorithm() == kt_algorithm) { 00099 // run the naive algorithm 00100 return ClusterSequenceAreaBase::empty_area(range); 00101 } else { 00102 return ClusterSequence1GhostPassiveArea::empty_area(range); 00103 } 00104 }
void fastjet::ClusterSequencePassiveArea::_initialise_and_run_PA | ( | const JetDefinition & | jet_def, | |
const GhostedAreaSpec & | area_spec, | |||
const bool & | writeout_combinations = false | |||
) | [private] |
global routine for initialising and running a passive area that is correct in general, but that chooses an optimal approach for various special cases.
Definition at line 43 of file ClusterSequencePassiveArea.cc.
References fastjet::ClusterSequenceActiveArea::_average_area, fastjet::ClusterSequenceActiveArea::_average_area_4vector, fastjet::ClusterSequence::_history, fastjet::ClusterSequence1GhostPassiveArea::_initialise_and_run_1GPA(), fastjet::ClusterSequenceActiveArea::_initialise_and_run_AA(), fastjet::ClusterSequence::_jet_def, fastjet::ClusterSequence::_jets, fastjet::ClusterSequenceActiveArea::_resize_and_zero_AA(), fastjet::antikt_algorithm, fastjet::cambridge_algorithm, fastjet::cambridge_for_passive_algorithm, fastjet::ClusterSequence::Invalid, fastjet::JetDefinition::jet_algorithm(), fastjet::ClusterSequence::jet_def(), fastjet::kt_algorithm, fastjet::GhostedAreaSpec::mean_ghost_kt(), fastjet::JetDefinition::plugin(), fastjet::plugin_algorithm, fastjet::JetDefinition::set_jet_finder(), and fastjet::ClusterSequence::transfer_from_sequence().
00046 { 00047 00048 if (jet_def.jet_algorithm() == kt_algorithm) { 00049 // first run the passive area 00050 ClusterSequenceVoronoiArea csva(_jets,jet_def,VoronoiAreaSpec(1.0)); 00051 // now set up and transfer relevant information 00052 // first the clustering sequence 00053 transfer_from_sequence(csva); 00054 // then the areas 00055 _resize_and_zero_AA(); 00056 for (unsigned i = 0; i < _history.size(); i++) { 00057 int ijetp = _history[i].jetp_index; 00058 if (ijetp != Invalid) { 00059 _average_area[i] = csva.area(_jets[ijetp]); 00060 _average_area_4vector[i] = csva.area_4vector(_jets[ijetp]); 00061 } 00062 } 00063 00064 } else if (jet_def.jet_algorithm() == cambridge_algorithm) { 00065 // run a variant of the cambridge algorithm that has been hacked 00066 // to deal with passive areas 00067 JetDefinition tmp_jet_def = jet_def; 00068 tmp_jet_def.set_jet_finder(cambridge_for_passive_algorithm); 00069 tmp_jet_def.set_extra_param(sqrt(area_spec.mean_ghost_kt())); 00070 _initialise_and_run_AA(tmp_jet_def, area_spec, writeout_combinations); 00071 _jet_def = jet_def; 00072 00073 } else if (jet_def.jet_algorithm() == antikt_algorithm) { 00074 // for the antikt algorithm, passive and active are identical 00075 _initialise_and_run_AA(jet_def, area_spec, writeout_combinations); 00076 00077 } else if (jet_def.jet_algorithm() == plugin_algorithm && 00078 jet_def.plugin()->supports_ghosted_passive_areas()) { 00079 // for some plugin algorithms, one can "prime" the algorithm with information 00080 // about the ghost scale, and then an "AA" run will actually give a passive 00081 // area 00082 double ghost_sep_scale_store = jet_def.plugin()->ghost_separation_scale(); 00083 jet_def.plugin()->set_ghost_separation_scale(sqrt(area_spec.mean_ghost_kt())); 00084 _initialise_and_run_AA(jet_def, area_spec, writeout_combinations); 00085 00086 // restore the original ghost_sep_scale 00087 jet_def.plugin()->set_ghost_separation_scale(ghost_sep_scale_store); 00088 00089 } else { 00090 // for a generic algorithm, just run the 1GhostPassiveArea 00091 _initialise_and_run_1GPA(jet_def, area_spec, writeout_combinations); 00092 } 00093 }