Version: SMASH-1.5
smash::ParticleData Class Reference

#include <particledata.h>

ParticleData contains the dynamic information of a certain particle.

Each particle has its momentum, position and other relevant physical data entry.

Definition at line 52 of file particledata.h.

Collaboration diagram for smash::ParticleData:
[legend]

Public Member Functions

 ParticleData (const ParticleType &particle_type, int unique_id=-1)
 Create a new particle with the given particle_type and optionally a specific unique_id. More...
 
int id () const
 Get the id of the particle. More...
 
void set_id (int i)
 Set id of the particle. More...
 
PdgCode pdgcode () const
 Get the pdgcode of the particle. More...
 
bool is_hadron () const
 
bool is_baryon () const
 
bool is_rho () const
 
double pole_mass () const
 Get the particle's pole mass ("on-shell"). More...
 
double effective_mass () const
 Get the particle's effective mass. More...
 
const ParticleTypetype () const
 Get the type of the particle. More...
 
uint32_t id_process () const
 Get the id of the last action. More...
 
HistoryData get_history () const
 Get history information. More...
 
void set_history (int ncoll, uint32_t pid, ProcessType pt, double time_of_or, const ParticleList &plist)
 Store history information. More...
 
const FourVectormomentum () const
 Get the particle's 4-momentum. More...
 
void set_4momentum (const FourVector &momentum_vector)
 Set the particle's 4-momentum directly. More...
 
void set_4momentum (double mass, const ThreeVector &mom)
 Set the momentum of the particle given its mass and momentum three-vector. More...
 
void set_4momentum (double mass, double px, double py, double pz)
 Set the momentum of the particle. More...
 
void set_3momentum (const ThreeVector &mom)
 Set the momentum of the particle without modifying the energy. More...
 
const FourVectorposition () const
 Get the particle's position in Minkowski space. More...
 
void set_4position (const FourVector &pos)
 Set the particle's 4-position directly. More...
 
void set_3position (const ThreeVector &pos)
 Set particle's 3-position. More...
 
ParticleData translated (const ThreeVector &delta) const
 Translate the particle position. More...
 
double formation_time () const
 Get the absolute formation time of the particle. More...
 
double begin_formation_time () const
 Get the absolute time, where the cross section scaling factor slowly starts increasing from the given scaling factor to 1. More...
 
void set_formation_time (const double &form_time)
 Set the absolute formation time. More...
 
void set_slow_formation_times (double begin_form_time, double form_time)
 Set the time, when the cross section scaling factor begins, and finishes to increase from the given cross section scaling factor to 1. More...
 
const double & initial_xsec_scaling_factor () const
 Get the initially assigned cross section scaling factor. More...
 
void set_cross_section_scaling_factor (const double &xsec_scal)
 Set the particle's initial cross_section_scaling_factor. More...
 
ThreeVector velocity () const
 Get the velocity 3-vector. More...
 
double inverse_gamma () const
 Get the inverse of the gamma factor from the current velocity of the particle. More...
 
void boost (const ThreeVector &v)
 Apply a full Lorentz boost of momentum and position. More...
 
void boost_momentum (const ThreeVector &v)
 Apply a Lorentz-boost to only the momentum. More...
 
bool operator== (const ParticleData &a) const
 Check whether two particles have the same id. More...
 
bool operator< (const ParticleData &a) const
 Check if this particle has a smaller id than another particle. More...
 
bool operator== (int id_a) const
 Check if the particle has a given id. More...
 
bool operator< (int id_a) const
 Check whether the particle's id is smaller than the given id. More...
 
 ParticleData (const ParticleType &ptype, int uid, int index)
 Construct a particle with the given type, id and index in Particles. More...
 
double xsec_scaling_factor (double delta_time=0.) const
 Return the cross section scaling factor at a given time. More...
 

Static Public Attributes

static double formation_power_ = 0.0
 Power with which the cross section scaling factor grows in time. More...
 

Private Member Functions

 ParticleData ()=default
 Default constructor. More...
 
void copy_to (ParticleData &dst) const
 Copies some information of the particle to the given particle dst. More...
 

Private Attributes

int id_ = -1
 Each particle has a unique identifier. More...
 
unsigned index_ = std::numeric_limits<unsigned>::max()
 Internal index in the Particles list. More...
 
