#include <collidermodus.h>
ColliderModus: Provides a modus for colliding nuclei.
To use this modus, choose
in the configuration file.
Options for ColliderModus go in the "Modi"→"Collider" section of the configuration.
The following configuration options are understood: Collider
Definition at line 43 of file collidermodus.h.
Classes | |
struct | ColliderEmpty |
Public Member Functions | |
ColliderModus (Configuration modus_config, const ExperimentParameters ¶meters) | |
Constructor. More... | |
std::string | custom_file_path (const std::string &file_directory, const std::string &file_name) |
Creates full path string consisting of file_directory and file_name Needed to initialize a customnucleus. More... | |
double | initial_conditions (Particles *particles, const ExperimentParameters ¶meters) |
Generates initial state of the particles in the system. More... | |
int | total_N_number () const |
int | proj_N_number () const |
double | nuclei_passing_time () const |
Time until nuclei have passed through each other. More... | |
double | velocity_projectile () const |
double | velocity_target () const |
bool | cll_in_nucleus () |
FermiMotion | fermi_motion () |
bool | is_collider () const |
double | sqrt_s_NN () const |
double | impact_parameter () const |
![]() | |
int | impose_boundary_conditions (Particles *, const OutputsList &={}) |
Enforces sensible positions for the particles. More... | |
int | total_N_number () const |
int | proj_N_number () const |
bool | cll_in_nucleus () const |
bool | is_collider () const |
bool | is_box () const |
bool | is_list () const |
double | sqrt_s_NN () const |
double | impact_parameter () const |
double | velocity_projectile () const |
double | velocity_target () const |
FermiMotion | fermi_motion () const |
double | max_timestep (double) const |
double | equilibration_time () const |
double | nuclei_passing_time () const |
Get the passing time of the two nuclei in a collision. More... | |
Grid< GridOptions::Normal > | create_grid (const Particles &particles, double min_cell_length, double timestep_duration, CellSizeStrategy strategy=CellSizeStrategy::Optimal) const |
Creates the Grid with normal boundary conditions. More... | |
Private Member Functions | |
bool | same_inputfile (Configuration &proj_config, Configuration &targ_config) |
Checks if target and projectile are read from the same external file if they are both initialized as a customnucleus. More... | |
void | rotate_reaction_plane (double phi, Particles *particles) |
Rotate the reaction plane about the angle phi. More... | |
void | sample_impact () |
Sample impact parameter. More... | |
std::pair< double, double > | get_velocities (double mandelstam_s, double m_a, double m_b) |
Get the frame dependent velocity for each nucleus, using the current reference frame. More... | |
Static Private Member Functions | |
static std::unique_ptr< DeformedNucleus > | create_deformed_nucleus (Configuration &nucleus_cfg, const int ntest, const std::string &nucleus_type) |
Configure Deformed Nucleus. More... | |
Private Attributes | |
std::unique_ptr< Nucleus > | projectile_ |
Projectile. More... | |
std::unique_ptr< Nucleus > | target_ |
Target. More... | |
double | total_s_ |
Center-of-mass energy squared of the nucleus-nucleus collision. More... | |
double | sqrt_s_NN_ |
Center-of-mass energy of a nucleon-nucleon collision. More... | |
double | impact_ = 0. |
Impact parameter. More... | |
bool | random_reaction_plane_ |
Whether the reaction plane should be randomized. More... | |
Sampling | sampling_ = Sampling::Quadratic |
Method used for sampling of impact parameter. More... | |
double | imp_min_ = 0.0 |
Minimum value of impact parameter. More... | |
double | imp_max_ = 0.0 |
Maximum value of impact parameter. More... | |
double | yield_max_ = 0.0 |
Maximum value of yield. Needed for custom impact parameter sampling. More... | |
std::unique_ptr< InterpolateDataLinear< double > > | impact_interpolation_ |
Pointer to the impact parameter interpolation. More... | |
double | initial_z_displacement_ = 2.0 |
Initial z-displacement of nuclei. More... | |
CalculationFrame | frame_ = CalculationFrame::CenterOfVelocity |
Reference frame for the system, as specified from config. More... | |
FermiMotion | fermi_motion_ = FermiMotion::Off |
An option to include Fermi motion ("off", "on", "frozen") More... | |
bool | cll_in_nucleus_ = false |
An option to accept first collisions within the same nucleus. More... | |
double | velocity_projectile_ = 0.0 |
Beam velocity of the projectile. More... | |
double | velocity_target_ = 0.0 |
Beam velocity of the target. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &, const ColliderModus &) |
|
explicit |
Constructor.
Takes all there is to take from the (truncated!) configuration object (only contains configuration for this modus).
[in] | modus_config | The configuration object that sets all initial conditions of the experiment. |
[in] | parameters | Unused, but necessary because of templated initialization |
ColliderEmpty | if projectile or nucleus are empty (i.e. do not contain particles) |
InvalidEnergy | if sqrts from config is not large enough to support the colliding masses of the nuclei, or if E_kin or P_lab are negative |
domain_error | if more or less than exactly one of the input energy options is specified, or if custom impact parameter Values and Yields are improperly supplied |
Definition at line 330 of file collidermodus.cc.
std::string smash::ColliderModus::custom_file_path | ( | const std::string & | file_directory, |
const std::string & | file_name | ||
) |
Creates full path string consisting of file_directory and file_name Needed to initialize a customnucleus.
[in] | file_directory | is the path to the external file |
[in] | file_name | is the name of the external file |
Definition at line 746 of file collidermodus.cc.
double smash::ColliderModus::initial_conditions | ( | Particles * | particles, |
const ExperimentParameters & | parameters | ||
) |
Generates initial state of the particles in the system.
In particular, it initializes the momenta and positions of nucleons withing the colliding nuclei.
[out] | particles | An empty list that gets filled up by this function |
[in] | parameters | The initialization parameters of the system |
domain_error | if the velocities of each nucleus are >= 1, or if input for Fermi motion is invalid |
Definition at line 596 of file collidermodus.cc.
|
inline |
Definition at line 90 of file collidermodus.h.
|
inline |
Definition at line 92 of file collidermodus.h.
|
inline |
|
inline |
Definition at line 110 of file collidermodus.h.
|
inline |
Definition at line 115 of file collidermodus.h.
|
inline |
Definition at line 119 of file collidermodus.h.
|
inline |
|
inline |
Definition at line 123 of file collidermodus.h.
|
inline |
|
inline |
|
staticprivate |
Configure Deformed Nucleus.
Sets up a deformed nucleus object based on the input parameters in the configuration file.
[in] | nucleus_cfg | Subset of configuration, projectile or target section. |
[in] | ntest | Number of test particles |
[in] | nucleus_type | String 'projectile' or 'target'. To display an appropriate error message. |
Definition at line 577 of file collidermodus.cc.
|
private |
Checks if target and projectile are read from the same external file if they are both initialized as a customnucleus.
Function is only called if, projectile is customnucleus. /param[in] proj_config Configuration of projectile nucleus /param[in] targ_config Configuration of target nucleus
Definition at line 756 of file collidermodus.cc.
|
private |
Rotate the reaction plane about the angle phi.
[in] | phi | Angle about which to rotate |
[in] | particles | Particles, whose position is rotated |
Definition at line 677 of file collidermodus.cc.
|
private |
Sample impact parameter.
Samples the impact parameter from values between imp_min_ and imp_max_, if linear or quadratic sampling is used. By specifying impact parameters and corresponding yields, custom sampling can be used. This depends on the value of sampling_.
Note that imp_max_ less than imp_min_ also works fine.
Definition at line 688 of file collidermodus.cc.
|
private |
Get the frame dependent velocity for each nucleus, using the current reference frame.
[in] | mandelstam_s | The total center-of-mass energy of the system. |
[in] | m_a | The (positive) mass of the projectile. |
[in] | m_b | The (positive) mass of the target. |
domain_error | if the reference frame is not properly specified |
Definition at line 719 of file collidermodus.cc.
|
private |
Projectile.
The object that goes from negative z-values to positive z-values with positive velocity.
Definition at line 143 of file collidermodus.h.
|
private |
Target.
The object that goes from positive z-values to negative z-values with negative velocity. In fixed target experiments, the target is at rest.
Definition at line 151 of file collidermodus.h.
|
private |
Center-of-mass energy squared of the nucleus-nucleus collision.
Needs to be double to allow for calculations at LHC energies
Definition at line 157 of file collidermodus.h.
|
private |
Center-of-mass energy of a nucleon-nucleon collision.
Needs to be double to allow for calculations at LHC energies
Definition at line 163 of file collidermodus.h.
|
private |
Impact parameter.
The nuclei projectile_ and target_ will be shifted along the x-axis so that their centers move on antiparallel lines that are this distance apart from each other.
Definition at line 193 of file collidermodus.h.
|
private |
Whether the reaction plane should be randomized.
Definition at line 195 of file collidermodus.h.
|
private |
Method used for sampling of impact parameter.
Definition at line 197 of file collidermodus.h.
|
private |
Minimum value of impact parameter.
Definition at line 199 of file collidermodus.h.
|
private |
Maximum value of impact parameter.
Definition at line 201 of file collidermodus.h.
|
private |
Maximum value of yield. Needed for custom impact parameter sampling.
Definition at line 203 of file collidermodus.h.
|
private |
Pointer to the impact parameter interpolation.
Definition at line 205 of file collidermodus.h.
|
private |
Initial z-displacement of nuclei.
Projectile is shifted on -(this value) in z-direction and target on +(this value)*v_target/v_projectile. In this way projectile and target touch at t=0 in z=0.
Definition at line 233 of file collidermodus.h.
|
private |
Reference frame for the system, as specified from config.
Definition at line 237 of file collidermodus.h.
|
private |
An option to include Fermi motion ("off", "on", "frozen")
Definition at line 241 of file collidermodus.h.
|
private |
An option to accept first collisions within the same nucleus.
Definition at line 245 of file collidermodus.h.
|
private |
Beam velocity of the projectile.
Definition at line 249 of file collidermodus.h.
|
private |
Beam velocity of the target.
Definition at line 253 of file collidermodus.h.