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

This class describes a cluster object. More...

#include <Cluster.h>

Inheritance diagram for Herwig::Cluster:

Protected Member Functions

Clone Methods.
virtual PPtr clone () const
 Make a simple clone of this object.
 
virtual PPtr fullclone () const
 Make a clone of this object, possibly modifying the cloned object to make it sane.
 
- Protected Member Functions inherited from ThePEG::Pointer::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.
 
 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.
 
unsigned 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 particleB (int i) const
 Returns the ith original 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.
 
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).
 
bool hasBeenReshuffled () const
 Return true when it has a reshuffling partner.
 
bool isStatusFinal () const
 Return true if the cluster has hadron children.
 
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.
 

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.
 
unsigned 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.
 
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 Member Functions inherited from ThePEG::Particle
 Particle (tcEventPDPtr newData)
 
 Particle (const Particle &)
 
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)
 
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 ()
 
- Public Member Functions inherited from ThePEG::Base
void debug () const
 
virtual void debugme () const
 
- Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted
CounterType referenceCount () const
 
- 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 ()
 
- 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:

  • The cluster parent. In the case that the cluster it is a fission product of a heavy cluster the parent is a cluster. If the cluster is formed from the perturbative partons then the parents will be the colour connected partons that formed the cluster.
  • The children (usually two). In the case the cluster is a heavy cluster that undergoes fission the children are clusters. Occasionally the cluster has been "redefined" (re-interpreted). For example in the case that three quark or anti-quark components have been redefined as two components (quark+diquark, or antiquark+ antidiquark).
  • The (eventual) reshuffling partner, necessary for energy-momentum conservation when light clusters are decayed into single hadron. Not all clusters will have a reshuffling partner.

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

◆ calculateP()

void Herwig::Cluster::calculateP ( )
private

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\)

◆ 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.

◆ clusterId()

int Herwig::Cluster::clusterId ( ) const
inline

Returns the clusters id, not the same as the PDG id.

Definition at line 143 of file Cluster.h.

References _id.

◆ flagAsReshuffled()

void Herwig::Cluster::flagAsReshuffled ( )
inline

Set the pointer to the reshuffling partner cluster.

Definition at line 155 of file Cluster.h.

References _hasReshuffled.

◆ 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 212 of file Cluster.h.

References _hasReshuffled.

◆ isAvailable() [1/2]

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

Returns true if this cluster is to be handled by the hadronization.

Definition at line 166 of file Cluster.h.

References _isAvailable.

◆ isAvailable() [2/2]

void Herwig::Cluster::isAvailable ( bool  inputAvailable)
inline

Sets the value of availability.

Definition at line 172 of file Cluster.h.

References _isAvailable.

◆ 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 186 of file Cluster.h.

References ThePEG::Particle::children().

◆ 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 201 of file Cluster.h.

References ThePEG::Particle::children(), and ThePEG::ParticleID::Cluster.

◆ isStatusInitial()

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

Return true if the cluster does not have cluster parent.

Definition at line 178 of file Cluster.h.

References ThePEG::Particle::parents().

◆ numComponents()

unsigned int Herwig::Cluster::numComponents ( ) const
inline

Number of quark (diquark) constituents (normally two).


Definition at line 97 of file Cluster.h.

References _numComp.

◆ sumConstituentMasses()

Energy Herwig::Cluster::sumConstituentMasses ( ) const

Sum of the constituent masses of the components of the cluster.


Friends And Related Function Documentation

◆ ClassTraits< Cluster >

friend struct ClassTraits< Cluster >
friend

The ClassTraits<Cluster> class must be a friend to be able to use the private default constructor.

Definition at line 69 of file Cluster.h.

Member Data Documentation

◆ _component

ParticleVector Herwig::Cluster::_component
private

The constituent partons.

Definition at line 300 of file Cluster.h.

◆ _hasReshuffled

bool Herwig::Cluster::_hasReshuffled
private

Whether the cluster has been reshuffled.

Definition at line 299 of file Cluster.h.

Referenced by flagAsReshuffled(), and hasBeenReshuffled().

◆ _id

long Herwig::Cluster::_id
private

The id of this cluster.

Definition at line 305 of file Cluster.h.

Referenced by clusterId().

◆ _isAvailable

bool Herwig::Cluster::_isAvailable
private

Whether the cluster is hadronizing.

Definition at line 298 of file Cluster.h.

Referenced by isAvailable().

◆ _isBeamRemnant

vector<bool> Herwig::Cluster::_isBeamRemnant
private

Whether a parton is a beam remnant.

Definition at line 302 of file Cluster.h.

◆ _isPerturbative

vector<bool> Herwig::Cluster::_isPerturbative
private

Whether a parton is perturbative.

Definition at line 303 of file Cluster.h.

◆ _numComp

unsigned int Herwig::Cluster::_numComp
private

The number of constituents.

Definition at line 304 of file Cluster.h.

Referenced by numComponents().

◆ _original

tParticleVector Herwig::Cluster::_original
private

The original components.

Definition at line 301 of file Cluster.h.

◆ initCluster

ClassDescription<Cluster> Herwig::Cluster::initCluster
staticprivate

Describe an abstract base class with persistent data.

Definition at line 294 of file Cluster.h.


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