ParticleTypePtr type_
 A reference to the ParticleType object for this particle (this contains all the static information). More...
 
bool hole_ = false
 If true, the object is an entry in Particles::data_ and does not hold valid particle data. More...
 
FourVector momentum_
 momenta of the particle: x0, x1, x2, x3 as E, px, py, pz More...
 
FourVector position_
 position in space: x0, x1, x2, x3 as t, x, y, z More...
 
double formation_time_ = 0.0
 Formation time at which the particle is fully formed given as an absolute value in the computational frame. More...
 
double begin_formation_time_ = 0.0
 time when the cross section scaling factor starts to increase to 1 More...
 
double initial_xsec_scaling_factor_ = 1.0
 Initial cross section scaling factor. More...
 
HistoryData history_
 history information More...
 

Friends

class Particles
 

Constructor & Destructor Documentation

◆ ParticleData() [1/3]

smash::ParticleData::ParticleData ( const ParticleType particle_type,
int  unique_id = -1 
)
inlineexplicit

Create a new particle with the given particle_type and optionally a specific unique_id.

All other values are initialized to unphysical values.

Parameters
[in]particle_typeType of particle to be created
[in]unique_idid of particle to be created

Definition at line 63 of file particledata.h.

64  : id_(unique_id), type_(&particle_type) {}
int id_
Each particle has a unique identifier.
Definition: particledata.h:395
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411

◆ ParticleData() [2/3]

smash::ParticleData::ParticleData ( const ParticleType ptype,
int  uid,
int  index 
)
inline

Construct a particle with the given type, id and index in Particles.

This constructor may only be called (directly or indirectly) from Particles. This constructor should be private, but can't be in order to support vector::emplace_back.

Parameters
[in]ptypeType of the particle to be constructed
[in]uidid of the particle to be constructed
[in]indexindex of the particle to be constructed

Definition at line 352 of file particledata.h.

353  : id_(uid), index_(index), type_(&ptype) {}
int id_
Each particle has a unique identifier.
Definition: particledata.h:395
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
unsigned index_
Internal index in the Particles list.
Definition: particledata.h:405

◆ ParticleData() [3/3]

smash::ParticleData::ParticleData ( )
privatedefault

Default constructor.

Member Function Documentation

◆ id()

int smash::ParticleData::id ( ) const
inline

Get the id of the particle.

Returns
particle id

Definition at line 70 of file particledata.h.

