31#include "fastjet/config.h"
32#include "fastjet/ClusterSequenceStructure.hh"
33#include "fastjet/Error.hh"
34#include "fastjet/PseudoJet.hh"
35#include "fastjet/ClusterSequence.hh"
37#include "fastjet/ClusterSequenceAreaBase.hh"
41FASTJET_BEGIN_NAMESPACE
49 if (_associated_cs != NULL
50 && _associated_cs->will_delete_self_when_unused()) {
59 _associated_cs->signal_imminent_self_deletion();
60 delete _associated_cs;
73 return (_associated_cs != NULL);
79 return _associated_cs;
90 throw Error(
"you requested information about the internal structure of a jet, but its associated ClusterSequence has gone out of scope.");
91 return _associated_cs;
126 return validated_cs()->has_parents(reference, parent1, parent2);
136 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.");
150 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.");
168 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.");
185 return validated_cs()->exclusive_subjets(reference, dcut);
195 return validated_cs()->n_exclusive_subjets(reference, dcut);
207 return validated_cs()->exclusive_subjets_up_to(reference, nsub);
216 return validated_cs()->exclusive_subdmerge(reference, nsub);
226 return validated_cs()->exclusive_subdmerge_max(reference, nsub);
251 vector<PseudoJet> res;
271 if (csab == NULL)
throw Error(
"you requested jet-area related information, but the PseudoJet does not have associated area information.");
base class that sets interface for extensions of ClusterSequence that provide information about the a...
virtual bool is_pure_ghost(const PseudoJet &reference) const override
true if this jet is made exclusively of ghosts.
virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const override
return the dij that was present in the merging nsub+1 -> nsub subjets inside this jet.
virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const override
return the maximum dij that occurred in the whole event at the stage that the nsub+1 -> nsub merge of...
virtual std::vector< PseudoJet > pieces(const PseudoJet &reference) const override
by convention, a jet associated with a ClusterSequence will have its parents as pieces
virtual PseudoJet area_4vector(const PseudoJet &reference) const override
return the jet 4-vector area.
virtual int n_exclusive_subjets(const PseudoJet &reference, const double &dcut) const override
return the size of exclusive_subjets(...); still n ln n with same coefficient, but marginally more ef...
virtual bool has_exclusive_subjets() const override
return true if the structure supports exclusive_subjets.
virtual bool has_valid_cluster_sequence() const override
returns true if there is a valid associated ClusterSequence
virtual double area_error(const PseudoJet &reference) const override
return the error (uncertainty) associated with the determination of the area of this jet.
virtual double area(const PseudoJet &reference) const override
return the jet (scalar) area.
virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const override
check if it has been recombined with another PseudoJet in which case, return its partner through the ...
virtual ~ClusterSequenceStructure()
default (virtual) dtor
virtual const ClusterSequenceAreaBase * validated_csab() const override
if the jet has valid area information then return a pointer to the associated ClusterSequenceAreaBase...
virtual const ClusterSequence * associated_cluster_sequence() const override
get a (const) pointer to the parent ClusterSequence (NULL if inexistent)
virtual std::vector< PseudoJet > exclusive_subjets_up_to(const PseudoJet &reference, int nsub) const override
return the list of subjets obtained by unclustering the supplied jet down to nsub subjets (or all con...
virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const override
check if it is the product of a recombination, in which case return the 2 parents through the 'parent...
virtual std::vector< PseudoJet > constituents(const PseudoJet &reference) const override
retrieve the constituents.
virtual std::vector< PseudoJet > exclusive_subjets(const PseudoJet &reference, const double &dcut) const override
return a vector of all subjets of the current jet (in the sense of the exclusive algorithm) that woul...
virtual const ClusterSequence * validated_cs() const override
if the jet has a valid associated cluster sequence then return a pointer to it; otherwise throw an er...
virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const override
check if the reference PseudoJet is contained in the second one passed as argument.
virtual bool has_area() const override
check if it has a defined area
virtual bool has_associated_cluster_sequence() const override
returns true if there is an associated ClusterSequence
virtual bool has_pieces(const PseudoJet &reference) const override
by convention, a jet associated with a ClusterSequence will have its parents as pieces
virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const override
check if it has been recombined with another PseudoJet in which case, return its child through the ar...
virtual bool has_constituents() const override
return true if the structure supports constituents.
base class corresponding to errors that can be thrown by FastJet
Class to contain pseudojets, including minimal information of use to jet-clustering routines.
const ClusterSequence * associated_cluster_sequence() const
get a (const) pointer to the parent ClusterSequence (NULL if inexistent)
bool has_associated_cluster_sequence() const
returns true if this PseudoJet has an associated ClusterSequence.