Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.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 /processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh (Version 11.3.0) and /processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh (Version 10.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 //                                                 26 //
                                                   >>  27 // $Id: G4CompetitiveFission.hh 89550 2015-04-17 08:38:15Z gcosmo $
 27 //                                                 28 //
 28 // Hadronic Process: Nuclear De-excitations        29 // Hadronic Process: Nuclear De-excitations
 29 // by V. Lara (Oct 1998)                           30 // by V. Lara (Oct 1998)
 30                                                    31 
 31 #ifndef G4CompetitiveFission_h                     32 #ifndef G4CompetitiveFission_h
 32 #define G4CompetitiveFission_h 1                   33 #define G4CompetitiveFission_h 1
 33                                                    34 
 34 #include "G4VEvaporationChannel.hh"                35 #include "G4VEvaporationChannel.hh"
 35 #include "G4Fragment.hh"                           36 #include "G4Fragment.hh"
                                                   >>  37 #include "G4VFissionBarrier.hh"
                                                   >>  38 #include "G4FissionBarrier.hh"
 36 #include "G4VEmissionProbability.hh"               39 #include "G4VEmissionProbability.hh"
                                                   >>  40 #include "G4FissionProbability.hh"
                                                   >>  41 #include "G4VLevelDensityParameter.hh"
                                                   >>  42 #include "G4FissionLevelDensityParameter.hh"
 37 #include "G4FissionParameters.hh"                  43 #include "G4FissionParameters.hh"
                                                   >>  44 #include "Randomize.hh"
 38 #include <CLHEP/Units/SystemOfUnits.h>             45 #include <CLHEP/Units/SystemOfUnits.h>
 39 #include "G4Exp.hh"                            << 
 40                                                << 
 41 class G4VFissionBarrier;                       << 
 42 class G4VEmissionProbability;                  << 
 43 class G4VLevelDensityParameter;                << 
 44 class G4PairingCorrection;                     << 
 45                                                    46 
 46 class G4CompetitiveFission : public G4VEvapora     47 class G4CompetitiveFission : public G4VEvaporationChannel
 47 {                                                  48 {
 48 public:                                            49 public:
 49                                                    50   
 50   G4CompetitiveFission();                          51   G4CompetitiveFission();
 51   ~G4CompetitiveFission() override;            <<  52   virtual ~G4CompetitiveFission();
 52                                                    53 
 53   void Initialise() override;                  <<  54   virtual G4FragmentVector * BreakUp(const G4Fragment &theNucleus);
 54                                                <<  55 
 55   G4Fragment* EmittedFragment(G4Fragment* theN <<  56   virtual G4Fragment* EmittedFragment(G4Fragment* theNucleus);
 56                                                    57 
 57   G4double GetEmissionProbability(G4Fragment*  <<  58   virtual G4double GetEmissionProbability(G4Fragment* theNucleus);
 58                                                    59 
 59   void SetFissionBarrier(G4VFissionBarrier * a <<  60   inline void SetFissionBarrier(G4VFissionBarrier * aBarrier);
 60                                                    61 
 61   void SetEmissionStrategy(G4VEmissionProbabil <<  62   inline void SetEmissionStrategy(G4VEmissionProbability * aFissionProb);
 62                                                    63 
 63   void SetLevelDensityParameter(G4VLevelDensit <<  64   inline void SetLevelDensityParameter(G4VLevelDensityParameter * aLevelDensity);
 64                                                    65 
 65   inline G4double GetFissionBarrier(void) cons     66   inline G4double GetFissionBarrier(void) const;
 66                                                    67 
 67   inline G4double GetLevelDensityParameter(voi     68   inline G4double GetLevelDensityParameter(void) const;
 68                                                    69 
 69   inline G4double GetMaximalKineticEnergy(void     70   inline G4double GetMaximalKineticEnergy(void) const;
 70                                                    71 
 71   G4CompetitiveFission(const G4CompetitiveFiss << 
 72   const G4CompetitiveFission & operator=(const << 
 73   G4bool operator==(const G4CompetitiveFission << 
 74   G4bool operator!=(const G4CompetitiveFission << 
 75                                                << 
 76 private:                                           72 private:
 77                                                    73 
 78   // Sample AtomicNumber of Fission products       74   // Sample AtomicNumber of Fission products
 79   G4int FissionAtomicNumber(G4int A);              75   G4int FissionAtomicNumber(G4int A);
 80                                                    76 
 81   G4double MassDistribution(G4double x, G4int      77   G4double MassDistribution(G4double x, G4int A);
 82                                                    78 
 83   // Sample Charge of fission products             79   // Sample Charge of fission products
 84   G4int FissionCharge(G4int A, G4int Z, G4doub     80   G4int FissionCharge(G4int A, G4int Z, G4double Af);
 85                                                    81 
 86   // Sample Kinetic energy of fission products     82   // Sample Kinetic energy of fission products
 87   G4double FissionKineticEnergy(G4int A, G4int     83   G4double FissionKineticEnergy(G4int A, G4int Z,
 88         G4int Af1, G4int Zf1,                      84         G4int Af1, G4int Zf1,
 89         G4int Af2, G4int Zf2,                      85         G4int Af2, G4int Zf2,
 90         G4double U, G4double Tmax);                86         G4double U, G4double Tmax);
 91                                                    87     
 92   inline G4double Ratio(G4double A, G4double A <<  88   inline G4double Ratio(G4double A, G4double A11, G4double B1, G4double A00);
 93                         G4double B1, G4double  <<  89 
                                                   >>  90   inline G4double SymmetricRatio(G4int A, G4double A11);
 94                                                    91 
 95   inline G4double SymmetricRatio(G4int A, G4do <<  92   inline G4double AsymmetricRatio(G4int A, G4double A11);
 96                                                    93 
 97   inline G4double AsymmetricRatio(G4int A, G4d <<  94   inline G4ThreeVector IsotropicVector(G4double Magnitude);
 98                                                    95 
 99   inline G4double LocalExp(G4double x) const;  <<  96   G4CompetitiveFission(const G4CompetitiveFission &right);
                                                   >>  97   const G4CompetitiveFission & operator=(const G4CompetitiveFission &right);
                                                   >>  98   G4bool operator==(const G4CompetitiveFission &right) const;
                                                   >>  99   G4bool operator!=(const G4CompetitiveFission &right) const;
100                                                   100 
101   // Maximal Kinetic Energy that can be carrie    101   // Maximal Kinetic Energy that can be carried by fragment
102   G4double maxKineticEnergy{0.0};              << 102   G4double MaximalKineticEnergy;
103   G4double fissionBarrier{0.0};                << 
104   G4double fissionProbability{0.0};            << 
105   G4double fFactor{1.0};                       << 
106                                                   103 
107   // For Fission barrier                          104   // For Fission barrier
108   G4VFissionBarrier* theFissionBarrierPtr;     << 105   G4VFissionBarrier * theFissionBarrierPtr;
                                                   >> 106   G4double FissionBarrier;
                                                   >> 107   G4bool MyOwnFissionBarrier;
109                                                   108 
110   // For Fission probability emission             109   // For Fission probability emission
111   G4VEmissionProbability* theFissionProbabilit << 110   G4VEmissionProbability * theFissionProbabilityPtr;
                                                   >> 111   G4double FissionProbability;
                                                   >> 112   G4bool MyOwnFissionProbability;
112                                                   113 
113   // For Level Density calculation                114   // For Level Density calculation
114   G4VLevelDensityParameter* theLevelDensityPtr << 115   G4bool MyOwnLevelDensity;
115   G4PairingCorrection* pairingCorrection;      << 116   G4VLevelDensityParameter * theLevelDensityPtr;
                                                   >> 117   G4double LevelDensityParameter;
116                                                   118 
117   G4bool myOwnFissionProbability{true};        << 119   G4PairingCorrection* pairingCorrection;
118   G4bool myOwnFissionBarrier{true};            << 
119   G4bool myOwnLevelDensity{true};              << 
120                                                   120 
121   G4FissionParameters theParam;                   121   G4FissionParameters theParam;
122                                                << 122 
123   G4int theSecID;  // Creator model ID for the << 
124   G4bool isInitialised{false};                 << 
125 };                                                123 };
126                                                   124 
                                                   >> 125 inline void G4CompetitiveFission::SetFissionBarrier(G4VFissionBarrier * aBarrier)
                                                   >> 126 {
                                                   >> 127   if (MyOwnFissionBarrier) delete theFissionBarrierPtr;
                                                   >> 128   theFissionBarrierPtr = aBarrier;
                                                   >> 129   MyOwnFissionBarrier = false;
                                                   >> 130 }
                                                   >> 131 
                                                   >> 132 inline void 
                                                   >> 133 G4CompetitiveFission::SetEmissionStrategy(G4VEmissionProbability * aFissionProb)
                                                   >> 134 {
                                                   >> 135   if (MyOwnFissionProbability) delete theFissionProbabilityPtr;
                                                   >> 136   theFissionProbabilityPtr = aFissionProb;
                                                   >> 137   MyOwnFissionProbability = false;
                                                   >> 138 }
                                                   >> 139 
                                                   >> 140 inline void 
                                                   >> 141 G4CompetitiveFission::SetLevelDensityParameter(G4VLevelDensityParameter* aLevelDensity)
                                                   >> 142 { 
                                                   >> 143   if (MyOwnLevelDensity) delete theLevelDensityPtr;
                                                   >> 144   theLevelDensityPtr = aLevelDensity;
                                                   >> 145   MyOwnLevelDensity = false;
                                                   >> 146 }
                                                   >> 147 
127 inline G4double G4CompetitiveFission::GetFissi    148 inline G4double G4CompetitiveFission::GetFissionBarrier(void) const 
128 {                                                 149 { 
129   return fissionBarrier;                       << 150   return FissionBarrier; 
                                                   >> 151 }
                                                   >> 152 
                                                   >> 153 inline G4double G4CompetitiveFission::GetLevelDensityParameter(void) const 
                                                   >> 154 { 
                                                   >> 155   return LevelDensityParameter; 
130 }                                                 156 }
131                                                   157 
132 inline G4double G4CompetitiveFission::GetMaxim    158 inline G4double G4CompetitiveFission::GetMaximalKineticEnergy(void) const 
133 {                                                 159 { 
134   return maxKineticEnergy;                     << 160   return MaximalKineticEnergy; 
135 }                                                 161 }
136                                                   162 
137 inline                                            163 inline
138 G4double G4CompetitiveFission::Ratio(G4double     164 G4double G4CompetitiveFission::Ratio(G4double A, G4double A11,
139              G4double B1, G4double A00) const  << 165              G4double B1, G4double A00) 
140 {                                                 166 {
141   G4double res;                                   167   G4double res;
142   if (A11 >= A*0.5 && A11 <= (A00+10.0)) {        168   if (A11 >= A*0.5 && A11 <= (A00+10.0)) {
143     G4double x = (A11-A00)/A;                     169     G4double x = (A11-A00)/A;
144     res = 1.0 - B1*x*x;                           170     res = 1.0 - B1*x*x;
145   } else {                                        171   } else {
146     G4double x = 10.0/A;                          172     G4double x = 10.0/A;
147     res = 1.0 - B1*x*x - 2.0*x*B1*(A11-A00-10.    173     res = 1.0 - B1*x*x - 2.0*x*B1*(A11-A00-10.0)/A;
148   }                                               174   }
149   return res;                                     175   return res;
150 }                                                 176 }
151                                                   177 
152 inline                                            178 inline
153 G4double G4CompetitiveFission::AsymmetricRatio << 179 G4double G4CompetitiveFission::AsymmetricRatio(G4int A, G4double A11)
154 {                                                 180 {
155   return Ratio(G4double(A),A11,23.5,134.0);       181   return Ratio(G4double(A),A11,23.5,134.0);
156 }                                                 182 }
157                                                   183 
158 inline                                            184 inline
159 G4double G4CompetitiveFission::SymmetricRatio( << 185 G4double G4CompetitiveFission::SymmetricRatio(G4int A, G4double A11)
160 {                                                 186 {
161   G4double A0 = G4double(A);                      187   G4double A0 = G4double(A);
162   return Ratio(A0,A11,5.32,A0*0.5);               188   return Ratio(A0,A11,5.32,A0*0.5);
163 }                                                 189 }
164                                                   190 
165 inline G4double G4CompetitiveFission::LocalExp << 191 inline
                                                   >> 192 G4ThreeVector G4CompetitiveFission::IsotropicVector(G4double Magnitude)
166 {                                                 193 {
167   return (std::abs(x) < 8.) ? G4Exp(-0.5*x*x)  << 194   G4double CosTheta = 1.0 - 2.0*G4UniformRand();
                                                   >> 195   G4double SinTheta = std::sqrt(1.0 - CosTheta*CosTheta);
                                                   >> 196   G4double Phi = CLHEP::twopi*G4UniformRand();
                                                   >> 197   G4ThreeVector Vector(Magnitude*std::cos(Phi)*SinTheta,
                                                   >> 198            Magnitude*std::sin(Phi)*SinTheta,
                                                   >> 199            Magnitude*CosTheta);
                                                   >> 200   return Vector;
168 }                                                 201 }
169                                                   202 
170 #endif                                            203 #endif
171                                                   204 
172                                                   205 
173                                                   206