Version: SMASH-3.1
forwarddeclarations.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2023
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_FORWARDDECLARATIONS_H_
11 #define SRC_INCLUDE_SMASH_FORWARDDECLARATIONS_H_
12 
14 // exclude most content here from documentation
15 
16 #include <iosfwd>
17 #include <memory>
18 #include <vector>
19 
20 #ifdef _LIBCPP_BEGIN_NAMESPACE_STD
21 _LIBCPP_BEGIN_NAMESPACE_STD
22 #else
23 namespace std {
24 #endif
25 
26 template <typename T>
27 class allocator;
28 template <typename T, typename A>
29 class vector;
30 
31 template <typename T>
32 struct default_delete;
33 template <typename T, typename Deleter>
34 class unique_ptr;
35 
36 template <std::size_t N>
37 class bitset;
38 
39 #ifdef _LIBCPP_END_NAMESPACE_STD
40 _LIBCPP_END_NAMESPACE_STD
41 #else
42 } // namespace std
43 #endif
44 
45 namespace smash {
46 
47 template <typename T>
48 using build_unique_ptr_ = std::unique_ptr<T, std::default_delete<T>>;
49 template <typename T>
50 using build_vector_ = std::vector<T, std::allocator<T>>;
51 
52 class Action;
53 class ScatterAction;
54 class ScatterActionMulti;
55 class BoxModus;
56 class Clock;
57 class Configuration;
58 class CrossSections;
59 class DecayModes;
60 class DecayType;
61 class FourVector;
62 class ThreeVector;
63 class ModusDefault;
64 class OutputInterface;
65 class ParticleData;
66 class Particles;
67 class ParticleType;
68 class ParticleTypePtr;
69 class IsoParticleType;
70 class PdgCode;
71 class DecayBranch;
72 class CollisionBranch;
73 class Tabulation;
74 class ExperimentBase;
75 struct ExperimentParameters;
76 struct ScatterActionsFinderParameters;
77 struct StringTransitionParameters;
78 struct Nucleoncorr;
79 
81 
83 enum class CalculationFrame {
87 };
88 
90 enum class FermiMotion {
92  Off,
94  On,
96  Frozen,
97 };
98 
100 enum class Sampling {
102  Uniform,
104  Quadratic,
106  Custom,
107 };
108 
110 enum class DerivativesMode {
113  Off,
114 };
115 
121  On,
122  Off,
123 };
124 
130  ChainRule,
131  Direct,
132 };
133 
135 enum class SmearingMode {
137  Discrete,
138  Triangular,
139 };
140 
142 enum class TimeStepMode : char {
144  None,
146  Fixed,
147 };
148 
164 };
165 
176  IC_ES,
179  IC_1M,
182  IC_2M,
185  IC_Massive,
186 };
187 
196 enum class ExpansionMode {
197  NoExpansion,
198  MasslessFRW,
199  MassiveFRW,
200  Exponential,
201 };
202 
204 enum class NNbarTreatment {
208  Resonances,
210  TwoToFive,
212  Strings,
213 };
214 
219 enum class ThermodynamicQuantity : char {
223  Tmn,
225  TmnLandau,
229  j_QBS
230 };
231 
233 enum class CollisionCriterion {
235  Geometric,
237  Stochastic,
239  Covariant
240 };
241 
243 enum class OutputOnlyFinal {
245  Yes,
247  No,
250  IfNotEmpty,
251 };
252 
255  All = 50,
256  Elastic = 0,
257  NN_to_NR = 1,
258  NN_to_DR = 2,
259  KN_to_KN = 3,
262  NNbar = 6,
266 };
267 
269 typedef std::bitset<10> ReactionsBitSet;
270 
277 };
278 
280 typedef std::bitset<4> MultiParticleReactionsBitSet;
281 
292  ModeSampling,
293  BiasedBF,
294  UnbiasedBF,
295 };
296 
298 enum class EventCounting {
301  FixedNumber,
306  Invalid,
307 };
308 
312  BottomUp,
315  TopDown,
319 };
320 
325 enum class PseudoResonance {
327  None,
329  Largest,
332  Closest,
339 };
340 
342 using ActionPtr = build_unique_ptr_<Action>;
343 using ScatterActionPtr = build_unique_ptr_<ScatterAction>;
344 using ScatterActionMultiPtr = build_unique_ptr_<ScatterActionMulti>;
345 using ActionList = build_vector_<ActionPtr>;
346 
347 using OutputPtr = build_unique_ptr_<OutputInterface>;
348 using OutputsList = build_vector_<OutputPtr>;
349 
350 using ParticleList = build_vector_<ParticleData>;
351 using ParticleTypeList = build_vector_<ParticleType>;
352 using ParticleTypePtrList = build_vector_<ParticleTypePtr>;
353 using IsoParticleTypeList = build_vector_<IsoParticleType>;
354 
355 template <typename T>
356 using ProcessBranchPtr = build_unique_ptr_<T>;
357 template <typename T>
358 using ProcessBranchList = build_vector_<ProcessBranchPtr<T>>;
359 using DecayBranchPtr = build_unique_ptr_<DecayBranch>;
360 using DecayBranchList = build_vector_<DecayBranchPtr>;
361 using CollisionBranchPtr = build_unique_ptr_<CollisionBranch>;
362 using CollisionBranchList = build_vector_<CollisionBranchPtr>;
363 
364 using TabulationPtr = build_unique_ptr_<Tabulation>;
365 using ExperimentPtr = build_unique_ptr_<ExperimentBase>;
366 using DecayTypePtr = build_unique_ptr_<DecayType>;
367 
369 
370 } // namespace smash
371 
372 #endif // SRC_INCLUDE_SMASH_FORWARDDECLARATIONS_H_
SmearingMode
Modes of smearing.
FermiMotion
Option to use Fermi Motion.
@ On
Use fermi motion in combination with potentials.
@ Frozen
Use fermi motion without potentials.
@ Off
Don't use fermi motion.
std::bitset< 10 > ReactionsBitSet
Container for the 2 to 2 reactions in the code.
ThermalizationAlgorithm
Defines the algorithm used for the forced thermalization.
NNbarTreatment
Treatment of N Nbar Annihilation.
@ NoAnnihilation
No Annihilation.
@ TwoToFive
Directly create 5 pions, use with multi-particle reactions.
@ Resonances
Use intermediate Resonances.
@ Strings
Use string fragmentation.
RestFrameDensityDerivativesMode
Modes of calculating the gradients: whether to calculate the rest frame density derivatives.
TimeStepMode
The time step mode.
@ Fixed
Use fixed time step.
ThermodynamicQuantity
Represents thermodynamic quantities that can be printed out See user guide description for more infor...
@ EckartDensity
Density in the Eckart frame.
@ Tmn
Energy-momentum tensor in lab frame.
@ LandauVelocity
Velocity of the Landau rest frame.
@ j_QBS
Electric (Q), baryonic (B) and strange (S) currents.
@ TmnLandau
Energy-momentum tensor in Landau rest frame.
TotalCrossSectionStrategy
Determine how total cross sections for collision finding should be computed.
@ TopDownMeasured
Mix the two above, using the parametrizations only for measured processes, and summing up partials fo...
@ TopDown
Use parametrizations based on existing data, rescaling with AQM for unmeasured processes.
@ BottomUp
Sum the existing partial contributions.
Sampling
Possible methods of impact parameter sampling.
@ Quadratic
Sample from areal / quadratic distribution.
@ Custom
Sample from custom, user-defined distribution.
@ Uniform
Sample from uniform distribution.
std::bitset< 4 > MultiParticleReactionsBitSet
Container for the n to m reactions in the code.
CalculationFrame
The calculation frame.
IncludedMultiParticleReactions
The different groups of multi-particle reactions that one can include.
@ NNbar_5to2
@ A3_Nuclei_4to2
@ Deuteron_3to2
@ Meson_3to1
DerivativesMode
Modes of calculating the gradients.
CollisionCriterion
Criteria used to check collisions.
@ Stochastic
Stochastic Criteiron.
@ Geometric
Geometric criterion.
@ Covariant
Covariant Criterion.
FieldDerivativesMode
Modes of calculating the field gradients: chain rule or direct.
SphereInitialCondition
Initial condition for a particle in a sphere.
@ IC_ES
Off-equilibrium distribution used in massless comparisons of SMASH to the extended universe metric.
@ IC_Massive
A generalization of IC_ES for the non-zero mass case; note that there is currently no analytical comp...
@ IC_2M
Off-equilibrium distribution used in massless comparisons of SMASH to the extended universe metric.
@ IC_1M
Off-equilibrium distribution used in massless comparisons of SMASH to the extended universe metric.
PseudoResonance
Which pseudo-resonance fills the inelastic gap in the transition to string region of cross sections.
@ Closest
Resonance with the pole mass closest from the invariant mass of incoming particles for all processes.
@ ClosestFromUnstable
Closest resonance for a given mass from processes with at least one resonance in the incoming particl...
@ LargestFromUnstable
Heaviest possible resonance from processes with at least one resonance in the incoming particles.
@ Largest
Resonance of largest mass for all processes.
EventCounting
Defines how the number of events is determined.
@ Invalid
Unused, only in the code for internal logic.
@ FixedNumber
The desired number of events is simulated disregarding of whether an interaction took place.
@ MinimumNonEmpty
Events are simulated until there are at least a given number of ensembles in which an interaction too...
IncludedReactions
The different groups of 2 to 2 reactions that one can include.
@ KN_to_KDelta
@ KN_to_KN
@ NN_to_NR
@ PiDeuteron_to_pidprime
@ NDeuteron_to_Ndprime
@ Strangeness_exchange
@ PiDeuteron_to_NN
@ NN_to_DR
OutputOnlyFinal
Whether and when only final state particles should be printed.
@ IfNotEmpty
Print only final-state particles, and those only if the event is not empty.
@ Yes
Print only final-state particles.
@ No
Print initial, intermediate and final-state particles.
BoxInitialCondition
Initial condition for a particle in a box.
@ ThermalMomentaBoltzmann
A thermalized ensemble is generated, with momenta sampled from a Maxwell-Boltzmann distribution.
@ ThermalMomentaQuantum
A thermalized ensemble is generated, with momenta of baryons(mesons) sampled from a Fermi(Bose) distr...
@ PeakedMomenta
All particles have the same momentum with T being the temperature.
ExpansionMode
Defines properties of expansion for the metric (e.g.
Definition: action.h:24