Version: SMASH-2.2
forwarddeclarations.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2022
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 boost {
46 namespace filesystem {
47 class path;
48 } // namespace filesystem
49 } // namespace boost
50 
51 namespace smash {
52 
53 template <typename T>
54 using build_unique_ptr_ = std::unique_ptr<T, std::default_delete<T>>;
55 template <typename T>
56 using build_vector_ = std::vector<T, std::allocator<T>>;
57 
58 class Action;
59 class ScatterAction;
60 class ScatterActionMulti;
61 class BoxModus;
62 class Clock;
63 class Configuration;
64 class CrossSections;
65 class DecayModes;
66 class DecayType;
67 class FourVector;
68 class ThreeVector;
69 class ModusDefault;
70 class OutputInterface;
71 class ParticleData;
72 class Particles;
73 class ParticleType;
74 class ParticleTypePtr;
75 class IsoParticleType;
76 class PdgCode;
77 class DecayBranch;
78 class CollisionBranch;
79 class Tabulation;
80 class ExperimentBase;
81 struct ExperimentParameters;
82 struct Nucleoncorr;
83 
85 
87 enum class CalculationFrame {
91 };
92 
94 enum class FermiMotion {
96  Off,
98  On,
100  Frozen,
101 };
102 
104 enum class Sampling {
106  Uniform,
108  Quadratic,
110  Custom,
111 };
112 
114 enum class DerivativesMode {
117  Off,
118 };
119 
125  On,
126  Off,
127 };
128 
134  ChainRule,
135  Direct,
136 };
137 
139 enum class SmearingMode {
141  Discrete,
142  Triangular,
143 };
144 
146 enum class TimeStepMode : char {
148  None,
150  Fixed,
151 };
152 
168 };
169 
186  IC_ES,
187  IC_1M,
188  IC_2M,
189  IC_Massive,
190 };
191 
200 enum class ExpansionMode {
201  NoExpansion,
202  MasslessFRW,
203  MassiveFRW,
204  Exponential,
205 };
206 
208 enum class NNbarTreatment {
212  Resonances,
214  TwoToFive,
216  Strings,
217 };
218 
222 enum class ThermodynamicQuantity : char {
224  Tmn,
225  TmnLandau,
227  j_QBS
228 };
229 
231 enum class CollisionCriterion {
233  Geometric,
235  Stochastic,
237  Covariant
238 };
239 
241 enum class OutputOnlyFinal {
243  Yes,
245  No,
248  IfNotEmpty,
249 };
250 
253  All = 50,
254  Elastic = 0,
255  NN_to_NR = 1,
256  NN_to_DR = 2,
257  KN_to_KN = 3,
260  NNbar = 6,
264 };
265 
267 typedef std::bitset<10> ReactionsBitSet;
268 
275 };
276 
278 typedef std::bitset<4> MultiParticleReactionsBitSet;
279 
290  ModeSampling,
291  BiasedBF,
292  UnbiasedBF,
293 };
294 
302 enum class EventCounting {
303  FixedNumber,
305  Invalid,
306 };
307 
309 using ActionPtr = build_unique_ptr_<Action>;
310 using ScatterActionPtr = build_unique_ptr_<ScatterAction>;
311 using ScatterActionMultiPtr = build_unique_ptr_<ScatterActionMulti>;
312 using ActionList = build_vector_<ActionPtr>;
313 
314 using OutputPtr = build_unique_ptr_<OutputInterface>;
315 using OutputsList = build_vector_<OutputPtr>;
316 
317 using ParticleList = build_vector_<ParticleData>;
318 using ParticleTypeList = build_vector_<ParticleType>;
319 using ParticleTypePtrList = build_vector_<ParticleTypePtr>;
320 using IsoParticleTypeList = build_vector_<IsoParticleType>;
321 
322 template <typename T>
323 using ProcessBranchPtr = build_unique_ptr_<T>;
324 template <typename T>
325 using ProcessBranchList = build_vector_<ProcessBranchPtr<T>>;
326 using DecayBranchPtr = build_unique_ptr_<DecayBranch>;
327 using DecayBranchList = build_vector_<DecayBranchPtr>;
328 using CollisionBranchPtr = build_unique_ptr_<CollisionBranch>;
329 using CollisionBranchList = build_vector_<CollisionBranchPtr>;
330 
331 using TabulationPtr = build_unique_ptr_<Tabulation>;
332 using ExperimentPtr = build_unique_ptr_<ExperimentBase>;
333 using DecayTypePtr = build_unique_ptr_<DecayType>;
334 
335 namespace bf = boost::filesystem;
337 
338 } // namespace smash
339 
340 #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.
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
(Default) 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.
EventCounting
Defines how the number of events is determined.
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.
ExpansionMode
Defines properties of expansion for the metric (e.g.
Definition: action.h:24