70 { return id_; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395
Here is the caller graph for this function:

◆ set_id()

void smash::ParticleData::set_id ( int  i)
inline

Set id of the particle.

Parameters
[in]iid to be assigned to the particle

Definition at line 75 of file particledata.h.

75 { id_ = i; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395

◆ pdgcode()

PdgCode smash::ParticleData::pdgcode ( ) const
inline

Get the pdgcode of the particle.

Returns
pdgcode of the particle

Definition at line 81 of file particledata.h.

81 { return type_->pdgcode(); }
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
PdgCode pdgcode() const
Definition: particletype.h:146
Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_hadron()

bool smash::ParticleData::is_hadron ( ) const
inline

Returns
true if this is a baryon, antibaryon or meson.

Definition at line 85 of file particledata.h.

85 { return type_->is_hadron(); }
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
bool is_hadron() const
Definition: particletype.h:184
Here is the call graph for this function:

◆ is_baryon()

bool smash::ParticleData::is_baryon ( ) const
inline

Returns
whether this PDG code identifies a baryon.

Definition at line 88 of file particledata.h.

88 { return pdgcode().is_baryon(); }
bool is_baryon() const
Definition: pdgcode.h:318
PdgCode pdgcode() const
Get the pdgcode of the particle.
Definition: particledata.h:81
Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_rho()

bool smash::ParticleData::is_rho ( ) const
inline

Returns
whether this is a rho meson (rho+/rho0/rho-)

Definition at line 91 of file particledata.h.

91 { return type_->is_rho(); }
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
bool is_rho() const
Definition: particletype.h:208
Here is the call graph for this function:

◆ pole_mass()

double smash::ParticleData::pole_mass ( ) const
inline

Get the particle's pole mass ("on-shell").

Returns
pole mass of the particle [GeV]

Definition at line 96 of file particledata.h.

96 { return type_->mass(); }
double mass() const
Definition: particletype.h:134
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
Here is the call graph for this function:
Here is the caller graph for this function:

◆ effective_mass()

double smash::ParticleData::effective_mass ( ) const

Get the particle's effective mass.

Determined from the 4-momentum \(m=\sqrt{p_\mu p^\mu}\). Possibly "off-shell".

Returns
Effective mass [GeV]

Definition at line 21 of file particledata.cc.

21  {
22  const double m_pole = pole_mass();
23  if (m_pole < really_small) {
24  // prevent numerical problems with massless or very light particles
25  return m_pole;
26  } else {
27  return momentum().abs();
28  }
29 }
constexpr double really_small
Numerical error tolerance.
Definition: constants.h:34
double pole_mass() const
Get the particle&#39;s pole mass ("on-shell").
Definition: particledata.h:96
const FourVector & momentum() const
Get the particle&#39;s 4-momentum.
Definition: particledata.h:139
double abs() const
calculate the lorentz invariant absolute value
Definition: fourvector.h:441
Here is the call graph for this function:
Here is the caller graph for this function:

◆ type()

const ParticleType& smash::ParticleData::type ( ) const
inline

Get the type of the particle.

Returns
ParticleType object associated to this particle.

Definition at line 109 of file particledata.h.

109 { return *type_; }
ParticleTypePtr type_
A reference to the ParticleType object for this particle (this contains all the static information)...
Definition: particledata.h:411
Here is the caller graph for this function:

◆ id_process()

uint32_t smash::ParticleData::id_process ( ) const
inline

Get the id of the last action.

Returns
id of particle's latest collision

Definition at line 115 of file particledata.h.

115 { return history_.id_process; }
HistoryData history_
history information
Definition: particledata.h:443
uint32_t id_process
id of the last action
Definition: particledata.h:28
Here is the caller graph for this function:

◆ get_history()

HistoryData smash::ParticleData::get_history ( ) const
inline

Get history information.

Returns
particle history struct

Definition at line 120 of file particledata.h.

120 { return history_; }
HistoryData history_
history information
Definition: particledata.h:443
Here is the caller graph for this function:

◆ set_history()

void smash::ParticleData::set_history ( int  ncoll,
uint32_t  pid,
ProcessType  pt,
double  time_of_or,
const ParticleList &  plist 
)

Store history information.

The history contains the type of process and possibly the PdgCodes of the parent particles (plist). Note that history is not set for dileptons and photons.

Parameters
[in]ncollparticle's number of collisions
[in]pidid of the particle's latest process
[in]ptprocess type of the particle's latest process
[in]time_of_ortime of latest collision [fm]
[in]plistlist of parent particles

Definition at line 31 of file particledata.cc.

33  {
34  if (pt != ProcessType::Wall) {
36  history_.time_last_collision = time_last_coll;
37  }
38  history_.id_process = pid;
40  switch (pt) {
41  case ProcessType::Decay:
42  case ProcessType::Wall:
43  // only store one parent
44  history_.p1 = plist[0].pdgcode();
45  history_.p2 = 0x0;
46  break;
56  // store two parent particles
57  history_.p1 = plist[0].pdgcode();
58  history_.p2 = plist[1].pdgcode();
59  break;
61  case ProcessType::None:
62  // nullify parents
63  history_.p1 = 0x0;
64  history_.p2 = 0x0;
65  break;
66  }
67 }
resonance decays
double diffractive. Two strings are formed, one from A and one from B.
a special case of baryon-antibaryon annihilation.
PdgCode p2
PdgCode of the second parent particles.
Definition: particledata.h:41
2->2 inelastic scattering
forced thermalization, many particles are replaced by a thermalized ensemble
HistoryData history_
history information
Definition: particledata.h:443
uint32_t id_process
id of the last action
Definition: particledata.h:28
PdgCode p1
PdgCode of the first parent particles.
Definition: particledata.h:39
elastic scattering: particles remain the same, only momenta change
double time_last_collision
Time of the last action (excluding walls), time of kinetic freeze_out for HBT analysis this time shou...
Definition: particledata.h:37
hard string process involving 2->2 QCD process by PYTHIA.
box wall crossing
ProcessType process_type
type of the last action
Definition: particledata.h:30
resonance formation (2->1)
int collisions_per_particle
Collision counter per particle, zero only for initially present particles.
Definition: particledata.h:26
non-diffractive. Two strings are formed both have ends in A and B.
(41-45) soft string excitations.

◆ momentum()

const FourVector& smash::ParticleData::momentum ( ) const
inline

Get the particle's 4-momentum.

Returns
particle's 4-momentum [GeV]

Definition at line 139 of file particledata.h.

139 { return momentum_; }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
Here is the caller graph for this function:

◆ set_4momentum() [1/3]

void smash::ParticleData::set_4momentum ( const FourVector momentum_vector)
inline

Set the particle's 4-momentum directly.

Parameters
[in]momentum_vector4-vector \(p^\mu = (E,\vec{p})^T\)

Definition at line 145 of file particledata.h.

145  {
146  momentum_ = momentum_vector;
147  }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
Here is the caller graph for this function:

◆ set_4momentum() [2/3]

void smash::ParticleData::set_4momentum ( double  mass,
const ThreeVector mom 
)
inline

Set the momentum of the particle given its mass and momentum three-vector.

Parameters
[in]massthe mass of the particle (without E_kin contribution) [GeV]
[in]momthe three-momentum of the particle [GeV]

Definition at line 155 of file particledata.h.

155  {
156  momentum_ = FourVector(std::sqrt(mass * mass + mom * mom), mom);
157  }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428

◆ set_4momentum() [3/3]

void smash::ParticleData::set_4momentum ( double  mass,
double  px,
double  py,
double  pz 
)
inline

Set the momentum of the particle.

Parameters
[in]massthe mass of the particle (without E_kin contribution) [GeV]
[in]pxx-component of the momentum [GeV]
[in]pyy-component of the momentum [GeV]
[in]pzz-component of the momentum [GeV]

Definition at line 167 of file particledata.h.

167  {
168  momentum_ = FourVector(std::sqrt(mass * mass + px * px + py * py + pz * pz),
169  px, py, pz);
170  }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428

◆ set_3momentum()

void smash::ParticleData::set_3momentum ( const ThreeVector mom)
inline

Set the momentum of the particle without modifying the energy.

WARNING: Mass gets modified.

Parameters
[in]mommomentum 3-vector [GeV]

Definition at line 177 of file particledata.h.

177  {
178  momentum_ = FourVector(momentum_.x0(), mom);
179  }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
double x0() const
Definition: fourvector.h:290
Here is the call graph for this function:
Here is the caller graph for this function:

◆ position()

const FourVector& smash::ParticleData::position ( ) const
inline

Get the particle's position in Minkowski space.

Returns
particle's position 4-vector

Definition at line 185 of file particledata.h.

185 { return position_; }
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
Here is the caller graph for this function:

◆ set_4position()

void smash::ParticleData::set_4position ( const FourVector pos)
inline

Set the particle's 4-position directly.

Parameters
[in]posposition 4-vector

Definition at line 190 of file particledata.h.

190 { position_ = pos; }
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
Here is the caller graph for this function:

◆ set_3position()

void smash::ParticleData::set_3position ( const ThreeVector pos)
inline

Set particle's 3-position.

The time component is not changed

Parameters
[in]posposition 3-vector

Definition at line 197 of file particledata.h.

197  {
198  position_ = FourVector(position_.x0(), pos);
199  }
double x0() const
Definition: fourvector.h:290
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
Here is the call graph for this function:

◆ translated()

ParticleData smash::ParticleData::translated ( const ThreeVector delta) const
inline

Translate the particle position.

Parameters
[in]delta3-vector by which the particle is translated [fm]

Definition at line 205 of file particledata.h.

205  {
206  ParticleData p = *this;
207  p.position_[1] += delta[0];
208  p.position_[2] += delta[1];
209  p.position_[3] += delta[2];
210  return p;
211  }
constexpr int p
Proton.
ParticleData()=default
Default constructor.

◆ formation_time()

double smash::ParticleData::formation_time ( ) const
inline

Get the absolute formation time of the particle.

Returns
particle's formation time

Definition at line 217 of file particledata.h.

217 { return formation_time_; }
double formation_time_
Formation time at which the particle is fully formed given as an absolute value in the computational ...
Definition: particledata.h:434
Here is the caller graph for this function:

◆ begin_formation_time()

double smash::ParticleData::begin_formation_time ( ) const
inline

Get the absolute time, where the cross section scaling factor slowly starts increasing from the given scaling factor to 1.

Returns
time, when scaling factor starts increasing

Definition at line 223 of file particledata.h.

223 { return begin_formation_time_; }
double begin_formation_time_
time when the cross section scaling factor starts to increase to 1
Definition: particledata.h:436

◆ set_formation_time()

void smash::ParticleData::set_formation_time ( const double &  form_time)
inline

Set the absolute formation time.

The particle's cross section scaling factor will be a Heavyside fuction of time.

Parameters
[in]form_timeabsolute formation time

Definition at line 232 of file particledata.h.

232  {
233  formation_time_ = form_time;
234  // cross section scaling factor will be a step function in time
235  begin_formation_time_ = form_time;
236  }
double begin_formation_time_
time when the cross section scaling factor starts to increase to 1
Definition: particledata.h:436
double formation_time_
Formation time at which the particle is fully formed given as an absolute value in the computational ...
Definition: particledata.h:434
Here is the caller graph for this function:

◆ set_slow_formation_times()

void smash::ParticleData::set_slow_formation_times ( double  begin_form_time,
double  form_time 
)
inline

Set the time, when the cross section scaling factor begins, and finishes to increase from the given cross section scaling factor to 1.

The cross section will only grow slowly, if the option is used.

Parameters
[in]begin_form_timetime when the cross section starts to increase
[in]form_timetime when the cross section reaches 1

Definition at line 246 of file particledata.h.

246  {
247  begin_formation_time_ = begin_form_time;
248  formation_time_ = form_time;
249  }
double begin_formation_time_
time when the cross section scaling factor starts to increase to 1
Definition: particledata.h:436
double formation_time_
Formation time at which the particle is fully formed given as an absolute value in the computational ...
Definition: particledata.h:434

◆ initial_xsec_scaling_factor()

const double& smash::ParticleData::initial_xsec_scaling_factor ( ) const
inline

Get the initially assigned cross section scaling factor.

Depending on the config, the cross section scaling factor might change with time, while this value will not be updated.

Returns
particle's initially assigned cross section scaling factor

Definition at line 259 of file particledata.h.

259  {
261  }
double initial_xsec_scaling_factor_
Initial cross section scaling factor.
Definition: particledata.h:441

◆ set_cross_section_scaling_factor()

void smash::ParticleData::set_cross_section_scaling_factor ( const double &  xsec_scal)
inline

Set the particle's initial cross_section_scaling_factor.

All cross sections of this particle are scaled down by this factor until the formation time is over.

If the particle formation power is set to be positive, this will only be the initial scaling factor, while the actual scaling factor grows with time.

Parameters
[in]xsec_scalcross section scaling factor

Definition at line 274 of file particledata.h.

274  {
275  initial_xsec_scaling_factor_ = xsec_scal;
276  }
double initial_xsec_scaling_factor_
Initial cross section scaling factor.
Definition: particledata.h:441
Here is the caller graph for this function:

◆ velocity()

ThreeVector smash::ParticleData::velocity ( ) const
inline

Get the velocity 3-vector.

Returns
3-velocity of the particle

Definition at line 282 of file particledata.h.

282 { return momentum_.velocity(); }
ThreeVector velocity() const
Get the velocity (3-vector divided by zero component).
Definition: fourvector.h:310
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
Here is the call graph for this function:
Here is the caller graph for this function:

◆ inverse_gamma()

double smash::ParticleData::inverse_gamma ( ) const
inline

Get the inverse of the gamma factor from the current velocity of the particle.

\[\frac{1}{\gamma}=\sqrt{1-v^2}\]

This functions is more efficient than calculating the gamma factor from velocity, since the velocity function must execute three divisions (for every space component of the momentum vector).

Returns
inverse gamma factor

Definition at line 296 of file particledata.h.

296  {
297  return std::sqrt(1. - momentum_.sqr3() / (momentum_.x0() * momentum_.x0()));
298  }
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
double x0() const
Definition: fourvector.h:290
double sqr3() const
calculate the square of the spatial three-vector
Definition: fourvector.h:451
Here is the call graph for this function:

◆ boost()

void smash::ParticleData::boost ( const ThreeVector v)
inline

Apply a full Lorentz boost of momentum and position.

Parameters
[in]vboost 3-velocity

Definition at line 304 of file particledata.h.

304  {
307  }
FourVector LorentzBoost(const ThreeVector &v) const
Returns the FourVector boosted with velocity v.
Definition: fourvector.cc:16
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
void set_4momentum(const FourVector &momentum_vector)
Set the particle&#39;s 4-momentum directly.
Definition: particledata.h:145
void set_4position(const FourVector &pos)
Set the particle&#39;s 4-position directly.
Definition: particledata.h:190
Here is the call graph for this function:
Here is the caller graph for this function:

◆ boost_momentum()

void smash::ParticleData::boost_momentum ( const ThreeVector v)
inline

Apply a Lorentz-boost to only the momentum.

Parameters
[in]vboost 3-veloctity

Definition at line 313 of file particledata.h.

313  {
315  }
FourVector LorentzBoost(const ThreeVector &v) const
Returns the FourVector boosted with velocity v.
Definition: fourvector.cc:16
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
void set_4momentum(const FourVector &momentum_vector)
Set the particle&#39;s 4-momentum directly.
Definition: particledata.h:145
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator==() [1/2]

bool smash::ParticleData::operator== ( const ParticleData a) const
inline

Check whether two particles have the same id.

Parameters
[in]aparticle to compare to
Returns
whether the particles have the same id

Definition at line 322 of file particledata.h.

322 { return this->id_ == a.id_; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395

◆ operator<() [1/2]

bool smash::ParticleData::operator< ( const ParticleData a) const
inline

Check if this particle has a smaller id than another particle.

Parameters
[in]aparticle to compare to
Returns
whether this particle has a smaller id than other particle

Definition at line 328 of file particledata.h.

328 { return this->id_ < a.id_; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395

◆ operator==() [2/2]

bool smash::ParticleData::operator== ( int  id_a) const
inline

Check if the particle has a given id.

Parameters
[in]id_aid to compare to
Returns
whether the particle has the given id

Definition at line 335 of file particledata.h.

335 { return this->id_ == id_a; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395

◆ operator<() [2/2]

bool smash::ParticleData::operator< ( int  id_a) const
inline

Check whether the particle's id is smaller than the given id.

Parameters
[in]id_anumber to compare particle's id to

Definition at line 340 of file particledata.h.

340 { return this->id_ < id_a; }
int id_
Each particle has a unique identifier.
Definition: particledata.h:395

◆ xsec_scaling_factor()

double smash::ParticleData::xsec_scaling_factor ( double  delta_time = 0.) const

Return the cross section scaling factor at a given time.

Parameters
[in]delta_timescaling factor at current time plus this time will be returned.
Returns
the cross section scaling factor at a specified time.

Definition at line 69 of file particledata.cc.

69  {
70  double time_of_interest = position_.x0() + delta_time;
71  // cross section scaling factor at the time_of_interest
72  double scaling_factor;
73 
74  if (formation_power_ <= 0.) {
75  // use a step function to form particles
76  if (time_of_interest < formation_time_) {
77  // particles will not be fully formed at time of interest
78  scaling_factor = initial_xsec_scaling_factor_;
79  } else {
80  // particles are fully formed at time of interest
81  scaling_factor = 1.;
82  }
83  } else {
84  // use smooth function to scale cross section (unless particles are already
85  // fully formed at desired time or will start to form later)
86  if (formation_time_ <= time_of_interest) {
87  // particles are fully formed when colliding
88  scaling_factor = 1.;
89  } else if (begin_formation_time_ >= time_of_interest) {
90  // particles will start formimg later
91  scaling_factor = initial_xsec_scaling_factor_;
92  } else {
93  // particles are in the process of formation at the given time
94  scaling_factor =
97  std::pow((time_of_interest - begin_formation_time_) /
100  }
101  }
102  return scaling_factor;
103 }
double begin_formation_time_
time when the cross section scaling factor starts to increase to 1
Definition: particledata.h:436
double x0() const
Definition: fourvector.h:290
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
double formation_time_
Formation time at which the particle is fully formed given as an absolute value in the computational ...
Definition: particledata.h:434
double initial_xsec_scaling_factor_
Initial cross section scaling factor.
Definition: particledata.h:441
static double formation_power_
Power with which the cross section scaling factor grows in time.
Definition: particledata.h:365
Here is the call graph for this function:
Here is the caller graph for this function:

◆ copy_to()

void smash::ParticleData::copy_to ( ParticleData dst) const
inlineprivate

Copies some information of the particle to the given particle dst.

Specifically it avoids to copy id_, index_, and type_.

Parameters
[in]dstparticle values are copied to

Definition at line 378 of file particledata.h.

378  {
379  dst.history_ = history_;
380  dst.momentum_ = momentum_;
381  dst.position_ = position_;
382  dst.formation_time_ = formation_time_;
383  dst.initial_xsec_scaling_factor_ = initial_xsec_scaling_factor_;
384  dst.begin_formation_time_ = begin_formation_time_;
385  }
double begin_formation_time_
time when the cross section scaling factor starts to increase to 1
Definition: particledata.h:436
FourVector momentum_
momenta of the particle: x0, x1, x2, x3 as E, px, py, pz
Definition: particledata.h:428
HistoryData history_
history information
Definition: particledata.h:443
FourVector position_
position in space: x0, x1, x2, x3 as t, x, y, z
Definition: particledata.h:430
double formation_time_
Formation time at which the particle is fully formed given as an absolute value in the computational ...
Definition: particledata.h:434
double initial_xsec_scaling_factor_
Initial cross section scaling factor.
Definition: particledata.h:441
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ Particles

friend class Particles
friend

Definition at line 368 of file particledata.h.

Member Data Documentation

◆ formation_power_

double smash::ParticleData::formation_power_ = 0.0
static

Power with which the cross section scaling factor grows in time.

Definition at line 365 of file particledata.h.

◆ id_

int smash::ParticleData::id_ = -1
private

Each particle has a unique identifier.

This identifier is used for identifying the particle in the output files. It is specifically not used for searching for ParticleData objects in lists of particles, though it may be used to identify two ParticleData objects as referencing the same particle. This is why the comparison operators depend only on the id_ member.

Definition at line 395 of file particledata.h.

◆ index_

unsigned smash::ParticleData::index_ = std::numeric_limits<unsigned>::max()
private

Internal index in the Particles list.

This number is used to find the Experiment-wide original of this copy.

The value is read and written from the Particles class.

See also
Particles::data_

Definition at line 405 of file particledata.h.

◆ type_

ParticleTypePtr smash::ParticleData::type_
private

A reference to the ParticleType object for this particle (this contains all the static information).

Default-initialized with an invalid index.

Definition at line 411 of file particledata.h.

◆ hole_

bool smash::ParticleData::hole_ = false
private

If true, the object is an entry in Particles::data_ and does not hold valid particle data.

Specifically iterations over Particles must skip objects with hole_ == true. All other ParticleData instances should set this member to false.

See also
Particles::data_

Definition at line 425 of file particledata.h.

◆ momentum_

FourVector smash::ParticleData::momentum_
private

momenta of the particle: x0, x1, x2, x3 as E, px, py, pz

Definition at line 428 of file particledata.h.

◆ position_

FourVector smash::ParticleData::position_
private

position in space: x0, x1, x2, x3 as t, x, y, z

Definition at line 430 of file particledata.h.

◆ formation_time_

double smash::ParticleData::formation_time_ = 0.0
private

Formation time at which the particle is fully formed given as an absolute value in the computational frame.

Definition at line 434 of file particledata.h.

◆ begin_formation_time_

double smash::ParticleData::begin_formation_time_ = 0.0
private

time when the cross section scaling factor starts to increase to 1

Definition at line 436 of file particledata.h.

◆ initial_xsec_scaling_factor_

double smash::ParticleData::initial_xsec_scaling_factor_ = 1.0
private

Initial cross section scaling factor.

1 by default, since a particle is fully formed in this case.

Definition at line 441 of file particledata.h.

◆ history_

HistoryData smash::ParticleData::history_
private

history information

Definition at line 443 of file particledata.h.


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