ClusterSequencePassiveArea Class Reference

Class that behaves essentially like ClusterSequence except that it also provides access to the area of a jet (which will be a random quantity. More...

#include <ClusterSequencePassiveArea.hh>

Inheritance diagram for ClusterSequencePassiveArea:
Inheritance graph
[legend]
Collaboration diagram for ClusterSequencePassiveArea:
Collaboration graph
[legend]

List of all members.

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)
 does the initialisation and running specific to the passive areas class

Detailed Description

Class that behaves essentially like ClusterSequence except that it also provides access to the area of a jet (which will be a random quantity.

.. Figure out what to do about seeds later...)

Definition at line 48 of file ClusterSequencePassiveArea.hh.


Constructor & Destructor Documentation

template<class L >
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 }


Member Function Documentation

void ClusterSequencePassiveArea::_initialise_and_run_PA ( const JetDefinition jet_def,
const GhostedAreaSpec area_spec,
const bool &  writeout_combinations = false 
) [private]

does the initialisation and running specific to the passive areas class

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 ClusterSequenceActiveArea::_average_area, ClusterSequenceActiveArea::_average_area_4vector, ClusterSequence::_history, ClusterSequence1GhostPassiveArea::_initialise_and_run_1GPA(), ClusterSequenceActiveArea::_initialise_and_run_AA(), ClusterSequence::_jet_def, ClusterSequence::_jets, ClusterSequenceActiveArea::_resize_and_zero_AA(), antikt_algorithm, ClusterSequenceVoronoiArea::area(), ClusterSequenceVoronoiArea::area_4vector(), cambridge_algorithm, cambridge_for_passive_algorithm, ClusterSequence::Invalid, JetDefinition::jet_algorithm(), kt_algorithm, GhostedAreaSpec::mean_ghost_kt(), JetDefinition::plugin(), plugin_algorithm, JetDefinition::set_extra_param(), JetDefinition::set_jet_finder(), and 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 }

double ClusterSequencePassiveArea::empty_area ( const RangeDefinition range  )  const [virtual]

return an empty area that's appropriate to the passive area determination carried out

Reimplemented from ClusterSequenceActiveArea.

Definition at line 97 of file ClusterSequencePassiveArea.cc.

References ClusterSequence::jet_def(), and 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 }


The documentation for this class was generated from the following files:

Generated on 26 Feb 2010 for fastjet by  doxygen 1.6.1