herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
Herwig::Cluster Class Reference

This class describes a cluster object. More...

#include <Cluster.h>

Inheritance diagram for Herwig::Cluster:

Public Member Functions

int numComponents () const
 Number of quark (diquark) constituents (normally two).
 
Energy sumConstituentMasses () const
 Sum of the constituent masses of the components of the cluster.
 
tPPtr particle (int i) const
 Returns the ith constituent.
 
tPPtr colParticle (bool anti=false) const
 Returns the original constituent carrying colour.
 
tPPtr antiColParticle () const
 Returns the original constituent carrying anticolour.
 
bool isPerturbative (int) const
 Returns whether the ith constituent is from a perturbative process.
 
bool isBeamRemnant (int) const
 Indicates whether the ith constituent is a beam remnant.
 
void setBeamRemnant (int, bool)
 Sets whether the ith constituent is a beam remnant.
 
int clusterId () const
 Returns the clusters id, not the same as the PDG id.
 
bool isBeamCluster () const
 Returns true when a constituent is a beam remnant.
 
void flagAsReshuffled ()
 Set the pointer to the reshuffling partner cluster.
 
void isBeamCluster (tPPtr part)
 Sets the component (if any) that points to "part" as a beam remnant.
 
bool isAvailable () const
 Returns true if this cluster is to be handled by the hadronization.
 
void isAvailable (bool inputAvailable)
 Sets the value of availability.
 
bool isStatusInitial () const
 Return true if the cluster does not have cluster parent.
 
