File indexing completed on 2026-10-03 09:09:16
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 #ifndef G4Nucleus_h
0036 #define G4Nucleus_h 1
0037
0038
0039
0040
0041
0042
0043 #include "globals.hh"
0044 #include "G4ThreeVector.hh"
0045 #include "G4ParticleTypes.hh"
0046 #include "G4ReactionProduct.hh"
0047 #include "G4DynamicParticle.hh"
0048 #include "G4ReactionProductVector.hh"
0049 #include "Randomize.hh"
0050
0051 class G4Nucleus
0052 {
0053 public:
0054
0055 G4Nucleus();
0056 G4Nucleus(const G4double A, const G4double Z, const G4int numberOfLambdas = 0);
0057 G4Nucleus(const G4int A, const G4int Z, const G4int numberOfLambdas = 0);
0058 G4Nucleus(const G4Material* aMaterial);
0059
0060 ~G4Nucleus();
0061
0062 G4Nucleus(const G4Nucleus&) = default;
0063 G4Nucleus(G4Nucleus&&) = default;
0064 G4Nucleus& operator = (const G4Nucleus&) = default;
0065 G4Nucleus& operator = (G4Nucleus&&) = default;
0066
0067 inline G4bool operator==( const G4Nucleus &right ) const
0068 { return ( this == (G4Nucleus *) &right ); }
0069
0070 inline G4bool operator!=( const G4Nucleus &right ) const
0071 { return ( this != (G4Nucleus *) &right ); }
0072
0073 void ChooseParameters( const G4Material *aMaterial );
0074
0075 void SetParameters( const G4double A, const G4double Z, const G4int numberOfLambdas = 0 );
0076 void SetParameters( const G4int A, const G4int Z, const G4int numberOfLambdas = 0 );
0077
0078 inline G4int GetA_asInt() const
0079 { return theA; }
0080
0081 inline G4int GetN_asInt() const
0082 { return theA-theZ-theL; }
0083
0084 inline G4int GetZ_asInt() const
0085 { return theZ; }
0086
0087 inline G4int GetL() const
0088 { return theL; }
0089
0090 inline const G4Isotope* GetIsotope()
0091 { return fIsotope; }
0092
0093 inline void SetIsotope(const G4Isotope* iso)
0094 {
0095 fIsotope = iso;
0096 if(iso) {
0097 theZ = iso->GetZ();
0098 theA = iso->GetN();
0099 theL = 0;
0100 aEff = theA;
0101 zEff = theZ;
0102 }
0103 }
0104
0105 G4DynamicParticle *ReturnTargetParticle() const;
0106
0107 G4double AtomicMass( const G4double A, const G4double Z, const G4int numberOfLambdas = 0 ) const;
0108 G4double AtomicMass( const G4int A, const G4int Z, const G4int numberOfLambdas = 0 ) const;
0109
0110 G4double GetThermalPz( const G4double mass, const G4double temp ) const;
0111
0112 G4ReactionProduct GetThermalNucleus(G4double aMass, G4double temp=-1) const;
0113
0114 G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const;
0115
0116 void DoKinematicsOfThermalNucleus(const G4double mu, const G4double vT_norm, const G4ThreeVector& aVelocity,
0117 G4ReactionProduct& result) const;
0118
0119 G4double Cinema( G4double kineticEnergy );
0120
0121 G4double EvaporationEffects( G4double kineticEnergy );
0122
0123 G4double AnnihilationEvaporationEffects(G4double kineticEnergy, G4double ekOrg);
0124
0125 inline G4double GetPNBlackTrackEnergy() const
0126 { return pnBlackTrackEnergy; }
0127
0128 inline G4double GetDTABlackTrackEnergy() const
0129 { return dtaBlackTrackEnergy; }
0130
0131 inline G4double GetAnnihilationPNBlackTrackEnergy() const
0132 { return pnBlackTrackEnergyfromAnnihilation; }
0133
0134 inline G4double GetAnnihilationDTABlackTrackEnergy() const
0135 { return dtaBlackTrackEnergyfromAnnihilation; }
0136
0137
0138
0139 G4ThreeVector GetFermiMomentum();
0140
0141
0142
0143
0144
0145
0146
0147
0148 G4ReactionProductVector* Fragmentate();
0149
0150
0151
0152 void AddExcitationEnergy(G4double anEnergy);
0153
0154
0155
0156 void AddMomentum(const G4ThreeVector aMomentum);
0157
0158
0159 G4double GetEnergyDeposit() {return excitationEnergy; }
0160
0161
0162
0163
0164
0165
0166 private:
0167
0168 G4int theA;
0169 G4int theZ;
0170 G4int theL;
0171 G4double aEff;
0172 G4double zEff;
0173
0174 const G4Isotope* fIsotope;
0175
0176 G4double pnBlackTrackEnergy;
0177
0178 G4double dtaBlackTrackEnergy;
0179
0180 G4double pnBlackTrackEnergyfromAnnihilation;
0181
0182
0183 G4double dtaBlackTrackEnergyfromAnnihilation;
0184
0185
0186
0187
0188
0189
0190 G4double excitationEnergy;
0191
0192
0193 G4ThreeVector momentum;
0194
0195
0196
0197
0198
0199
0200
0201 G4double fermiMomentum;
0202 G4double theTemp;
0203
0204
0205 };
0206
0207 #endif
0208