Version: SMASH-1.5
deformednucleus.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2018
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 #ifndef SRC_INCLUDE_DEFORMEDNUCLEUS_H_
8 #define SRC_INCLUDE_DEFORMEDNUCLEUS_H_
9 
10 #include <map>
11 
12 #include "angles.h"
13 #include "configuration.h"
14 #include "forwarddeclarations.h"
15 #include "nucleus.h"
16 #include "threevector.h"
17 
18 namespace smash {
19 
27 class DeformedNucleus : public Nucleus {
28  public:
35  DeformedNucleus(const std::map<PdgCode, int> &particle_list, int nTest);
43  DeformedNucleus(Configuration &config, int nTest);
44 
52  double deformed_woods_saxon(double r, double cosx) const;
53 
60  ThreeVector distribute_nucleon() const override;
61 
73 
82 
87  void rotate() override;
88 
93  void generate_fermi_momenta() override;
94 
102  double y_l_0(int l, double cosx) const;
103 
108  inline void set_beta_2(double b2) { beta2_ = b2; }
113  inline void set_beta_4(double b4) { beta4_ = b4; }
118  inline void set_polar_angle(double theta) {
120  }
125  inline void set_azimuthal_angle(double phi) {
127  }
128 
129  private:
131  double beta2_ = 0.0;
133  double beta4_ = 0.0;
139 };
140 
141 } // namespace smash
142 
143 #endif // SRC_INCLUDE_DEFORMEDNUCLEUS_H_
void set_polar_angle(double theta)
Set the nucleus polar angle.
ThreeVector distribute_nucleon() const override
Deformed Woods-Saxon sampling routine.
double y_l_0(int l, double cosx) const
Spherical harmonics Y_2_0 and Y_4_0.
double beta4_
Deformation parameter for angular momentum l=4.
The ThreeVector class represents a physical three-vector with the components .
Definition: threevector.h:30
double beta2_
Deformation parameter for angular momentum l=2.
void set_beta_4(double b4)
Set deformation coefficient for Y_4_0.
DeformedNucleus: Child of nucleus for deformed nuclei.
A nucleus is a collection of particles that are initialized, before the beginning of the simulation a...
Definition: nucleus.h:27
Angles nuclear_orientation_
Nucleus orientation (initial profile in xz plane) in terms of a pair of angles (theta, phi)
void set_deformation_parameters_from_config(Configuration &config)
Set parameters for spherical deformation of the nucleus from the values specified in the configuratio...
Interface to the SMASH configuration files.
void set_theta(const double theta)
Set the polar angle.
Definition: angles.h:218
void set_deformation_parameters_automatic()
Sets the deformation parameters of the radius according to the current mass number.
void set_azimuthal_angle(double phi)
Set the nucleus azimuthal angle.
DeformedNucleus(const std::map< PdgCode, int > &particle_list, int nTest)
Constructor for DeformedNucles which takes a particle list and the number of testparticles.
void rotate() override
Rotates the nucleus according to members nucleus_polar_angle_ and nucleus_azimuthal_angle_ and update...
void generate_fermi_momenta() override
Does not allow to generate Fermi-momenta for a deformed nucleus.
void set_phi(const double phi)
Sets the azimuthal angle.
Definition: angles.h:194
Angles provides a common interface for generating directions: i.e., two angles that should be interpr...
Definition: angles.h:59
double deformed_woods_saxon(double r, double cosx) const
Return the deformed Woods-Saxon probability for the given position.
void set_beta_2(double b2)
Set deformation coefficient for Y_2_0.
Definition: action.h:24