Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/management/include/G4Ions.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /particles/management/include/G4Ions.hh (Version 11.3.0) and /particles/management/include/G4Ions.hh (Version 11.2.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // G4Ions                                          26 // G4Ions
 27 //                                                 27 //
 28 // Class Description:                              28 // Class Description:
 29 //                                                 29 //
 30 // This is the base class for all nuclei inclu     30 // This is the base class for all nuclei including pre-defined
 31 // light nuclei such as deuteron, alpha, and p     31 // light nuclei such as deuteron, alpha, and proton (Hydrogen).
 32 // All nuclei/ions created on the fly are obje     32 // All nuclei/ions created on the fly are objects of this class.
 33 // Atomic number and atomic mass are valid onl     33 // Atomic number and atomic mass are valid only for particles derived
 34 // from this class. This class has Excitation      34 // from this class. This class has Excitation Energy in addition to
 35 // the normal particle properties.                 35 // the normal particle properties.
 36                                                    36 
 37 // Authors: G.Cosmo, 4 April 1996 - Design bas     37 // Authors: G.Cosmo, 4 April 1996 - Design based on object model
 38 //          H.Kurashige, 27 June 1998 - First      38 //          H.Kurashige, 27 June 1998 - First implementation
 39 // -------------------------------------------     39 // --------------------------------------------------------------------
 40 #ifndef G4Ions_hh                                  40 #ifndef G4Ions_hh
 41 #define G4Ions_hh 1                                41 #define G4Ions_hh 1
 42                                                    42 
 43 #include "G4ParticleDefinition.hh"                 43 #include "G4ParticleDefinition.hh"
 44 #include "G4ios.hh"                                44 #include "G4ios.hh"
 45 #include "globals.hh"                              45 #include "globals.hh"
 46                                                    46 
 47 class G4Ions : public G4ParticleDefinition         47 class G4Ions : public G4ParticleDefinition
 48 {                                                  48 {
 49   public:                                          49   public:
 50     // clang-format off                            50     // clang-format off
 51     G4Ions(                                        51     G4Ions(
 52        const G4String&     aName,        G4dou     52        const G4String&     aName,        G4double            mass,
 53        G4double            width,        G4dou     53        G4double            width,        G4double            charge,   
 54        G4int               iSpin,        G4int     54        G4int               iSpin,        G4int               iParity,    
 55        G4int               iConjugation, G4int     55        G4int               iConjugation, G4int               iIsospin,   
 56        G4int               iIsospin3,    G4int     56        G4int               iIsospin3,    G4int               gParity,
 57        const G4String&     pType,        G4int     57        const G4String&     pType,        G4int               lepton,      
 58        G4int               baryon,       G4int     58        G4int               baryon,       G4int               encoding,
 59        G4bool              stable,       G4dou     59        G4bool              stable,       G4double            lifetime,
 60        G4DecayTable*       decaytable,   G4boo     60        G4DecayTable*       decaytable,   G4bool              shortlived,
 61        const G4String&     subType ="",            61        const G4String&     subType ="",
 62        G4int               anti_encoding =0,       62        G4int               anti_encoding =0,
 63        G4double            excitation = 0.0,       63        G4double            excitation = 0.0, 
 64        G4int               isomer = 0              64        G4int               isomer = 0
 65     );                                             65     );
 66     // clang-format on                             66     // clang-format on
 67                                                    67 
 68     ~G4Ions() override = default;                  68     ~G4Ions() override = default;
 69                                                    69 
 70     inline G4Ions* IonsDefinition();               70     inline G4Ions* IonsDefinition();
 71     inline G4Ions* Ions();                         71     inline G4Ions* Ions();
 72                                                    72 
 73     // Get excitation energy of nucleus            73     // Get excitation energy of nucleus
 74     inline G4double GetExcitationEnergy() cons     74     inline G4double GetExcitationEnergy() const;
 75                                                    75 
 76     // Get Isomer level (=0 for ground state)      76     // Get Isomer level (=0 for ground state)
 77     inline G4int GetIsomerLevel() const;           77     inline G4int GetIsomerLevel() const;
 78                                                    78 
 79     enum class G4FloatLevelBase  // enumerator     79     enum class G4FloatLevelBase  // enumerator for floating level base
 80     {                                              80     {
 81       no_Float = 0,                                81       no_Float = 0,
 82       plus_X,                                      82       plus_X,
 83       plus_Y,                                      83       plus_Y,
 84       plus_Z,                                      84       plus_Z,
 85       plus_U,                                      85       plus_U,
 86       plus_V,                                      86       plus_V,
 87       plus_W,                                      87       plus_W,
 88       plus_R,                                      88       plus_R,
 89       plus_S,                                      89       plus_S,
 90       plus_T,                                      90       plus_T,
 91       plus_A,                                      91       plus_A,
 92       plus_B,                                      92       plus_B,
 93       plus_C,                                      93       plus_C,
 94       plus_D,                                      94       plus_D,
 95       plus_E                                       95       plus_E
 96     };                                             96     };
 97                                                    97 
 98     static G4Ions::G4FloatLevelBase FloatLevel     98     static G4Ions::G4FloatLevelBase FloatLevelBase(char flbChar);
 99     static G4Ions::G4FloatLevelBase FloatLevel     99     static G4Ions::G4FloatLevelBase FloatLevelBase(G4int flbIdx);
100     static char FloatLevelBaseChar(G4Ions::G4F    100     static char FloatLevelBaseChar(G4Ions::G4FloatLevelBase flb);
101                                                   101 
102     // Set/Get methods for floating level base    102     // Set/Get methods for floating level base
103     //                                            103     //
104     inline G4Ions::G4FloatLevelBase GetFloatLe    104     inline G4Ions::G4FloatLevelBase GetFloatLevelBase() const;
105     inline G4int GetFloatLevelBaseIndex() cons    105     inline G4int GetFloatLevelBaseIndex() const;
106     inline void SetFloatLevelBase(G4Ions::G4Fl    106     inline void SetFloatLevelBase(G4Ions::G4FloatLevelBase flb);
107     inline void SetFloatLevelBase(char flbChar    107     inline void SetFloatLevelBase(char flbChar);
108     inline void SetFloatLevelBase(G4int flbIdx    108     inline void SetFloatLevelBase(G4int flbIdx);
109                                                   109 
110   protected:                                      110   protected:
111     G4Ions() = default;                           111     G4Ions() = default;
112                                                   112 
113   private:                                        113   private:
114     G4double theExcitationEnergy = 0.0;           114     G4double theExcitationEnergy = 0.0;
115     G4int theIsomerLevel = 0;                     115     G4int theIsomerLevel = 0;
116     G4FloatLevelBase floatLevelBase = G4FloatL    116     G4FloatLevelBase floatLevelBase = G4FloatLevelBase::no_Float;
117 };                                                117 };
118                                                   118 
119 #define noFloat G4Ions::G4FloatLevelBase::no_F    119 #define noFloat G4Ions::G4FloatLevelBase::no_Float
120 #define plusU G4Ions::G4FloatLevelBase::plus_U    120 #define plusU G4Ions::G4FloatLevelBase::plus_U
121 #define plusV G4Ions::G4FloatLevelBase::plus_V    121 #define plusV G4Ions::G4FloatLevelBase::plus_V
122 #define plusW G4Ions::G4FloatLevelBase::plus_W    122 #define plusW G4Ions::G4FloatLevelBase::plus_W
123 #define plusX G4Ions::G4FloatLevelBase::plus_X    123 #define plusX G4Ions::G4FloatLevelBase::plus_X
124 #define plusY G4Ions::G4FloatLevelBase::plus_Y    124 #define plusY G4Ions::G4FloatLevelBase::plus_Y
125 #define plusZ G4Ions::G4FloatLevelBase::plus_Z    125 #define plusZ G4Ions::G4FloatLevelBase::plus_Z
126 #define plusR G4Ions::G4FloatLevelBase::plus_R    126 #define plusR G4Ions::G4FloatLevelBase::plus_R
127 #define plusS G4Ions::G4FloatLevelBase::plus_S    127 #define plusS G4Ions::G4FloatLevelBase::plus_S
128 #define plusT G4Ions::G4FloatLevelBase::plus_T    128 #define plusT G4Ions::G4FloatLevelBase::plus_T
129 #define plusA G4Ions::G4FloatLevelBase::plus_A    129 #define plusA G4Ions::G4FloatLevelBase::plus_A
130 #define plusB G4Ions::G4FloatLevelBase::plus_B    130 #define plusB G4Ions::G4FloatLevelBase::plus_B
131 #define plusC G4Ions::G4FloatLevelBase::plus_C    131 #define plusC G4Ions::G4FloatLevelBase::plus_C
132 #define plusD G4Ions::G4FloatLevelBase::plus_D    132 #define plusD G4Ions::G4FloatLevelBase::plus_D
133 #define plusE G4Ions::G4FloatLevelBase::plus_E    133 #define plusE G4Ions::G4FloatLevelBase::plus_E
134                                                   134 
135 // ------------------------                       135 // ------------------------
136 // Inline methods                                 136 // Inline methods
137 // ------------------------                       137 // ------------------------
138                                                   138 
139 inline G4Ions* G4Ions::IonsDefinition()           139 inline G4Ions* G4Ions::IonsDefinition()
140 {                                                 140 {
141   return this;                                    141   return this;
142 }                                                 142 }
143                                                   143 
144 inline G4Ions* G4Ions::Ions()                     144 inline G4Ions* G4Ions::Ions()
145 {                                                 145 {
146   return this;                                    146   return this;
147 }                                                 147 }
148                                                   148 
149 inline G4double G4Ions::GetExcitationEnergy()     149 inline G4double G4Ions::GetExcitationEnergy() const
150 {                                                 150 {
151   return theExcitationEnergy;                     151   return theExcitationEnergy;
152 }                                                 152 }
153                                                   153 
154 inline G4int G4Ions::GetIsomerLevel() const       154 inline G4int G4Ions::GetIsomerLevel() const
155 {                                                 155 {
156   return theIsomerLevel;                          156   return theIsomerLevel;
157 }                                                 157 }
158                                                   158 
159 inline G4Ions::G4FloatLevelBase G4Ions::GetFlo    159 inline G4Ions::G4FloatLevelBase G4Ions::GetFloatLevelBase() const
160 {                                                 160 {
161   return floatLevelBase;                          161   return floatLevelBase;
162 }                                                 162 }
163                                                   163 
164 inline G4int G4Ions::GetFloatLevelBaseIndex()     164 inline G4int G4Ions::GetFloatLevelBaseIndex() const
165 {                                                 165 {
166   return static_cast<G4int>(floatLevelBase);      166   return static_cast<G4int>(floatLevelBase);
167 }                                                 167 }
168                                                   168 
169 inline void G4Ions::SetFloatLevelBase(G4Ions::    169 inline void G4Ions::SetFloatLevelBase(G4Ions::G4FloatLevelBase flb)
170 {                                                 170 {
171   floatLevelBase = flb;                           171   floatLevelBase = flb;
172 }                                                 172 }
173                                                   173 
174 inline void G4Ions::SetFloatLevelBase(char flb    174 inline void G4Ions::SetFloatLevelBase(char flbChar)
175 {                                                 175 {
176   floatLevelBase = FloatLevelBase(flbChar);       176   floatLevelBase = FloatLevelBase(flbChar);
177 }                                                 177 }
178                                                   178 
179 inline void G4Ions::SetFloatLevelBase(G4int fl    179 inline void G4Ions::SetFloatLevelBase(G4int flbIdx)
180 {                                                 180 {
181   floatLevelBase = FloatLevelBase(flbIdx);        181   floatLevelBase = FloatLevelBase(flbIdx);
182 }                                                 182 }
183                                                   183 
184 #endif                                            184 #endif
185                                                   185