bool isReadyToDecay () const
 Return true if the cluster does not have cluster children and it is not already decayed (i.e. More...
 
bool isRedefined () const
 Return true if the cluster has one and only one cluster children and no hadron children: that means either that its three quarks or anti-quarks components have been redefined as two components (quark+diquark, or antiquark+antidiquark), or that the cluster has been used as a partner for the momentum reshuffling necessary to conserve energy-momentum when a light cluster is decayed into a single hadron (notice that this latter light cluster has isRedefined() false, because it has an hadron child). More...
 
bool hasBeenReshuffled () const
 Return true when it has a reshuffling partner. More...
 
bool isStatusFinal () const
 Return true if the cluster has hadron children.
 
- Public Member Functions inherited from ThePEG::Particle
 Particle (tcEventPDPtr newData)
 
 Particle (const Particle &)
 
ostream & print (ostream &os, tcStepPtr step=tcStepPtr()) const
 
virtual void debugme () const
 
bool decayed () const
 
const ParticleVectorchildren () const
 
void addChild (tPPtr c)
 
void abandonChild (tPPtr child)
 
const tParticleVectorparents () const
 
tParticleSet siblings () const
 
void undecay ()
 
void decayMode (tDMPtr dm)
 
tDMPtr decayMode () const
 
tPPtr next () const
 
tPPtr previous () const
 
tcPPtr original () const
 
tPPtr original ()
 
tcPPtr final () const
 
tPPtr final ()
 
tStepPtr birthStep () const
 
int number () const
 
int status () const
 
void status (int n)
 
const ParticleDataClassdata () const
 
tcEventPDPtr dataPtr () const
 
const string & PDGName () const
 
long id () const
 
const Lorentz5Momentum & momentum () const
 
void set3Momentum (const Momentum3 &p)
 
void setMomentum (const LorentzMomentum &p)
 
void set5Momentum (const Lorentz5Momentum &p)
 
Energy mass () const
 
Energy nominalMass () const
 
Energy2 scale () const
 
void scale (Energy2 q2)
 
Energy2 vetoScale () const
 
void vetoScale (Energy2 q2)
 
Energy2 mt2 () const
 
Energy mt () const
 
Energy2 perpmass2 () const
 
Energy perpmass () const
 
double rapidity () const
 
double eta () const
 
Energy Pplus () const
 
Energy Pminus () const
 
const LorentzPoint & vertex () const
 
LorentzPoint labVertex () const
 
LorentzPoint decayVertex () const
 
LorentzPoint labDecayVertex () const
 
const Lorentz5Distance & lifeLength () const
 
void setVertex (const LorentzPoint &p)
 
void setLabVertex (const LorentzPoint &)
 
void setLifeLength (const Distance &d)
 
void setLifeLength (const LorentzDistance &d)
 
void setLifeLength (const Lorentz5Distance &d)
 
Time lifeTime () const
 
void transform (const LorentzRotation &r)
 
void boost (double bx, double by, double bz)
 
void boost (const Boost &b)
 
void rotateX (double a)
 
void rotateY (double a)
 
void rotateZ (double a)
 
void rotate (double a, const Axis &axis)
 
void mirror ()
 
void deepTransform (const LorentzRotation &r)
 
void deepBoost (double bx, double by, double bz)
 
void deepBoost (const Boost &b)
 
void deepRotateX (double a)
 
void deepRotateY (double a)
 
void deepRotateZ (double a)
 
void deepRotate (double a, const Axis &axis)
 
double massError () const
 
double energyError () const
 
double rhoError () const
 
void rescaleEnergy ()
 
void rescaleRho ()
 
void rescaleMass ()
 
bool hasColourInfo () const
 
tColinePtr antiColourLine () const
 
tColinePtr colourLine (bool anti=false) const
 
bool hasColourLine (tcColinePtr line, bool anti=false) const
 
bool hasAntiColourLine (tcColinePtr line) const
 
bool coloured () const
 
bool hasColour (bool anti=false) const
 
bool hasAntiColour () const
 
tcCBPtr colourInfo () const
 
tCBPtr colourInfo ()
 
void colourInfo (tCBPtr c)
 
std::iterator_traits< Iterator >::value_type colourNeighbour (Iterator first, Iterator last, bool anti=false) const
 
std::iterator_traits< Iterator >::value_type antiColourNeighbour (Iterator first, Iterator last) const
 
void colourNeighbour (tPPtr, bool anti=false)
 
void antiColourNeighbour (tPPtr p)
 
void antiColourConnect (tPPtr neighbour)
 
void colourConnect (tPPtr neighbour, bool anti=false)
 
tPPtr incomingColour (bool anti=false) const
 
tPPtr incomingAntiColour () const
 
void incomingColour (tPPtr p, bool anti=false)
 
void incomingAntiColour (tPPtr p)
 
tPPtr outgoingColour (bool anti=false) const
 
tPPtr outgoingAntiColour () const
 
void outgoingColour (tPPtr, bool anti=false)
 
void outgoingAntiColour (tPPtr p)
 
void colourFlow (tPPtr child, bool anti=false)
 
void antiColourFlow (tPPtr child)
 
void resetColour ()
 
tcSpinPtr spinInfo () const
 
tSpinPtr spinInfo ()
 
void spinInfo (tSpinPtr s)
 
const EIVectorgetInfo () const
 
EIVectorgetInfo ()
 
bool hasRep () const
 
void initFull ()
 
void persistentOutput (PersistentOStream &) const
 
void persistentInput (PersistentIStream &, int)
 
bool decayed () const
 
const ParticleVectorchildren () const
 
void addChild (tPPtr c)
 
void abandonChild (tPPtr child)
 
const tParticleVectorparents () const
 
tParticleSet siblings () const
 
void undecay ()
 
void decayMode (tDMPtr dm)
 
tDMPtr decayMode () const
 
tPPtr next () const
 
tPPtr previous () const
 
tcPPtr original () const
 
tPPtr original ()
 
tcPPtr final () const
 
tPPtr final ()
 
tStepPtr birthStep () const
 
int number () const
 
int status () const
 
void status (int n)
 
const ParticleDataClassdata () const
 
tcEventPDPtr dataPtr () const
 
const string & PDGName () const
 
long id () const
 
const Lorentz5Momentum & momentum () const
 
void set3Momentum (const Momentum3 &p)
 
void setMomentum (const LorentzMomentum &p)
 
void set5Momentum (const Lorentz5Momentum &p)
 
Energy mass () const
 
Energy nominalMass () const
 
Energy2 scale () const
 
void scale (Energy2 q2)
 
Energy2 vetoScale () const
 
void vetoScale (Energy2 q2)
 
Energy2 mt2 () const
 
Energy mt () const
 
Energy2 perpmass2 () const
 
Energy perpmass () const
 
double rapidity () const
 
double eta () const
 
Energy Pplus () const
 
Energy Pminus () const
 
const LorentzPoint & vertex () const
 
LorentzPoint labVertex () const
 
LorentzPoint decayVertex () const
 
LorentzPoint labDecayVertex () const
 
const Lorentz5Distance & lifeLength () const
 
void setVertex (const LorentzPoint &p)
 
void setLabVertex (const LorentzPoint &)
 
void setLifeLength (const Distance &d)
 
void setLifeLength (const LorentzDistance &d)
 
void setLifeLength (const Lorentz5Distance &d)
 
Time lifeTime () const
 
void transform (const LorentzRotation &r)
 
void boost (double bx, double by, double bz)
 
void boost (const Boost &b)
 
void rotateX (double a)
 
void rotateY (double a)
 
void rotateZ (double a)
 
void rotate (double a, const Axis &axis)
 
void mirror ()
 
void deepTransform (const LorentzRotation &r)
 
void deepBoost (double bx, double by, double bz)
 
void deepBoost (const Boost &b)
 
void deepRotateX (double a)
 
void deepRotateY (double a)
 
void deepRotateZ (double a)
 
void deepRotate (double a, const Axis &axis)
 
double massError () const
 
double energyError () const
 
double rhoError () const
 
void rescaleEnergy ()
 
void rescaleRho ()
 
void rescaleMass ()
 
bool hasColourInfo () const
 
tColinePtr antiColourLine () const
 
tColinePtr colourLine (bool anti=false) const
 
bool hasColourLine (tcColinePtr line, bool anti=false) const
 
bool hasAntiColourLine (tcColinePtr line) const
 
bool coloured () const
 
bool hasColour (bool anti=false) const
 
bool hasAntiColour () const
 
tcCBPtr colourInfo () const
 
tCBPtr colourInfo ()
 
void colourInfo (tCBPtr c)
 
std::iterator_traits< Iterator >::value_type colourNeighbour (Iterator first, Iterator last, bool anti=false) const
 
std::iterator_traits< Iterator >::value_type antiColourNeighbour (Iterator first, Iterator last) const
 
void colourNeighbour (tPPtr, bool anti=false)
 
void antiColourNeighbour (tPPtr p)
 
void antiColourConnect (tPPtr neighbour)
 
void colourConnect (tPPtr neighbour, bool anti=false)
 
tPPtr incomingColour (bool anti=false) const
 
tPPtr incomingAntiColour () const
 
void incomingColour (tPPtr p, bool anti=false)
 
void incomingAntiColour (tPPtr p)
 
tPPtr outgoingColour (bool anti=false) const
 
tPPtr outgoingAntiColour () const
 
void outgoingColour (tPPtr, bool anti=false)
 
void outgoingAntiColour (tPPtr p)
 
void colourFlow (tPPtr child, bool anti=false)
 
void antiColourFlow (tPPtr child)
 
void resetColour ()
 
tcSpinPtr spinInfo () const
 
tSpinPtr spinInfo ()
 
void spinInfo (tSpinPtr s)
 
const EIVectorgetInfo () const
 
EIVectorgetInfo ()
 
bool hasRep () const
 
void initFull ()
 
void persistentOutput (PersistentOStream &) const
 
void persistentInput (PersistentIStream &, int)
 
- Public Member Functions inherited from ThePEG::Base
void debug () const
 
- Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted
CounterType referenceCount () const
 

Static Public Member Functions

static LorentzPoint calculateX (tPPtr q1, tPPtr q2)
 Calculate the 4-position vector of the cluster Method made static so can be used in other places Displacement of the ith constituent given by momentum $p_i$ vertex $x_i$ and mass $m_i$ is

\[ D_i = -C \log(r) \frac{p_i}{\sqrt{(p_i^2 - m_i^2)^2 + v^4}} \]

where $r$ is a random number [0,1], $v$ is the minimum virtuality and $C$ is a conversion factor from GeV to millimeters. More...

  - Static Public Member Functions inherited from ThePEG::Particle static void PrintParticles (ostream &os, Iterator first, Iterator last, tcStepPtr step=tcStepPtr())   static void PrintParticles (ostream &os, const Cont &c, tcStepPtr step=tcStepPtr())   static void Init ()   - Static Public Member Functions inherited from ThePEG::Base static void Init ()  

Protected Member Functions

Clone Methods.
virtual PPtr clone () const
 Make a simple clone of this object. More...
 
virtual PPtr fullclone () const
 Make a clone of this object, possibly modifying the cloned object to make it sane. More...
 
- Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 

Standard constructors and destructors.

struct ClassTraits< Cluster >
 The ClassTraits<Cluster> class must be a friend to be able to use the private default constructor.
 
 Cluster ()
 Default constructor. More...
 
 Cluster (tcEventPDPtr)
 Constructor with a particleData pointer.
 
 Cluster (tPPtr part1, tPPtr part2, tPPtr part3=tPPtr())
 This creates a cluster from 2 (or 3) partons.
 
 Cluster (const Particle &)
 Also a constructor where a particle is given not a cluster.
 

Input and output functions.

static ClassDescription< ClusterinitCluster
 Describe an abstract base class with persistent data.
 
bool _isAvailable
 Whether the cluster is hadronizing.
 
bool _hasReshuffled
 Whether the cluster has been reshuffled.
 
ParticleVector _component
 The constituent partons.
 
tParticleVector _original
 The original components.
 
vector< bool > _isBeamRemnant
 Whether a parton is a beam remnant.
 
vector< bool > _isPerturbative
 Whether a parton is perturbative.
 
int _numComp
 The number of constituents.
 
long _id
 The id of this cluster.
 
void persistentOutput (PersistentOStream &) const
 Standard function for writing to a persistent stream.
 
void persistentInput (PersistentIStream &, int)
 Standard function for reading from a persistent stream.
 
Clusteroperator= (const Cluster &)=delete
 Private and non-existent assignment operator.
 
void calculateP ()
 Calculate the 5-momentum vector of the cluster The 5-momentum of the cluster is given by

\[ P = \sum_i p_i \]

and the mass of the cluster is $m^2 = P^2$.

  bool initPerturbative (tPPtr p)  Determines whether constituent p is perturbative or not.
 

Additional Inherited Members

- Public Types inherited from ThePEG::Pointer::ReferenceCounted
typedef unsigned int CounterType
 
- Public Attributes inherited from ThePEG::Pointer::ReferenceCounted
const unsigned long uniqueId
 
- Static Public Attributes inherited from ThePEG::Particle
static string outputFormat
 

Detailed Description

This class describes a cluster object.

Author
Philip Stephens
Alberto Ribon

This class represents a cluster, which is a colour singlet made usually of two components (quark-antiquark, quark-diquark, antiquark-antidiquark) or rarely by three components (quark-quark-quark, antiquark-antiquark- antiquark). A reference to the container with the pointers to its Components is provided.

The class provides access to the pointers which point to:

Notice that in order to determine the cluster position from the positions of the components, the Cluster class needs some parameters. Because the Cluster class is neither interfaced nor persistent, a static pointer to the ClusterHadronizationHandler class instance, where the parameters are, is used. This static pointer is set via the method setPointerClusterHadHandler(), during the run initialization, doinitrun() of ClusterHadronizationHandler.

See also
ClusterHadronizationHandler

Definition at line 60 of file Cluster.h.

Constructor & Destructor Documentation

◆ Cluster()

Herwig::Cluster::Cluster ( )
protected

Default constructor.

Only used in PersistentIStream

Member Function Documentation

◆ calculateX()

static LorentzPoint Herwig::Cluster::calculateX ( tPPtr  q1,
tPPtr  q2 
)
static

Calculate the 4-position vector of the cluster Method made static so can be used in other places Displacement of the ith constituent given by momentum $p_i$ vertex $x_i$ and mass $m_i$ is

\[ D_i = -C \log(r) \frac{p_i}{\sqrt{(p_i^2 - m_i^2)^2 + v^4}} \]

where $r$ is a random number [0,1], $v$ is the minimum virtuality and $C$ is a conversion factor from GeV to millimeters.

We can then find the difference in $s$ factors as

\[ (s_1-s_2) = \frac{(\vec{p}_1 + \vec{p}_2) \cdot (\vec{x}_2 - \vec{x}_1)}{(\vec{p}_1 + \vec{p}_2) \cdot \vec{D}_1}. \]

if $s_2>s_1$ then $s_1 = 1.0$ otherwise $s_2 = 1.0$. These are then used to determine the value of the clusters vertex as

\[ X = \frac{1}{2} ( x_1 +x_2 + s_1 D_1 + s_2 D_2). \]

◆ clone()

virtual PPtr Herwig::Cluster::clone ( ) const
protectedvirtual

Make a simple clone of this object.

Returns
a pointer to the new object.

Reimplemented from ThePEG::Particle.

◆ fullclone()

virtual PPtr Herwig::Cluster::fullclone ( ) const
protectedvirtual

Make a clone of this object, possibly modifying the cloned object to make it sane.

Returns
a pointer to the new object.

◆ hasBeenReshuffled()

bool Herwig::Cluster::hasBeenReshuffled ( ) const
inline

Return true when it has a reshuffling partner.

Notice that a cluster can have hasBeenReshuffled() true but isRedefined() false: this is the case of a light cluster that decays into a single hadron.

Definition at line 207 of file Cluster.h.

◆ isReadyToDecay()

bool Herwig::Cluster::isReadyToDecay ( ) const
inline

Return true if the cluster does not have cluster children and it is not already decayed (i.e.

it does not have hadron children) (to be used only after the fission of heavy clusters).

Definition at line 181 of file Cluster.h.

◆ isRedefined()

bool Herwig::Cluster::isRedefined ( ) const
inline

Return true if the cluster has one and only one cluster children and no hadron children: that means either that its three quarks or anti-quarks components have been redefined as two components (quark+diquark, or antiquark+antidiquark), or that the cluster has been used as a partner for the momentum reshuffling necessary to conserve energy-momentum when a light cluster is decayed into a single hadron (notice that this latter light cluster has isRedefined() false, because it has an hadron child).

In both cases, the unique cluster children is the new redefined cluster. The two cases can be distinguish by the next method.

Definition at line 196 of file Cluster.h.

References ThePEG::ParticleID::Cluster.


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