31 #include "fastjet/ClusterSequenceStructure.hh"    32 #include "fastjet/Error.hh"    33 #include "fastjet/PseudoJet.hh"    34 #include "fastjet/ClusterSequence.hh"    36 #include "fastjet/ClusterSequenceAreaBase.hh"    40 FASTJET_BEGIN_NAMESPACE      
    44 ClusterSequenceStructure::~ClusterSequenceStructure(){
    45   if (_associated_cs != NULL 
    46       && _associated_cs->will_delete_self_when_unused()) {
    55     _associated_cs->signal_imminent_self_deletion();
    56     delete _associated_cs;
    67 bool ClusterSequenceStructure::has_valid_cluster_sequence()
 const{
    68   return (_associated_cs != NULL);
    73 const ClusterSequence* ClusterSequenceStructure::associated_cluster_sequence()
 const{
    74   return _associated_cs;
    85     throw Error(
"you requested information about the internal structure of a jet, but its associated ClusterSequence has gone out of scope.");
    86   return _associated_cs;
   101   return validated_cs()->has_partner(reference, partner);
   111   return validated_cs()->has_child(reference, child);
   121   return validated_cs()->has_parents(reference, parent1, parent2);
   129 bool ClusterSequenceStructure::object_in_jet(
const PseudoJet &reference, 
const PseudoJet &jet)
 const{
   131     throw Error(
"you requested information about the internal structure of a jet, but it is not associated with a ClusterSequence or its associated ClusterSequence has gone out of scope."); 
   135   return validated_cs()->object_in_jet(reference, jet);
   143 bool ClusterSequenceStructure::has_constituents()
 const{
   144   if (!has_associated_cluster_sequence())
   145     throw Error(
"you requested information about the internal structure of a jet, but it is not associated with a ClusterSequence or its associated ClusterSequence has gone out of scope."); 
   153 vector<PseudoJet> ClusterSequenceStructure::constituents(
const PseudoJet &reference)
 const{
   154   return validated_cs()->constituents(reference);
   161 bool ClusterSequenceStructure::has_exclusive_subjets()
 const{
   162   if (!has_associated_cluster_sequence())
   163     throw Error(
"you requested information about the internal structure of a jet, but it is not associated with a ClusterSequence or its associated ClusterSequence has gone out of scope."); 
   179 std::vector<PseudoJet> ClusterSequenceStructure::exclusive_subjets (
const PseudoJet &reference, 
const double & dcut)
 const {
   180   return validated_cs()->exclusive_subjets(reference, dcut);
   189 int ClusterSequenceStructure::n_exclusive_subjets(
const PseudoJet &reference, 
const double & dcut)
 const {
   190   return validated_cs()->n_exclusive_subjets(reference, dcut);
   201 std::vector<PseudoJet> ClusterSequenceStructure::exclusive_subjets_up_to (
const PseudoJet &reference, 
int nsub)
 const {
   202   return validated_cs()->exclusive_subjets_up_to(reference, nsub);
   210 double ClusterSequenceStructure::exclusive_subdmerge(
const PseudoJet &reference, 
int nsub)
 const {
   211   return validated_cs()->exclusive_subdmerge(reference, nsub);
   220 double ClusterSequenceStructure::exclusive_subdmerge_max(
const PseudoJet &reference, 
int nsub)
 const {
   221   return validated_cs()->exclusive_subdmerge_max(reference, nsub);
   234 bool ClusterSequenceStructure::has_pieces(
const PseudoJet &reference)
 const{
   236   return has_parents(reference, dummy1, dummy2);
   244 vector<PseudoJet> ClusterSequenceStructure::pieces(
const PseudoJet &reference)
 const{
   246   vector<PseudoJet> res;
   247   if (has_parents(reference, j1, j2)){
   266   if (csab == NULL) 
throw Error(
"you requested jet-area related information, but the PseudoJet does not have associated area information.");
   271 bool ClusterSequenceStructure::has_area()
 const{
   272   if (! has_associated_cluster_sequence()) 
return false;
   273   return (dynamic_cast<const ClusterSequenceAreaBase*>(_associated_cs) != NULL);
   278 double ClusterSequenceStructure::area(
const PseudoJet &reference)
 const{
   279   return validated_csab()->
area(reference);
   285 double ClusterSequenceStructure::area_error(
const PseudoJet &reference)
 const{
   286   return validated_csab()->area_error(reference);
   297 bool ClusterSequenceStructure::is_pure_ghost(
const PseudoJet &reference)
 const{
   305 FASTJET_END_NAMESPACE
 virtual PseudoJet area_4vector() const
return the jet 4-vector area. 
 
bool has_associated_cluster_sequence() const
returns true if this PseudoJet has an associated ClusterSequence. 
 
virtual double area(const PseudoJet &) const
return the area associated with the given jet; this base class returns 0. 
 
virtual bool is_pure_ghost() const
true if this jet is made exclusively of ghosts. 
 
base class that sets interface for extensions of ClusterSequence that provide information about the a...
 
base class corresponding to errors that can be thrown by FastJet 
 
const ClusterSequence * associated_cluster_sequence() const
get a (const) pointer to the parent ClusterSequence (NULL if inexistent) 
 
Class to contain pseudojets, including minimal information of use to jet-clustering routines...