Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/inclxx/incl_physics/src/G4INCLNuclearPotentialConstant.cc

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/inclxx/incl_physics/src/G4INCLNuclearPotentialConstant.cc (Version 11.3.0) and /processes/hadronic/models/inclxx/incl_physics/src/G4INCLNuclearPotentialConstant.cc (Version 10.7.p3)


  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 // INCL++ intra-nuclear cascade model              26 // INCL++ intra-nuclear cascade model
 27 // Alain Boudard, CEA-Saclay, France               27 // Alain Boudard, CEA-Saclay, France
 28 // Joseph Cugnon, University of Liege, Belgium     28 // Joseph Cugnon, University of Liege, Belgium
 29 // Jean-Christophe David, CEA-Saclay, France       29 // Jean-Christophe David, CEA-Saclay, France
 30 // Pekka Kaitaniemi, CEA-Saclay, France, and H     30 // Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
 31 // Sylvie Leray, CEA-Saclay, France                31 // Sylvie Leray, CEA-Saclay, France
 32 // Davide Mancusi, CEA-Saclay, France              32 // Davide Mancusi, CEA-Saclay, France
 33 //                                                 33 //
 34 #define INCLXX_IN_GEANT4_MODE 1                    34 #define INCLXX_IN_GEANT4_MODE 1
 35                                                    35 
 36 #include "globals.hh"                              36 #include "globals.hh"
 37                                                    37 
 38 /** \file G4INCLNuclearPotentialConstant.cc        38 /** \file G4INCLNuclearPotentialConstant.cc
 39  * \brief Isospin- and energy-independent nucl     39  * \brief Isospin- and energy-independent nuclear potential.
 40  *                                                 40  *
 41  * Provides a constant nuclear potential (V0).     41  * Provides a constant nuclear potential (V0).
 42  *                                                 42  *
 43  * \date 17 January 2011                           43  * \date 17 January 2011
 44  * \author Davide Mancusi                          44  * \author Davide Mancusi
 45  */                                                45  */
 46                                                    46 
 47 #include "G4INCLNuclearPotentialConstant.hh"       47 #include "G4INCLNuclearPotentialConstant.hh"
 48 #include "G4INCLParticleTable.hh"                  48 #include "G4INCLParticleTable.hh"
 49                                                    49 
 50 namespace G4INCL {                                 50 namespace G4INCL {
 51                                                    51 
 52   namespace NuclearPotential {                     52   namespace NuclearPotential {
 53                                                    53 
 54     // Constructors                                54     // Constructors
 55     NuclearPotentialConstant::NuclearPotential     55     NuclearPotentialConstant::NuclearPotentialConstant(const G4int A, const G4int Z, const G4bool aPionPotential)
 56       : INuclearPotential(A, Z, aPionPotential     56       : INuclearPotential(A, Z, aPionPotential)
 57     {                                              57     {
 58       initialize();                                58       initialize();
 59     }                                              59     }
 60                                                    60 
 61     // Destructor                                  61     // Destructor
 62     NuclearPotentialConstant::~NuclearPotentia     62     NuclearPotentialConstant::~NuclearPotentialConstant() {
 63     }                                              63     }
 64                                                    64 
 65     void NuclearPotentialConstant::initialize(     65     void NuclearPotentialConstant::initialize() {
 66       const G4double mp = ParticleTable::getIN     66       const G4double mp = ParticleTable::getINCLMass(Proton);
 67       const G4double mn = ParticleTable::getIN     67       const G4double mn = ParticleTable::getINCLMass(Neutron);
 68                                                    68 
 69       const G4double theFermiMomentum = Partic     69       const G4double theFermiMomentum = ParticleTable::getFermiMomentum(theA,theZ);
 70                                                    70 
 71       fermiMomentum[Proton] = theFermiMomentum     71       fermiMomentum[Proton] = theFermiMomentum;
 72       const G4double theProtonFermiEnergy = st     72       const G4double theProtonFermiEnergy = std::sqrt(theFermiMomentum*theFermiMomentum + mp*mp) - mp;
 73       fermiEnergy[Proton] = theProtonFermiEner     73       fermiEnergy[Proton] = theProtonFermiEnergy;
 74                                                    74 
 75       fermiMomentum[Neutron] = theFermiMomentu     75       fermiMomentum[Neutron] = theFermiMomentum;
 76       const G4double theNeutronFermiEnergy = s     76       const G4double theNeutronFermiEnergy = std::sqrt(theFermiMomentum*theFermiMomentum + mn*mn) - mn;
 77       fermiEnergy[Neutron] = theNeutronFermiEn     77       fermiEnergy[Neutron] = theNeutronFermiEnergy;
 78                                                    78 
 79       fermiEnergy[DeltaPlusPlus] = fermiEnergy     79       fermiEnergy[DeltaPlusPlus] = fermiEnergy.find(Proton)->second;
 80       fermiEnergy[DeltaPlus] = fermiEnergy.fin     80       fermiEnergy[DeltaPlus] = fermiEnergy.find(Proton)->second;
 81       fermiEnergy[DeltaZero] = fermiEnergy.fin     81       fermiEnergy[DeltaZero] = fermiEnergy.find(Neutron)->second;
 82       fermiEnergy[DeltaMinus] = fermiEnergy.fi     82       fermiEnergy[DeltaMinus] = fermiEnergy.find(Neutron)->second;
 83                                                    83       
 84       fermiEnergy[SigmaPlus] = fermiEnergy.fin     84       fermiEnergy[SigmaPlus] = fermiEnergy.find(Proton)->second;
 85       fermiEnergy[SigmaZero] = fermiEnergy.fin     85       fermiEnergy[SigmaZero] = fermiEnergy.find(Proton)->second;
 86       fermiEnergy[SigmaMinus] = fermiEnergy.fi     86       fermiEnergy[SigmaMinus] = fermiEnergy.find(Proton)->second;
 87                                                    87       
 88       fermiEnergy[Lambda] = fermiEnergy.find(N     88       fermiEnergy[Lambda] = fermiEnergy.find(Neutron)->second;
 89                                                    89       
 90                                                    90 
 91       const G4double theAverageSeparationEnerg     91       const G4double theAverageSeparationEnergy = 0.5*(ParticleTable::getSeparationEnergy(Proton,theA,theZ)+ParticleTable::getSeparationEnergy(Neutron,theA,theZ));
 92       separationEnergy[Proton] = theAverageSep     92       separationEnergy[Proton] = theAverageSeparationEnergy;
 93       separationEnergy[Neutron] = theAverageSe     93       separationEnergy[Neutron] = theAverageSeparationEnergy;
 94                                                    94 
 95       // Use separation energies from the Part     95       // Use separation energies from the ParticleTable
 96       vNucleon = 0.5*(theProtonFermiEnergy + t     96       vNucleon = 0.5*(theProtonFermiEnergy + theNeutronFermiEnergy) + theAverageSeparationEnergy;
 97       vDelta = vNucleon;                           97       vDelta = vNucleon;
 98       vSigma = -16.; // Caution: repulsive pot     98       vSigma = -16.; // Caution: repulsive potential for Sigmas
 99       vLambda = 28.;                               99       vLambda = 28.;
100       separationEnergy[DeltaPlusPlus] = vDelta    100       separationEnergy[DeltaPlusPlus] = vDelta - fermiEnergy.find(DeltaPlusPlus)->second;
101       separationEnergy[DeltaPlus] = vDelta - f    101       separationEnergy[DeltaPlus] = vDelta - fermiEnergy.find(DeltaPlus)->second;
102       separationEnergy[DeltaZero] = vDelta - f    102       separationEnergy[DeltaZero] = vDelta - fermiEnergy.find(DeltaZero)->second;
103       separationEnergy[DeltaMinus] = vDelta -     103       separationEnergy[DeltaMinus] = vDelta - fermiEnergy.find(DeltaMinus)->second;
104                                                   104 
105       separationEnergy[PiPlus] = 0.;              105       separationEnergy[PiPlus] = 0.;
106       separationEnergy[PiZero] = 0.;              106       separationEnergy[PiZero] = 0.;
107       separationEnergy[PiMinus] = 0.;             107       separationEnergy[PiMinus] = 0.;
108                                                   108     
109     separationEnergy[Eta]      = 0.;              109     separationEnergy[Eta]      = 0.;
110     separationEnergy[Omega]    = 0.;              110     separationEnergy[Omega]    = 0.;
111     separationEnergy[EtaPrime] = 0.;              111     separationEnergy[EtaPrime] = 0.;
112     separationEnergy[Photon]   = 0.;              112     separationEnergy[Photon]   = 0.;
113                                                   113       
114       separationEnergy[Lambda]    = 0.;           114       separationEnergy[Lambda]    = 0.;
115       separationEnergy[SigmaPlus] = 0.;           115       separationEnergy[SigmaPlus] = 0.;
116       separationEnergy[SigmaZero] = 0.;           116       separationEnergy[SigmaZero] = 0.;
117       separationEnergy[SigmaMinus]  = 0.;         117       separationEnergy[SigmaMinus]  = 0.;
118       separationEnergy[KPlus]   = 0.;             118       separationEnergy[KPlus]   = 0.;
119       separationEnergy[KZero]   = 0.;             119       separationEnergy[KZero]   = 0.;
120       separationEnergy[KZeroBar]  = 0.;           120       separationEnergy[KZeroBar]  = 0.;
121       separationEnergy[KMinus]    = 0.;           121       separationEnergy[KMinus]    = 0.;
122       separationEnergy[KShort]    = 0.;           122       separationEnergy[KShort]    = 0.;
123       separationEnergy[KLong]   = 0.;             123       separationEnergy[KLong]   = 0.;
124                                                   124 
125       INCL_DEBUG("Table of separation energies    125       INCL_DEBUG("Table of separation energies [MeV] for A=" << theA << ", Z=" << theZ << ":" << '\n'
126             << "  proton:  " << separationEner    126             << "  proton:  " << separationEnergy[Proton] << '\n'
127             << "  neutron: " << separationEner    127             << "  neutron: " << separationEnergy[Neutron] << '\n'
128             << "  delta++: " << separationEner    128             << "  delta++: " << separationEnergy[DeltaPlusPlus] << '\n'
129             << "  delta+:  " << separationEner    129             << "  delta+:  " << separationEnergy[DeltaPlus] << '\n'
130             << "  delta0:  " << separationEner    130             << "  delta0:  " << separationEnergy[DeltaZero] << '\n'
131             << "  delta-:  " << separationEner    131             << "  delta-:  " << separationEnergy[DeltaMinus] << '\n'
132             << "  pi+:     " << separationEner    132             << "  pi+:     " << separationEnergy[PiPlus] << '\n'
133             << "  pi0:     " << separationEner    133             << "  pi0:     " << separationEnergy[PiZero] << '\n'
134       << "  pi-:     " << separationEnergy[PiM    134       << "  pi-:     " << separationEnergy[PiMinus] << '\n'
135       << "  eta:     " << separationEnergy[Eta    135       << "  eta:     " << separationEnergy[Eta] << '\n'
136       << "  omega:   " << separationEnergy[Ome    136       << "  omega:   " << separationEnergy[Omega] << '\n'
137       << "  etaprime:" << separationEnergy[Eta    137       << "  etaprime:" << separationEnergy[EtaPrime] << '\n'
138       << "  photon:  " << separationEnergy[Pho    138       << "  photon:  " << separationEnergy[Photon] << '\n'
139             << "  lambda:  " << separationEner    139             << "  lambda:  " << separationEnergy[Lambda] << '\n'
140             << "  sigmaplus:  " << separationE    140             << "  sigmaplus:  " << separationEnergy[SigmaPlus] << '\n'
141             << "  sigmazero:  " << separationE    141             << "  sigmazero:  " << separationEnergy[SigmaZero] << '\n'
142             << "  sigmaminus:  " << separation    142             << "  sigmaminus:  " << separationEnergy[SigmaMinus] << '\n'
143             << "  kplus:  " << separationEnerg    143             << "  kplus:  " << separationEnergy[KPlus] << '\n'
144             << "  kzero:  " << separationEnerg    144             << "  kzero:  " << separationEnergy[KZero] << '\n'
145             << "  kzerobar:  " << separationEn    145             << "  kzerobar:  " << separationEnergy[KZeroBar] << '\n'
146             << "  kminus:  " << separationEner    146             << "  kminus:  " << separationEnergy[KMinus] << '\n'
147             << "  kshort:  " << separationEner    147             << "  kshort:  " << separationEnergy[KShort] << '\n'
148             << "  klong:  " << separationEnerg    148             << "  klong:  " << separationEnergy[KLong] << '\n'
149             );                                    149             );
150                                                   150 
151       INCL_DEBUG("Table of Fermi energies [MeV    151       INCL_DEBUG("Table of Fermi energies [MeV] for A=" << theA << ", Z=" << theZ << ":" << '\n'
152             << "  proton:  " << fermiEnergy[Pr    152             << "  proton:  " << fermiEnergy[Proton] << '\n'
153             << "  neutron: " << fermiEnergy[Ne    153             << "  neutron: " << fermiEnergy[Neutron] << '\n'
154             << "  delta++: " << fermiEnergy[De    154             << "  delta++: " << fermiEnergy[DeltaPlusPlus] << '\n'
155             << "  delta+:  " << fermiEnergy[De    155             << "  delta+:  " << fermiEnergy[DeltaPlus] << '\n'
156             << "  delta0:  " << fermiEnergy[De    156             << "  delta0:  " << fermiEnergy[DeltaZero] << '\n'
157             << "  delta-:  " << fermiEnergy[De    157             << "  delta-:  " << fermiEnergy[DeltaMinus] << '\n'
158             << "  lambda:  " << fermiEnergy[La    158             << "  lambda:  " << fermiEnergy[Lambda] << '\n'
159             << "  sigmaplus:  " << fermiEnergy    159             << "  sigmaplus:  " << fermiEnergy[SigmaPlus] << '\n'
160             << "  sigmazero:  " << fermiEnergy    160             << "  sigmazero:  " << fermiEnergy[SigmaZero] << '\n'
161             << "  sigmaminus:  " << fermiEnerg    161             << "  sigmaminus:  " << fermiEnergy[SigmaMinus] << '\n'
162             );                                    162             );
163                                                   163 
164       INCL_DEBUG("Table of Fermi momenta [MeV/    164       INCL_DEBUG("Table of Fermi momenta [MeV/c] for A=" << theA << ", Z=" << theZ << ":" << '\n'
165             << "  proton:  " << fermiMomentum[    165             << "  proton:  " << fermiMomentum[Proton] << '\n'
166             << "  neutron: " << fermiMomentum[    166             << "  neutron: " << fermiMomentum[Neutron] << '\n'
167             );                                    167             );
168     }                                             168     }
169                                                   169 
170     G4double NuclearPotentialConstant::compute    170     G4double NuclearPotentialConstant::computePotentialEnergy(const Particle *particle) const {
171                                                   171 
172       switch( particle->getType() )               172       switch( particle->getType() )
173       {                                           173       {
174         case Proton:                              174         case Proton:
175         case Neutron:                             175         case Neutron:
176           return vNucleon;                        176           return vNucleon;
177           break;                                  177           break;
178                                                   178 
179         case PiPlus:                              179         case PiPlus:
180         case PiZero:                              180         case PiZero:
181         case PiMinus:                             181         case PiMinus:
182           return computePionPotentialEnergy(pa    182           return computePionPotentialEnergy(particle);
183           break;                                  183           break;
184                                                   184 
185         case Eta:                                 185         case Eta:
186         case Omega:                               186         case Omega:
187     case EtaPrime:                                187     case EtaPrime:
188           return computePionResonancePotential    188           return computePionResonancePotentialEnergy(particle);
189           break;                                  189           break;
190                                                   190         
191         case SigmaPlus:                           191         case SigmaPlus:
192         case SigmaZero:                           192         case SigmaZero:
193         case SigmaMinus:                          193         case SigmaMinus:
194           return vSigma;                          194           return vSigma;
195           break;                                  195           break;
196         case Lambda:                              196         case Lambda:
197           return vLambda;                         197           return vLambda;
198           break;                                  198           break;
199                                                   199 
200         case KPlus:                               200         case KPlus:
201         case KZero:                               201         case KZero:
202         case KZeroBar:                            202         case KZeroBar:
203         case KMinus:                              203         case KMinus:
204           return computeKaonPotentialEnergy(pa    204           return computeKaonPotentialEnergy(particle);
205           break;                                  205           break;
206                                                   206         
207     case Photon:                                  207     case Photon:
208       return 0.0;                                 208       return 0.0;
209       break;                                      209       break;
210                                                   210 
211     case DeltaPlusPlus:                           211     case DeltaPlusPlus:
212         case DeltaPlus:                           212         case DeltaPlus:
213         case DeltaZero:                           213         case DeltaZero:
214         case DeltaMinus:                          214         case DeltaMinus:
215           return vDelta;                          215           return vDelta;
216           break;                                  216           break;
217         case UnknownParticle:                     217         case UnknownParticle:
218           INCL_ERROR("Trying to compute potent    218           INCL_ERROR("Trying to compute potential energy of an unknown particle.");
219           return 0.0;                             219           return 0.0;
220           break;                                  220           break;
221         default:                                  221         default:
222           INCL_ERROR("Trying to compute potent    222           INCL_ERROR("Trying to compute potential energy of a malformed particle.");
223           return 0.0;                             223           return 0.0;
224           break;                                  224           break;
225       }                                           225       }
226     }                                             226     }
227                                                   227 
228   }                                               228   }
229 }                                                 229 }
230                                                   230 
231                                                   231