Changeset 1228 for trunk/source/processes/hadronic/cross_sections
- Timestamp:
- Jan 8, 2010, 11:56:51 AM (16 years ago)
- Location:
- trunk/source/processes/hadronic/cross_sections
- Files:
-
- 45 edited
-
History (modified) (1 diff)
-
include/G4BGGNucleonElasticXS.hh (modified) (1 diff)
-
include/G4BGGNucleonInelasticXS.hh (modified) (1 diff)
-
include/G4BGGPionElasticXS.hh (modified) (1 diff)
-
include/G4BGGPionInelasticXS.hh (modified) (1 diff)
-
include/G4CrossSectionDataSetRegistry.hh (modified) (1 diff)
-
include/G4CrossSectionDataStore.hh (modified) (1 diff)
-
include/G4ElectroNuclearCrossSection.hh (modified) (1 diff)
-
include/G4GGNuclNuclCrossSection.hh (modified) (2 diffs)
-
include/G4GlauberGribovCrossSection.hh (modified) (1 diff)
-
include/G4HadronCrossSections.hh (modified) (1 diff)
-
include/G4HadronNucleonXsc.hh (modified) (2 diffs)
-
include/G4NeutronCaptureXS.hh (modified) (1 diff)
-
include/G4NeutronElasticXS.hh (modified) (1 diff)
-
include/G4NeutronInelasticCrossSection.hh (modified) (3 diffs)
-
include/G4NeutronInelasticXS.hh (modified) (1 diff)
-
include/G4PhotoNuclearCrossSection.hh (modified) (1 diff)
-
include/G4PiNuclearCrossSection.hh (modified) (2 diffs)
-
include/G4ProtonInelasticCrossSection.hh (modified) (3 diffs)
-
include/G4VCrossSectionDataSet.hh (modified) (1 diff)
-
src/G4BGGNucleonElasticXS.cc (modified) (3 diffs)
-
src/G4BGGNucleonInelasticXS.cc (modified) (3 diffs)
-
src/G4BGGPionElasticXS.cc (modified) (2 diffs)
-
src/G4BGGPionInelasticXS.cc (modified) (2 diffs)
-
src/G4CrossSectionDataSetRegistry.cc (modified) (4 diffs)
-
src/G4CrossSectionDataStore.cc (modified) (1 diff)
-
src/G4ElectroNuclearCrossSection.cc (modified) (1 diff)
-
src/G4GGNuclNuclCrossSection.cc (modified) (4 diffs)
-
src/G4GlauberGribovCrossSection.cc (modified) (8 diffs)
-
src/G4HadronCaptureDataSet.cc (modified) (1 diff)
-
src/G4HadronCrossSections.cc (modified) (1 diff)
-
src/G4HadronElasticDataSet.cc (modified) (1 diff)
-
src/G4HadronFissionDataSet.cc (modified) (1 diff)
-
src/G4HadronInelasticDataSet.cc (modified) (1 diff)
-
src/G4HadronNucleonXsc.cc (modified) (1 diff)
-
src/G4NeutronCaptureXS.cc (modified) (1 diff)
-
src/G4NeutronElasticXS.cc (modified) (1 diff)
-
src/G4NeutronInelasticCrossSection.cc (modified) (2 diffs)
-
src/G4NeutronInelasticXS.cc (modified) (1 diff)
-
src/G4PhotoNuclearCrossSection.cc (modified) (1 diff)
-
src/G4PiData.cc (modified) (1 diff)
-
src/G4PiNuclearCrossSection.cc (modified) (8 diffs)
-
src/G4ProtonInelasticCrossSection.cc (modified) (1 diff)
-
src/G4TripathiLightCrossSection.cc (modified) (4 diffs)
-
src/G4VCrossSectionDataSet.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/cross_sections/History
r1196 r1228 14 14 * Please list in reverse chronological order (last date on top) 15 15 --------------------------------------------------------------- 16 17 9 Dec 2009 Gunter Folger (hadr-cross-V09-02-18) 18 ------------------------------------------------------------ 19 - G4TripathiLightCrossSection.cc modified by Macrus Mendenhall: 20 - re-enable low energy check code, but without creating new instances of 21 G4TripathiLightCrossSection 22 23 2 Dec 2009 Vladimir Ivanchenko (hadr-cross-V09-02-17) 24 ------------------------------------------------------------ 25 - G4CrossSectionDataSetRegistry - more accurate cross section deletion 26 27 25 Nov 2009 Gunter Folger (hadr-cross-V09-02-16) 28 ------------------------------------------------------------ 29 - modify upper limit of validity to 100 TeV in 30 G4NeutronInelasticCrossSection, G4ProtonInelasticCrossSection, 31 and G4PiNuclearCrossSection 32 Use constant cross section above original range 33 34 23 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-15) 35 ------------------------------------------------------------ 36 - fixed mistake in previous tag 16 37 17 38 20 Nov 2009 Vladimir Ivanchenko (hadr-cross-V09-02-14) -
trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonElasticXS.hh
r1196 r1228 25 25 // 26 26 // $Id: G4BGGNucleonElasticXS.hh,v 1.5 2009/11/19 11:41:30 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonInelasticXS.hh
r1196 r1228 25 25 // 26 26 // $Id: G4BGGNucleonInelasticXS.hh,v 1.6 2009/11/19 11:44:46 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4BGGPionElasticXS.hh
r1196 r1228 25 25 // 26 26 // $Id: G4BGGPionElasticXS.hh,v 1.5 2009/11/19 11:46:13 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4BGGPionInelasticXS.hh
r1196 r1228 25 25 // 26 26 // $Id: G4BGGPionInelasticXS.hh,v 1.5 2009/11/19 11:47:19 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4CrossSectionDataSetRegistry.hh
r1196 r1228 25 25 // 26 26 // $Id: G4CrossSectionDataSetRegistry.hh,v 1.3 2009/08/08 16:21:31 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh
r1196 r1228 25 25 // 26 26 // $Id: G4CrossSectionDataStore.hh,v 1.14 2009/01/24 11:54:47 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh
r1196 r1228 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -
trunk/source/processes/hadronic/cross_sections/include/G4GGNuclNuclCrossSection.hh
r1055 r1228 92 92 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4double At, G4double Zt); 93 93 94 95 96 97 94 // G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*); 98 95 // G4double GetHadronNucleonXscNS(const G4DynamicParticle*,G4double At, G4double Zt); 99 96 100 101 102 103 97 G4double GetHadronNucleonXscNS(G4ParticleDefinition*,G4double pTkin, G4ParticleDefinition*); 104 105 106 107 108 109 110 98 111 99 // G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*); … … 113 101 114 102 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt); 115 116 G4double GetHadronNucleonXscMK(G4ParticleDefinition* pParticle, G4double pTkin,117 G4ParticleDefinition* nucleon );118 103 119 104 G4double CalculateEcmValue ( const G4double , const G4double , const G4double ); -
trunk/source/processes/hadronic/cross_sections/include/G4GlauberGribovCrossSection.hh
r962 r1228 98 98 G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt); 99 99 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt); 100 G4double GetHadronNucleonXscMK(const G4DynamicParticle* aParticle,101 const G4ParticleDefinition* nucleon );102 100 103 101 G4double CalculateEcmValue ( const G4double , const G4double , const G4double ); -
trunk/source/processes/hadronic/cross_sections/include/G4HadronCrossSections.hh
r1196 r1228 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -
trunk/source/processes/hadronic/cross_sections/include/G4HadronNucleonXsc.hh
r819 r1228 61 61 G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4double A); 62 62 63 64 65 66 63 virtual 67 64 void DumpPhysicsTable(const G4ParticleDefinition&) … … 77 74 78 75 G4double GetHadronNucleonXscVU(const G4DynamicParticle*, const G4ParticleDefinition*); 79 80 G4double GetHadronNucleonXscMK(const G4DynamicParticle*, const G4ParticleDefinition*);81 76 82 77 // kinematics and set/get -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronCaptureXS.hh
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronCaptureXS.hh,v 1.1 2009/11/12 00:36:01 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronElasticXS.hh
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronElasticXS.hh,v 1.3 2009/11/19 11:51:46 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticCrossSection.hh
r819 r1228 26 26 // by JPW, working, but to be cleaned up. @@@@ 27 27 // D. Wright, 23-Dec-2006 Added isotope dependence 28 // G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV 28 29 // 29 30 … … 51 52 G4bool result = false; 52 53 if(( aPart->GetDefinition()==G4Neutron::Neutron()) && 53 ( aPart->GetKineticEnergy()< 20*GeV) &&54 ( aPart->GetKineticEnergy()<100*TeV) && 54 55 aPart->GetKineticEnergy()>19.9*MeV) result = true; 55 56 if(aEle->GetZ()<2) result = false; … … 62 63 G4bool result = false; 63 64 if(( aPart->GetDefinition() == G4Neutron::Neutron()) && 64 ( aPart->GetKineticEnergy() < 20*GeV) &&65 ( aPart->GetKineticEnergy() < 100*TeV) && 65 66 aPart->GetKineticEnergy() > 19.9*MeV) result = true; 66 67 if(ZZ < 2) result = false; -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticXS.hh
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronInelasticXS.hh,v 1.3 2009/11/19 11:52:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/include/G4PhotoNuclearCrossSection.hh
r1196 r1228 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -
trunk/source/processes/hadronic/cross_sections/include/G4PiNuclearCrossSection.hh
r819 r1228 48 48 if(aParticle->GetDefinition() == G4PionPlus::PionPlus()) result=true; 49 49 if(G4lrint(anElement->GetZ()) == 1) result = false; 50 if(aParticle->GetKineticEnergy() > 99 9.9*GeV) result=false;50 if(aParticle->GetKineticEnergy() > 99.9*TeV) result=false; 51 51 return result; 52 52 } … … 59 59 if(particle->GetDefinition() == G4PionPlus::PionPlus()) result=true; 60 60 if(G4lrint(ZZ) == 1) result = false; 61 if(particle->GetKineticEnergy() > 99 9.9*GeV) result=false;61 if(particle->GetKineticEnergy() > 99.9*TeV) result=false; 62 62 return result; 63 63 } -
trunk/source/processes/hadronic/cross_sections/include/G4ProtonInelasticCrossSection.hh
r819 r1228 27 27 // G.Folger, 29-sept-2006: extend to 1TeV, using a constant above 20GeV 28 28 // D. Wright, 23-Dec-2006: added isotope dependence 29 // G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV 29 30 // 30 31 … … 56 57 G4bool result = false; 57 58 if(( aPart->GetDefinition()==G4Proton::Proton()) && 58 ( aPart->GetKineticEnergy()<1 *TeV) ) result = true;59 ( aPart->GetKineticEnergy()<100*TeV) ) result = true; 59 60 if(aEle->GetZ()<3) result = false; 60 61 return result; … … 66 67 G4bool result = false; 67 68 if (( aParticle->GetDefinition() == G4Proton::Proton()) && 68 ( aParticle->GetKineticEnergy() < 1 *TeV) ) result = true;69 ( aParticle->GetKineticEnergy() < 100*TeV) ) result = true; 69 70 if (ZZ < 3) result = false; 70 71 return result; -
trunk/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh
r1196 r1228 25 25 // 26 26 // $Id: G4VCrossSectionDataSet.hh,v 1.13 2009/01/24 11:54:47 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4BGGNucleonElasticXS.cc
r1196 r1228 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGNucleonElasticXS.cc,v 1. 5 2009/11/19 12:30:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-03 -cand-01$26 // $Id: G4BGGNucleonElasticXS.cc,v 1.7 2009/11/19 19:40:45 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 93 93 } else if(iz == 1) { 94 94 if( A < 1.5) { 95 //fHadron->GetHadronNucleonXscPDG(dp, G4Proton::Proton()); 96 //fHadron->GetHadronNucleonXscEL(dp, G4Proton::Proton()); 97 //fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 98 fHadron->GetHadronNucleonXscMK(dp, G4Proton::Proton()); 95 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 99 96 cross = fHadron->GetElasticHadronNucleonXsc(); 100 97 } else { 101 fHadron->GetHadronNucleonXsc MK(dp, G4Proton::Proton());98 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 102 99 cross = fHadron->GetElasticHadronNucleonXsc(); 103 fHadron->GetHadronNucleonXsc MK(dp, G4Neutron::Neutron());100 fHadron->GetHadronNucleonXscNS(dp, G4Neutron::Neutron()); 104 101 cross += fHadron->GetElasticHadronNucleonXsc(); 105 102 } … … 180 177 } 181 178 dp.SetKineticEnergy(fLowEnergy); 182 fHadron->GetHadronNucleonXsc MK(&dp, G4Proton::Proton());179 fHadron->GetHadronNucleonXscNS(&dp, G4Proton::Proton()); 183 180 theCoulombFac[1] = fHadron->GetElasticHadronNucleonXsc(); 184 181 if(isProton) { theCoulombFac[1] /= CoulombFactor(fLowEnergy, 1.0); } -
trunk/source/processes/hadronic/cross_sections/src/G4BGGNucleonInelasticXS.cc
r1196 r1228 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGNucleonInelasticXS.cc,v 1. 5 2009/11/19 12:28:56vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-03 -cand-01$26 // $Id: G4BGGNucleonInelasticXS.cc,v 1.7 2009/11/19 19:40:45 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 91 91 } else if(iz == 1) { 92 92 if( A < 1.5) { 93 //fHadron->GetHadronNucleonXscPDG(dp, G4Proton::Proton()); 94 //fHadron->GetHadronNucleonXscEL(dp, G4Proton::Proton()); 95 //fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 96 //fHadron->GetHadronNucleonXscVU(dp, G4Proton::Proton()); 97 fHadron->GetHadronNucleonXscMK(dp, G4Proton::Proton()); 93 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 98 94 cross = fHadron->GetInelasticHadronNucleonXsc(); 99 95 } else { 100 fHadron->GetHadronNucleonXsc MK(dp, G4Proton::Proton());96 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 101 97 cross = fHadron->GetInelasticHadronNucleonXsc(); 102 fHadron->GetHadronNucleonXsc MK(dp, G4Neutron::Neutron());98 fHadron->GetHadronNucleonXscNS(dp, G4Neutron::Neutron()); 103 99 cross += fHadron->GetInelasticHadronNucleonXsc(); 104 100 } … … 180 176 } 181 177 dp.SetKineticEnergy(fLowEnergy); 182 fHadron->GetHadronNucleonXsc MK(&dp, G4Proton::Proton());178 fHadron->GetHadronNucleonXscNS(&dp, G4Proton::Proton()); 183 179 theCoulombFac[1] = 184 180 fHadron->GetInelasticHadronNucleonXsc()/CoulombFactor(fLowEnergy,1.0); -
trunk/source/processes/hadronic/cross_sections/src/G4BGGPionElasticXS.cc
r1196 r1228 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGPionElasticXS.cc,v 1. 5 2009/11/19 12:27:22vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-03 -cand-01$26 // $Id: G4BGGPionElasticXS.cc,v 1.7 2009/11/19 19:40:45 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 93 93 } else if(iz == 1) { 94 94 if( A < 1.5) { 95 //fHadron->GetHadronNucleonXscPDG(dp, G4Proton::Proton());96 //fHadron->GetHadronNucleonXscEL(dp, G4Proton::Proton());97 95 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 98 //fHadron->GetHadronNucleonXscVU(dp, G4Proton::Proton());99 //fHadron->GetHadronNucleonXscMK(dp, G4Proton::Proton());100 96 cross = fHadron->GetElasticHadronNucleonXsc(); 101 97 } else { -
trunk/source/processes/hadronic/cross_sections/src/G4BGGPionInelasticXS.cc
r1196 r1228 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGPionInelasticXS.cc,v 1. 6 2009/11/19 12:24:41vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-03 -cand-01$26 // $Id: G4BGGPionInelasticXS.cc,v 1.8 2009/11/19 19:40:45 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 94 94 95 95 if( A < 1.5) { 96 fHadron->GetHadronNucleonXsc MK(dp, G4Proton::Proton());96 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 97 97 cross = fHadron->GetInelasticHadronNucleonXsc(); 98 98 } else { 99 fHadron->GetHadronNucleonXsc MK(dp, G4Proton::Proton());99 fHadron->GetHadronNucleonXscNS(dp, G4Proton::Proton()); 100 100 cross = fHadron->GetInelasticHadronNucleonXsc(); 101 fHadron->GetHadronNucleonXsc MK(dp, G4Neutron::Neutron());101 fHadron->GetHadronNucleonXscNS(dp, G4Neutron::Neutron()); 102 102 cross += fHadron->GetInelasticHadronNucleonXsc(); 103 103 } -
trunk/source/processes/hadronic/cross_sections/src/G4CrossSectionDataSetRegistry.cc
r1196 r1228 25 25 // 26 26 // 27 // $Id: G4CrossSectionDataSetRegistry.cc,v 1. 5 2009/08/12 20:25:10vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // $Id: G4CrossSectionDataSetRegistry.cc,v 1.6 2009/12/02 15:59:59 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // ------------------------------------------------------------------- … … 67 67 if(n > 0) { 68 68 for (size_t i=0; i<n; ++i) { 69 if(xSections[i]) delete xSections[i]; 69 if(xSections[i]) { 70 G4VCrossSectionDataSet* p = xSections[i]; 71 xSections[i] = 0; 72 delete p; 73 } 70 74 } 71 75 xSections.clear(); … … 79 83 if(n > 0) { 80 84 for (size_t i=0; i<n; ++i) { 81 if(xSections[i] == p) return;85 if(xSections[i] == p) { return; } 82 86 } 83 87 } … … 93 97 if(xSections[i] == p) { 94 98 xSections[i] = 0; 95 if(i == n-1) xSections.pop_back();99 if(i == n-1) { xSections.pop_back(); } 96 100 return; 97 101 } -
trunk/source/processes/hadronic/cross_sections/src/G4CrossSectionDataStore.cc
r1196 r1228 25 25 // 26 26 // $Id: G4CrossSectionDataStore.cc,v 1.16 2009/01/24 11:54:47 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4ElectroNuclearCrossSection.cc
r1196 r1228 26 26 // 27 27 // $Id: G4ElectroNuclearCrossSection.cc,v 1.29 2008/10/24 19:15:17 dennis Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4GGNuclNuclCrossSection.cc
r1055 r1228 164 164 // production to be checked !!! edit MK xsc 165 165 166 sigma = (pZ*tZ+pN*tN)*GetHadronNucleonXscMK(theProton, pTkin, theProton) + 167 (pZ*tN+pN*tZ)*GetHadronNucleonXscMK(theProton, pTkin, theNeutron); 166 //sigma = (pZ*tZ+pN*tN)*GetHadronNucleonXscMK(theProton, pTkin, theProton) + 167 // (pZ*tN+pN*tZ)*GetHadronNucleonXscMK(theProton, pTkin, theNeutron); 168 169 sigma = (pZ*tZ+pN*tN)*GetHadronNucleonXscNS(theProton, pTkin, theProton) + 170 (pZ*tN+pN*tZ)*GetHadronNucleonXscNS(theProton, pTkin, theNeutron); 168 171 169 172 ratio = sigma/nucleusSquare; … … 588 591 if(Nt < 0.) Nt = 0.; 589 592 590 sumInelastic = Zt*GetHadronNucleonXsc MK(aParticle, theProton);591 sumInelastic += Nt*GetHadronNucleonXsc MK(aParticle, theNeutron);593 sumInelastic = Zt*GetHadronNucleonXscNS(aParticle, theProton); 594 sumInelastic += Nt*GetHadronNucleonXscNS(aParticle, theNeutron); 592 595 593 596 return sumInelastic; … … 652 655 653 656 return Xinelastic*= millibarn; 654 }655 656 /////////////////////////////////////////////////////////////////////////////////////657 //658 // Returns hadron-nucleon cross-section based on Mikhail Kossov CHIPS parametrisation of659 // data from G4QuasiFreeRatios class660 661 G4double662 G4GGNuclNuclCrossSection::GetHadronNucleonXscMK(G4ParticleDefinition* pParticle, G4double pTkin,663 G4ParticleDefinition* nucleon )664 {665 G4int I = -1;666 G4int PDG = pParticle->GetPDGEncoding();667 G4double totalXsc = 0;668 G4double elasticXsc = 0;669 G4double inelasticXsc;670 // G4int absPDG = std::abs(PDG);671 672 G4double pM = pParticle->GetPDGMass();673 G4double p = std::sqrt(pTkin*(pTkin+2*pM))/GeV;674 675 G4bool F = false;676 if(nucleon == theProton) F = true;677 else if(nucleon == theNeutron) F = false;678 else679 {680 G4cout << "nucleon is not proton or neutron, return xsc for proton" << G4endl;681 F = true;682 }683 684 G4bool kfl = true; // Flag of K0/aK0 oscillation685 G4bool kf = false;686 687 if( PDG == 130 || PDG == 310 )688 {689 kf = true;690 if( G4UniformRand() > .5 ) kfl = false;691 }692 if ( (PDG == 2212 && F) || (PDG == 2112 && !F) ) I = 0; // pp/nn693 else if( (PDG == 2112 && F) || (PDG == 2212 && !F) ) I = 1; // np/pn694 else695 {696 G4cout<<"MK PDG = "<<PDG697 <<", while it is defined only for p,n,hyperons,anti-baryons,pi,K/antiK"<<G4endl;698 G4Exception("G4QuasiFreeRatio::FetchElTot:","22",FatalException,"CHIPScrash");699 }700 701 // Each parameter set can have not more than nPoints = 128 parameters702 703 static const G4double lmi = 3.5; // min of (lnP-lmi)^2 parabola704 static const G4double pbe = .0557; // elastic (lnP-lmi)^2 parabola coefficient705 static const G4double pbt = .3; // total (lnP-lmi)^2 parabola coefficient706 static const G4double pmi = .1; // Below that fast LE calculation is made707 static const G4double pma = 1000.; // Above that fast HE calculation is made708 709 if( p <= 0.)710 {711 G4cout<<" p = "<<p<<" is zero or negative"<<G4endl;712 713 elasticXsc = 0.;714 inelasticXsc = 0.;715 totalXsc = 0.;716 717 return totalXsc;718 }719 if (!I) // pp/nn720 {721 if( p < pmi )722 {723 G4double p2 = p*p;724 elasticXsc = 1./(.00012 + p2*.2);725 totalXsc = elasticXsc;726 }727 else if(p>pma)728 {729 G4double lp = std::log(p)-lmi;730 G4double lp2 = lp*lp;731 elasticXsc = pbe*lp2 + 6.72;732 totalXsc = pbt*lp2 + 38.2;733 }734 else735 {736 G4double p2 = p*p;737 G4double LE = 1./( .00012 + p2*.2);738 G4double lp = std::log(p) - lmi;739 G4double lp2 = lp*lp;740 G4double rp2 = 1./p2;741 elasticXsc = LE + ( pbe*lp2 + 6.72+32.6/p)/( 1. + rp2/p);742 totalXsc = LE + ( pbt*lp2 + 38.2+52.7*rp2)/( 1. + 2.72*rp2*rp2);743 }744 }745 else if( I==1 ) // np/pn746 {747 if( p < pmi )748 {749 G4double p2 = p*p;750 elasticXsc = 1./( .00012 + p2*( .051 + .1*p2));751 totalXsc = elasticXsc;752 }753 else if( p > pma )754 {755 G4double lp = std::log(p) - lmi;756 G4double lp2 = lp*lp;757 elasticXsc = pbe*lp2 + 6.72;758 totalXsc = pbt*lp2 + 38.2;759 }760 else761 {762 G4double p2 = p*p;763 G4double LE = 1./( .00012 + p2*( .051 + .1*p2 ) );764 G4double lp = std::log(p) - lmi;765 G4double lp2 = lp*lp;766 G4double rp2 = 1./p2;767 elasticXsc = LE + (pbe*lp2 + 6.72 + 30./p)/( 1. + .49*rp2/p);768 totalXsc = LE + (pbt*lp2 + 38.2)/( 1. + .54*rp2*rp2);769 }770 }771 else772 {773 G4cout<<"PDG incoding = "<<I<<" is not defined (0-1)"<<G4endl;774 775 }776 if( elasticXsc > totalXsc ) elasticXsc = totalXsc;777 778 totalXsc *= millibarn;779 elasticXsc *= millibarn;780 inelasticXsc = totalXsc - elasticXsc;781 if (inelasticXsc < 0.) inelasticXsc = 0.;782 783 return inelasticXsc;784 657 } 785 658 … … 940 813 } 941 814 return R; 942 943 944 945 } 946 947 948 949 815 } 950 816 951 817 -
trunk/source/processes/hadronic/cross_sections/src/G4GlauberGribovCrossSection.cc
r962 r1228 355 355 else 356 356 { 357 sigma = GetHadronNucleonXsc PDG(aParticle, A, Z);357 sigma = GetHadronNucleonXscNS(aParticle, A, Z); 358 358 cofInelastic = 2.2; 359 359 cofTotal = 2.0; … … 418 418 else 419 419 { 420 sigma = GetHadronNucleonXsc PDG(aParticle, A, Z);420 sigma = GetHadronNucleonXscNS(aParticle, A, Z); 421 421 cofInelastic = 2.2; 422 422 cofTotal = 2.0; … … 460 460 else 461 461 { 462 sigma = GetHadronNucleonXsc PDG(aParticle, A, Z);462 sigma = GetHadronNucleonXscNS(aParticle, A, Z); 463 463 cofInelastic = 2.2; 464 464 cofTotal = 2.0; … … 1070 1070 else 1071 1071 { 1072 sumInelastic = Zt*GetHadronNucleonXscMK(aParticle, theProton); 1073 sumInelastic += Nt*GetHadronNucleonXscMK(aParticle, theNeutron); 1072 //sumInelastic = Zt*GetHadronNucleonXscMK(aParticle, theProton); 1073 // sumInelastic += Nt*GetHadronNucleonXscMK(aParticle, theNeutron); 1074 sumInelastic = Zt*GetHadronNucleonXscNS(aParticle, 1.0, 1.0); 1075 sumInelastic += Nt*GetHadronNucleonXscNS(aParticle, 1.0, 0.0); 1074 1076 } 1075 1077 return sumInelastic; … … 1289 1291 } 1290 1292 1291 /////////////////////////////////////////////////////////////////////////////////////1292 //1293 // Returns hadron-nucleon cross-section based on Mikhail Kossov CHIPS parametrisation of1294 // data from G4QuasiFreeRatios class1295 1296 G4double1297 G4GlauberGribovCrossSection::GetHadronNucleonXscMK(const G4DynamicParticle* aParticle,1298 const G4ParticleDefinition* nucleon )1299 {1300 G4int I = -1;1301 G4int PDG = aParticle->GetDefinition()->GetPDGEncoding();1302 G4double totalXsc = 0;1303 G4double elasticXsc = 0;1304 G4double inelasticXsc;1305 // G4int absPDG = std::abs(PDG);1306 1307 G4double p = aParticle->GetMomentum().mag()/GeV;1308 1309 G4bool F = false;1310 if(nucleon == theProton) F = true;1311 else if(nucleon == theNeutron) F = false;1312 else1313 {1314 G4cout << "nucleon is not proton or neutron, return xsc for proton" << G4endl;1315 F = true;1316 }1317 1318 G4bool kfl = true; // Flag of K0/aK0 oscillation1319 G4bool kf = false;1320 1321 if( PDG == 130 || PDG == 310 )1322 {1323 kf = true;1324 if( G4UniformRand() > .5 ) kfl = false;1325 }1326 if ( (PDG == 2212 && F) || (PDG == 2112 && !F) ) I = 0; // pp/nn1327 else if( (PDG == 2112 && F) || (PDG == 2212 && !F) ) I = 1; // np/pn1328 1329 else if( (PDG == -211 && F) || (PDG == 211 && !F) ) I = 2; // pimp/pipn1330 else if( (PDG == 211 && F) || (PDG ==-211 && !F) ) I = 3; // pipp/pimn1331 1332 else if( PDG == -321 || PDG == -311 || ( kf && !kfl ) ) I = 4; // KmN/K0N1333 else if( PDG == 321 || PDG == 311 || ( kf && kfl ) ) I = 5; // KpN/aK0N1334 1335 else if( PDG > 3000 && PDG < 3335) I = 6; // @@ for all hyperons - take Lambda1336 else if( PDG < -2000 && PDG > -3335) I = 7; // @@ for all anti-baryons - anti-p/anti-n1337 else1338 {1339 G4cout<<"MK PDG = "<<PDG1340 <<", while it is defined only for p,n,hyperons,anti-baryons,pi,K/antiK"<<G4endl;1341 G4Exception("G4QuasiFreeRatio::FetchElTot:","22",FatalException,"CHIPScrash");1342 }1343 1344 // Each parameter set can have not more than nPoints = 128 parameters1345 1346 static const G4double lmi = 3.5; // min of (lnP-lmi)^2 parabola1347 static const G4double pbe = .0557; // elastic (lnP-lmi)^2 parabola coefficient1348 static const G4double pbt = .3; // total (lnP-lmi)^2 parabola coefficient1349 static const G4double pmi = .1; // Below that fast LE calculation is made1350 static const G4double pma = 1000.; // Above that fast HE calculation is made1351 1352 if( p <= 0.)1353 {1354 G4cout<<" p = "<<p<<" is zero or negative"<<G4endl;1355 1356 elasticXsc = 0.;1357 inelasticXsc = 0.;1358 totalXsc = 0.;1359 1360 return totalXsc;1361 }1362 if (!I) // pp/nn1363 {1364 if( p < pmi )1365 {1366 G4double p2 = p*p;1367 elasticXsc = 1./(.00012 + p2*.2);1368 totalXsc = elasticXsc;1369 }1370 else if(p>pma)1371 {1372 G4double lp = std::log(p)-lmi;1373 G4double lp2 = lp*lp;1374 elasticXsc = pbe*lp2 + 6.72;1375 totalXsc = pbt*lp2 + 38.2;1376 }1377 else1378 {1379 G4double p2 = p*p;1380 G4double LE = 1./( .00012 + p2*.2);1381 G4double lp = std::log(p) - lmi;1382 G4double lp2 = lp*lp;1383 G4double rp2 = 1./p2;1384 elasticXsc = LE + ( pbe*lp2 + 6.72+32.6/p)/( 1. + rp2/p);1385 totalXsc = LE + ( pbt*lp2 + 38.2+52.7*rp2)/( 1. + 2.72*rp2*rp2);1386 }1387 }1388 else if( I==1 ) // np/pn1389 {1390 if( p < pmi )1391 {1392 G4double p2 = p*p;1393 elasticXsc = 1./( .00012 + p2*( .051 + .1*p2));1394 totalXsc = elasticXsc;1395 }1396 else if( p > pma )1397 {1398 G4double lp = std::log(p) - lmi;1399 G4double lp2 = lp*lp;1400 elasticXsc = pbe*lp2 + 6.72;1401 totalXsc = pbt*lp2 + 38.2;1402 }1403 else1404 {1405 G4double p2 = p*p;1406 G4double LE = 1./( .00012 + p2*( .051 + .1*p2 ) );1407 G4double lp = std::log(p) - lmi;1408 G4double lp2 = lp*lp;1409 G4double rp2 = 1./p2;1410 elasticXsc = LE + (pbe*lp2 + 6.72 + 30./p)/( 1. + .49*rp2/p);1411 totalXsc = LE + (pbt*lp2 + 38.2)/( 1. + .54*rp2*rp2);1412 }1413 }1414 else if( I == 2 ) // pimp/pipn1415 {1416 G4double lp = std::log(p);1417 1418 if(p<pmi)1419 {1420 G4double lr = lp + 1.27;1421 elasticXsc = 1.53/( lr*lr + .0676);1422 totalXsc = elasticXsc*3;1423 }1424 else if( p > pma )1425 {1426 G4double ld = lp - lmi;1427 G4double ld2 = ld*ld;1428 G4double sp = std::sqrt(p);1429 elasticXsc = pbe*ld2 + 2.4 + 7./sp;1430 totalXsc = pbt*ld2 + 22.3 + 12./sp;1431 }1432 else1433 {1434 G4double lr = lp + 1.27;1435 G4double LE = 1.53/( lr*lr + .0676);1436 G4double ld = lp - lmi;1437 G4double ld2 = ld*ld;1438 G4double p2 = p*p;1439 G4double p4 = p2*p2;1440 G4double sp = std::sqrt(p);1441 G4double lm = lp + .36;1442 G4double md = lm*lm + .04;1443 G4double lh = lp - .017;1444 G4double hd = lh*lh + .0025;1445 elasticXsc = LE + (pbe*ld2 + 2.4 + 7./sp)/( 1. + .7/p4) + .6/md + .05/hd;1446 totalXsc = LE*3 + (pbt*ld2 + 22.3 + 12./sp)/(1. + .4/p4) + 1./md + .06/hd;1447 }1448 }1449 else if( I == 3 ) // pipp/pimn1450 {1451 G4double lp = std::log(p);1452 1453 if( p < pmi )1454 {1455 G4double lr = lp + 1.27;1456 G4double lr2 = lr*lr;1457 elasticXsc = 13./( lr2 + lr2*lr2 + .0676);1458 totalXsc = elasticXsc;1459 }1460 else if( p > pma )1461 {1462 G4double ld = lp - lmi;1463 G4double ld2 = ld*ld;1464 G4double sp = std::sqrt(p);1465 elasticXsc = pbe*ld2 + 2.4 + 6./sp;1466 totalXsc = pbt*ld2 + 22.3 + 5./sp;1467 }1468 else1469 {1470 G4double lr = lp + 1.27;1471 G4double lr2 = lr*lr;1472 G4double LE = 13./(lr2 + lr2*lr2 + .0676);1473 G4double ld = lp - lmi;1474 G4double ld2 = ld*ld;1475 G4double p2 = p*p;1476 G4double p4 = p2*p2;1477 G4double sp = std::sqrt(p);1478 G4double lm = lp - .32;1479 G4double md = lm*lm + .0576;1480 elasticXsc = LE + (pbe*ld2 + 2.4 + 6./sp)/(1. + 3./p4) + .7/md;1481 totalXsc = LE + (pbt*ld2 + 22.3 + 5./sp)/(1. + 1./p4) + .8/md;1482 }1483 }1484 else if( I == 4 ) // Kmp/Kmn/K0p/K0n1485 {1486 if( p < pmi)1487 {1488 G4double psp = p*std::sqrt(p);1489 elasticXsc = 5.2/psp;1490 totalXsc = 14./psp;1491 }1492 else if( p > pma )1493 {1494 G4double ld = std::log(p) - lmi;1495 G4double ld2 = ld*ld;1496 elasticXsc = pbe*ld2 + 2.23;1497 totalXsc = pbt*ld2 + 19.5;1498 }1499 else1500 {1501 G4double ld = std::log(p) - lmi;1502 G4double ld2 = ld*ld;1503 G4double sp = std::sqrt(p);1504 G4double psp = p*sp;1505 G4double p2 = p*p;1506 G4double p4 = p2*p2;1507 G4double lm = p - .39;1508 G4double md = lm*lm + .000156;1509 G4double lh = p - 1.;1510 G4double hd = lh*lh + .0156;1511 elasticXsc = 5.2/psp + (pbe*ld2 + 2.23)/(1. - .7/sp + .075/p4) + .004/md + .15/hd;1512 totalXsc = 14./psp + (pbt*ld2 + 19.5)/(1. - .21/sp + .52/p4) + .006/md + .30/hd;1513 }1514 }1515 else if( I == 5 ) // Kpp/Kpn/aKp/aKn1516 {1517 if( p < pmi )1518 {1519 G4double lr = p - .38;1520 G4double lm = p - 1.;1521 G4double md = lm*lm + .372;1522 elasticXsc = .7/(lr*lr + .0676) + 2./md;1523 totalXsc = elasticXsc + .6/md;1524 }1525 else if( p > pma )1526 {1527 G4double ld = std::log(p) - lmi;1528 G4double ld2 = ld*ld;1529 elasticXsc = pbe*ld2 + 2.23;1530 totalXsc = pbt*ld2 + 19.5;1531 }1532 else1533 {1534 G4double ld = std::log(p) - lmi;1535 G4double ld2 = ld*ld;1536 G4double lr = p - .38;1537 G4double LE = .7/(lr*lr + .0676);1538 G4double sp = std::sqrt(p);1539 G4double p2 = p*p;1540 G4double p4 = p2*p2;1541 G4double lm = p - 1.;1542 G4double md = lm*lm + .372;1543 elasticXsc = LE + (pbe*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;1544 totalXsc = LE + (pbt*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 2.6/md;1545 }1546 }1547 else if( I == 6 ) // hyperon-N1548 {1549 if( p < pmi )1550 {1551 G4double p2 = p*p;1552 elasticXsc = 1./(.002 + p2*(.12 + p2));1553 totalXsc = elasticXsc;1554 }1555 else if( p > pma )1556 {1557 G4double lp = std::log(p) - lmi;1558 G4double lp2 = lp*lp;1559 G4double sp = std::sqrt(p);1560 elasticXsc = (pbe*lp2 + 6.72)/(1. + 2./sp);1561 totalXsc = (pbt*lp2 + 38.2 + 900./sp)/(1. + 27./sp);1562 }1563 else1564 {1565 G4double p2 = p*p;1566 G4double LE = 1./(.002 + p2*(.12 + p2));1567 G4double lp = std::log(p) - lmi;1568 G4double lp2 = lp*lp;1569 G4double p4 = p2*p2;1570 G4double sp = std::sqrt(p);1571 elasticXsc = LE + (pbe*lp2 + 6.72 + 99./p2)/(1. + 2./sp + 2./p4);1572 totalXsc = LE + (pbt*lp2 + 38.2 + 900./sp)/(1. + 27./sp + 3./p4);1573 }1574 }1575 else if( I == 7 ) // antibaryon-N1576 {1577 if( p > pma )1578 {1579 G4double lp = std::log(p) - lmi;1580 G4double lp2 = lp*lp;1581 elasticXsc = pbe*lp2 + 6.72;1582 totalXsc = pbt*lp2 + 38.2;1583 }1584 else1585 {1586 G4double ye = std::pow(p, 1.25);1587 G4double yt = std::pow(p, .35);1588 G4double lp = std::log(p) - lmi;1589 G4double lp2 = lp*lp;1590 elasticXsc = 80./(ye + 1.) + pbe*lp2 + 6.72;1591 totalXsc = (80./yt + .3)/yt +pbt*lp2 + 38.2;1592 }1593 }1594 else1595 {1596 G4cout<<"PDG incoding = "<<I<<" is not defined (0-7)"<<G4endl;1597 1598 }1599 if( elasticXsc > totalXsc ) elasticXsc = totalXsc;1600 1601 totalXsc *= millibarn;1602 elasticXsc *= millibarn;1603 inelasticXsc = totalXsc - elasticXsc;1604 if (inelasticXsc < 0.) inelasticXsc = 0.;1605 1606 return inelasticXsc;1607 }1608 1609 1293 //////////////////////////////////////////////////////////////////////////////////// 1610 1294 // … … 1618 1302 G4double oneThird = 1.0/3.0; 1619 1303 G4double cubicrAt = std::pow (At, oneThird); 1620 1621 1304 1622 1305 G4double R; // = fRadiusConst*cubicrAt; … … 1638 1321 R = fRadiusConst*cubicrAt; 1639 1322 1640 // return R; // !!!!1641 1642 1643 1644 1323 G4double meanA = 21.; 1645 1324 … … 1679 1358 G4double cubicrAt = std::pow (At, oneThird); 1680 1359 1681 1682 1360 G4double R; // = fRadiusConst*cubicrAt; 1683 1361 -
trunk/source/processes/hadronic/cross_sections/src/G4HadronCaptureDataSet.cc
r1196 r1228 26 26 // 27 27 // $Id: G4HadronCaptureDataSet.cc,v 1.8 2006/06/29 19:57:35 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4HadronCrossSections.cc
r1196 r1228 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -
trunk/source/processes/hadronic/cross_sections/src/G4HadronElasticDataSet.cc
r1196 r1228 26 26 // 27 27 // $Id: G4HadronElasticDataSet.cc,v 1.8 2006/06/29 19:57:39 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4HadronFissionDataSet.cc
r1196 r1228 26 26 // 27 27 // $Id: G4HadronFissionDataSet.cc,v 1.8 2006/06/29 19:57:41 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4HadronInelasticDataSet.cc
r1196 r1228 26 26 // 27 27 // $Id: G4HadronInelasticDataSet.cc,v 1.8 2006/06/29 19:57:43 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4HadronNucleonXsc.cc
r819 r1228 883 883 } 884 884 885 /////////////////////////////////////////////////////////////////////////////////////886 //887 // Returns hadron-nucleon cross-section based on Mikhail Kossov parametrisation of888 // data from G4QuasiFreeRatios class889 890 G4double891 G4HadronNucleonXsc::GetHadronNucleonXscMK(const G4DynamicParticle* aParticle,892 const G4ParticleDefinition* nucleon )893 {894 G4int I = -1;895 G4int PDG = aParticle->GetDefinition()->GetPDGEncoding();896 897 // G4int absPDG = std::abs(PDG);898 899 G4double p = aParticle->GetMomentum().mag()/GeV;900 901 G4bool F = false;902 if(nucleon == theProton) F = true;903 else if(nucleon == theNeutron) F = false;904 else905 {906 G4cout << "nucleon is not proton or neutron, return xsc for proton" << G4endl;907 F = true;908 }909 910 G4bool kfl = true; // Flag of K0/aK0 oscillation911 G4bool kf = false;912 913 if( PDG == 130 || PDG == 310 )914 {915 kf = true;916 if( G4UniformRand() > .5 ) kfl = false;917 }918 if ( (PDG == 2212 && F) || (PDG == 2112 && !F) ) I = 0; // pp/nn919 else if( (PDG == 2112 && F) || (PDG == 2212 && !F) ) I = 1; // np/pn920 921 else if( (PDG == -211 && F) || (PDG == 211 && !F) ) I = 2; // pimp/pipn922 else if( (PDG == 211 && F) || (PDG ==-211 && !F) ) I = 3; // pipp/pimn923 924 else if( PDG == -321 || PDG == -311 || ( kf && !kfl ) ) I = 4; // KmN/K0N925 else if( PDG == 321 || PDG == 311 || ( kf && kfl ) ) I = 5; // KpN/aK0N926 927 else if( PDG > 3000 && PDG < 3335) I = 6; // @@ for all hyperons - take Lambda928 else if( PDG < -2000 && PDG > -3335) I = 7; // @@ for all anti-baryons - anti-p/anti-n929 else930 {931 G4cout<<"MK PDG = "<<PDG932 <<", while it is defined only for p,n,hyperons,anti-baryons,pi,K/antiK"<<G4endl;933 G4Exception("G4QuasiFreeRatio::FetchElTot:","22",FatalException,"CHIPScrash");934 }935 936 // Each parameter set can have not more than nPoints = 128 parameters937 938 static const G4double lmi = 3.5; // min of (lnP-lmi)^2 parabola939 static const G4double pbe = .0557; // elastic (lnP-lmi)^2 parabola coefficient940 static const G4double pbt = .3; // total (lnP-lmi)^2 parabola coefficient941 static const G4double pmi = .1; // Below that fast LE calculation is made942 static const G4double pma = 1000.; // Above that fast HE calculation is made943 944 if( p <= 0.)945 {946 G4cout<<" p = "<<p<<" is zero or negative"<<G4endl;947 948 fElasticXsc = 0.;949 fInelasticXsc = 0.;950 fTotalXsc = 0.;951 952 return fTotalXsc;953 }954 if (!I) // pp/nn955 {956 if( p < pmi )957 {958 G4double p2 = p*p;959 fElasticXsc = 1./(.00012 + p2*.2);960 fTotalXsc = fElasticXsc;961 }962 else if(p>pma)963 {964 G4double lp = std::log(p)-lmi;965 G4double lp2 = lp*lp;966 fElasticXsc = pbe*lp2 + 6.72;967 fTotalXsc = pbt*lp2 + 38.2;968 }969 else970 {971 G4double p2 = p*p;972 G4double LE = 1./( .00012 + p2*.2);973 G4double lp = std::log(p) - lmi;974 G4double lp2 = lp*lp;975 G4double rp2 = 1./p2;976 fElasticXsc = LE + ( pbe*lp2 + 6.72+32.6/p)/( 1. + rp2/p);977 fTotalXsc = LE + ( pbt*lp2 + 38.2+52.7*rp2)/( 1. + 2.72*rp2*rp2);978 }979 }980 else if( I==1 ) // np/pn981 {982 if( p < pmi )983 {984 G4double p2 = p*p;985 fElasticXsc = 1./( .00012 + p2*( .051 + .1*p2));986 fTotalXsc = fElasticXsc;987 }988 else if( p > pma )989 {990 G4double lp = std::log(p) - lmi;991 G4double lp2 = lp*lp;992 fElasticXsc = pbe*lp2 + 6.72;993 fTotalXsc = pbt*lp2 + 38.2;994 }995 else996 {997 G4double p2 = p*p;998 G4double LE = 1./( .00012 + p2*( .051 + .1*p2 ) );999 G4double lp = std::log(p) - lmi;1000 G4double lp2 = lp*lp;1001 G4double rp2 = 1./p2;1002 fElasticXsc = LE + (pbe*lp2 + 6.72 + 30./p)/( 1. + .49*rp2/p);1003 fTotalXsc = LE + (pbt*lp2 + 38.2)/( 1. + .54*rp2*rp2);1004 }1005 }1006 else if( I == 2 ) // pimp/pipn1007 {1008 G4double lp = std::log(p);1009 1010 if(p<pmi)1011 {1012 G4double lr = lp + 1.27;1013 fElasticXsc = 1.53/( lr*lr + .0676);1014 fTotalXsc = fElasticXsc*3;1015 }1016 else if( p > pma )1017 {1018 G4double ld = lp - lmi;1019 G4double ld2 = ld*ld;1020 G4double sp = std::sqrt(p);1021 fElasticXsc = pbe*ld2 + 2.4 + 7./sp;1022 fTotalXsc = pbt*ld2 + 22.3 + 12./sp;1023 }1024 else1025 {1026 G4double lr = lp + 1.27;1027 G4double LE = 1.53/( lr*lr + .0676);1028 G4double ld = lp - lmi;1029 G4double ld2 = ld*ld;1030 G4double p2 = p*p;1031 G4double p4 = p2*p2;1032 G4double sp = std::sqrt(p);1033 G4double lm = lp + .36;1034 G4double md = lm*lm + .04;1035 G4double lh = lp - .017;1036 G4double hd = lh*lh + .0025;1037 fElasticXsc = LE + (pbe*ld2 + 2.4 + 7./sp)/( 1. + .7/p4) + .6/md + .05/hd;1038 fTotalXsc = LE*3 + (pbt*ld2 + 22.3 + 12./sp)/(1. + .4/p4) + 1./md + .06/hd;1039 }1040 }1041 else if( I == 3 ) // pipp/pimn1042 {1043 G4double lp = std::log(p);1044 1045 if( p < pmi )1046 {1047 G4double lr = lp + 1.27;1048 G4double lr2 = lr*lr;1049 fElasticXsc = 13./( lr2 + lr2*lr2 + .0676);1050 fTotalXsc = fElasticXsc;1051 }1052 else if( p > pma )1053 {1054 G4double ld = lp - lmi;1055 G4double ld2 = ld*ld;1056 G4double sp = std::sqrt(p);1057 fElasticXsc = pbe*ld2 + 2.4 + 6./sp;1058 fTotalXsc = pbt*ld2 + 22.3 + 5./sp;1059 }1060 else1061 {1062 G4double lr = lp + 1.27;1063 G4double lr2 = lr*lr;1064 G4double LE = 13./(lr2 + lr2*lr2 + .0676);1065 G4double ld = lp - lmi;1066 G4double ld2 = ld*ld;1067 G4double p2 = p*p;1068 G4double p4 = p2*p2;1069 G4double sp = std::sqrt(p);1070 G4double lm = lp - .32;1071 G4double md = lm*lm + .0576;1072 fElasticXsc = LE + (pbe*ld2 + 2.4 + 6./sp)/(1. + 3./p4) + .7/md;1073 fTotalXsc = LE + (pbt*ld2 + 22.3 + 5./sp)/(1. + 1./p4) + .8/md;1074 }1075 }1076 else if( I == 4 ) // Kmp/Kmn/K0p/K0n1077 {1078 if( p < pmi)1079 {1080 G4double psp = p*std::sqrt(p);1081 fElasticXsc = 5.2/psp;1082 fTotalXsc = 14./psp;1083 }1084 else if( p > pma )1085 {1086 G4double ld = std::log(p) - lmi;1087 G4double ld2 = ld*ld;1088 fElasticXsc = pbe*ld2 + 2.23;1089 fTotalXsc = pbt*ld2 + 19.5;1090 }1091 else1092 {1093 G4double ld = std::log(p) - lmi;1094 G4double ld2 = ld*ld;1095 G4double sp = std::sqrt(p);1096 G4double psp = p*sp;1097 G4double p2 = p*p;1098 G4double p4 = p2*p2;1099 G4double lm = p - .39;1100 G4double md = lm*lm + .000156;1101 G4double lh = p - 1.;1102 G4double hd = lh*lh + .0156;1103 fElasticXsc = 5.2/psp + (pbe*ld2 + 2.23)/(1. - .7/sp + .075/p4) + .004/md + .15/hd;1104 fTotalXsc = 14./psp + (pbt*ld2 + 19.5)/(1. - .21/sp + .52/p4) + .006/md + .30/hd;1105 }1106 }1107 else if( I == 5 ) // Kpp/Kpn/aKp/aKn1108 {1109 if( p < pmi )1110 {1111 G4double lr = p - .38;1112 G4double lm = p - 1.;1113 G4double md = lm*lm + .372;1114 fElasticXsc = .7/(lr*lr + .0676) + 2./md;1115 fTotalXsc = fElasticXsc + .6/md;1116 }1117 else if( p > pma )1118 {1119 G4double ld = std::log(p) - lmi;1120 G4double ld2 = ld*ld;1121 fElasticXsc = pbe*ld2 + 2.23;1122 fTotalXsc = pbt*ld2 + 19.5;1123 }1124 else1125 {1126 G4double ld = std::log(p) - lmi;1127 G4double ld2 = ld*ld;1128 G4double lr = p - .38;1129 G4double LE = .7/(lr*lr + .0676);1130 G4double sp = std::sqrt(p);1131 G4double p2 = p*p;1132 G4double p4 = p2*p2;1133 G4double lm = p - 1.;1134 G4double md = lm*lm + .372;1135 fElasticXsc = LE + (pbe*ld2 + 2.23)/(1. - .7/sp + .1/p4) + 2./md;1136 fTotalXsc = LE + (pbt*ld2 + 19.5)/(1. + .46/sp + 1.6/p4) + 2.6/md;1137 }1138 }1139 else if( I == 6 ) // hyperon-N1140 {1141 if( p < pmi )1142 {1143 G4double p2 = p*p;1144 fElasticXsc = 1./(.002 + p2*(.12 + p2));1145 fTotalXsc = fElasticXsc;1146 }1147 else if( p > pma )1148 {1149 G4double lp = std::log(p) - lmi;1150 G4double lp2 = lp*lp;1151 G4double sp = std::sqrt(p);1152 fElasticXsc = (pbe*lp2 + 6.72)/(1. + 2./sp);1153 fTotalXsc = (pbt*lp2 + 38.2 + 900./sp)/(1. + 27./sp);1154 }1155 else1156 {1157 G4double p2 = p*p;1158 G4double LE = 1./(.002 + p2*(.12 + p2));1159 G4double lp = std::log(p) - lmi;1160 G4double lp2 = lp*lp;1161 G4double p4 = p2*p2;1162 G4double sp = std::sqrt(p);1163 fElasticXsc = LE + (pbe*lp2 + 6.72 + 99./p2)/(1. + 2./sp + 2./p4);1164 fTotalXsc = LE + (pbt*lp2 + 38.2 + 900./sp)/(1. + 27./sp + 3./p4);1165 }1166 }1167 else if( I == 7 ) // antibaryon-N1168 {1169 if( p > pma )1170 {1171 G4double lp = std::log(p) - lmi;1172 G4double lp2 = lp*lp;1173 fElasticXsc = pbe*lp2 + 6.72;1174 fTotalXsc = pbt*lp2 + 38.2;1175 }1176 else1177 {1178 G4double ye = std::pow(p, 1.25);1179 G4double yt = std::pow(p, .35);1180 G4double lp = std::log(p) - lmi;1181 G4double lp2 = lp*lp;1182 fElasticXsc = 80./(ye + 1.) + pbe*lp2 + 6.72;1183 fTotalXsc = (80./yt + .3)/yt +pbt*lp2 + 38.2;1184 }1185 }1186 else1187 {1188 G4cout<<"PDG incoding = "<<I<<" is not defined (0-7)"<<G4endl;1189 1190 }1191 if( fElasticXsc > fTotalXsc ) fElasticXsc = fTotalXsc;1192 1193 fTotalXsc *= millibarn;1194 fElasticXsc *= millibarn;1195 fInelasticXsc = fTotalXsc - fElasticXsc;1196 if (fInelasticXsc < 0.) fInelasticXsc = 0.;1197 1198 1199 return fTotalXsc;1200 }1201 1202 1203 1204 1205 1206 885 //////////////////////////////////////////////////////////////////////////////////// 1207 886 // -
trunk/source/processes/hadronic/cross_sections/src/G4NeutronCaptureXS.cc
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronCaptureXS.cc,v 1.2 2009/11/19 12:36:53 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4NeutronElasticXS.cc
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronElasticXS.cc,v 1.3 2009/11/19 12:01:54 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4NeutronInelasticCrossSection.cc
r819 r1228 26 26 // By JPW, working, but to be cleaned up. @@@ 27 27 // 22 Dec 2006 - DHW added isotope dependence 28 // G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV 28 29 // 29 30 … … 64 65 GetCrossSection(G4double anEnergy, G4double atomicNumber, G4double nOfProtons) 65 66 { 67 if (anEnergy > 19.9*GeV ) 68 { // constant cross section above ~20GeV. 69 return GetCrossSection(19.8*GeV,atomicNumber,nOfProtons); 70 } 66 71 G4double kineticEnergy = std::log10(DBL_MIN/MeV); 67 72 if (anEnergy > DBL_MIN/MeV) kineticEnergy = std::log10(anEnergy/MeV); -
trunk/source/processes/hadronic/cross_sections/src/G4NeutronInelasticXS.cc
r1197 r1228 25 25 // 26 26 // $Id: G4NeutronInelasticXS.cc,v 1.3 2009/11/19 12:00:40 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc
r1196 r1228 26 26 // 27 27 // The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02 28 // GEANT4 tag $Name: geant4-09-03 -cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/processes/hadronic/cross_sections/src/G4PiData.cc
r1196 r1228 24 24 // ******************************************************************** 25 25 // 26 // GEANT4 tag $Name: geant4-09-03 -cand-01$26 // GEANT4 tag $Name: geant4-09-03 $ 27 27 // 28 28 // -------------------------------------------------------------------- -
trunk/source/processes/hadronic/cross_sections/src/G4PiNuclearCrossSection.cc
r962 r1228 43 43 .02, .04, .06, .08, .1, .12, .13, .14, .15, .16, .17, .18, .19, .20, 44 44 .22, .24, .26, .28, .30, .35, .40, .45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 45 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000 };45 1, 2, 3, 5, 10, 20, 50, 100, 500, 100000}; 46 46 47 47 const G4double G4PiNuclearCrossSection::he_t[38] = { … … 76 76 .02, .04, .06, .08, .10, .11, .12, .13, .14, .15, .16, .17, .18, .20, .22, 77 77 .24, .26, .28, .30, .35, .40, .45, .50, .55, .575, .60, .70, .80, .90, 1, 78 2, 3, 5, 10, 20, 50, 100, 500, 1000 };78 2, 3, 5, 10, 20, 50, 100, 500, 100000}; 79 79 80 80 const G4double G4PiNuclearCrossSection::c_m_t[39] = { … … 117 117 .02, .04, .06, .08, .10, .12, .14, .16, .18, .20, .22, .25, .30, .35, .40, 118 118 .45, .50, .60, .70, .80, .90, 1, 2, 3, 5, 10, 20, 50, 100, 500, 119 1000 };119 100000}; 120 120 121 121 const G4double G4PiNuclearCrossSection::o_m_t[31] = { … … 158 158 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.25, 0.30, 0.35, 0.40, 159 159 0.45, 0.50, 0.60, 0.70, 0.80, 0.90, 1, 2, 3, 5, 10, 20, 50, 100, 500, 160 1000 };160 100000}; 161 161 162 162 const G4double G4PiNuclearCrossSection::al_m_t[31] = { … … 200 200 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.25, 0.30, 0.35, 0.40, 201 201 0.45, 0.50, 0.55, 0.60, 0.70, 0.80, 0.90, 1, 2, 3, 5, 10, 20, 50, 100, 202 500, 1000 };202 500, 100000}; 203 203 204 204 const G4double G4PiNuclearCrossSection::fe_m_t[32] = {1175, 1363, 1670, 1950, 2050, 2040, 1975, 1886, 1834, 1773, 1720, 1635, 1474, 1380, 1269, 1225, 1182, 1162, 1159, 1162, 1178, 1190, 1197, 1102, 1135, 975, 945, 925, 905, 905, 905, 905}; … … 214 214 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.25, 215 215 0.30, 0.35, 0.40, 0.45, 0.50, 0.60, 0.70, 0.80, 0.90, 1, 2, 3, 5, 10, 20, 216 50, 100, 500, 1000 };216 50, 100, 500, 100000}; 217 217 218 218 const G4double G4PiNuclearCrossSection::mo_m_t[34] = {2430, 2610, 2710, 2790, 2880, 2940, 2965, 2970, 2970, 2920, 2840, 2720, 2570, 2500, 2365, 2200, 2050, 1926, 1825, 1768, 1749, 1750, 1778, 1789, 1808, 1690, 1645, 1530, 1492, 1450, 1425, 1425, 1425, 1425}; … … 228 228 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.25, 229 229 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.70, 0.80, 0.90, 1, 2, 3, 5, 10, 230 20, 50, 100, 500, 1000 };230 20, 50, 100, 500, 100000}; 231 231 232 232 const G4double G4PiNuclearCrossSection::sn_m_t[35] = {3000, 3180, 3250, 3300, 3300, 3410, 3470, 3450, 3410, 3350, 3280, 3200, 3120, 3050, 2900, 2630, 2500, 2325, 2190, 2100, 2060, 2055, 2055, 2055, 2067, 2085, 2000, 1900, 1835, 1770, 1720, 1700, 1695, 1695, 1695}; … … 242 242 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.25, 243 243 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.70, 0.80, 0.90, 1, 2, 3, 5, 10, 244 20, 50, 100, 500, 1000 };244 20, 50, 100, 500, 100000}; 245 245 246 246 const G4double G4PiNuclearCrossSection::pb_m_t[35] = { -
trunk/source/processes/hadronic/cross_sections/src/G4ProtonInelasticCrossSection.cc
r819 r1228 27 27 // G.Folger, 29-sept-2006: extend to 1TeV, using a constant above 20GeV 28 28 // 22 Dec 2006 - DHW added isotope dependence 29 // G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV 29 30 // 30 31 -
trunk/source/processes/hadronic/cross_sections/src/G4TripathiLightCrossSection.cc
r1196 r1228 153 153 pT = pT + pP; 154 154 G4double E_cm = (pT.mag()-mT-pP.m())/MeV; 155 if(E_cm <= DBL_MIN) return result;156 157 158 155 // 159 156 // … … 172 169 173 170 G4double B = 1.44 * ZP * ZT / Radius; 174 if(E_cm <= B) return result; 175 171 // 176 172 // 177 173 // Now determine other parameters associated with the parametric … … 291 287 std::pow((std::pow(AT,third) + std::pow(AP,third) + deltaE),2.0) * 292 288 (1.0 - R_c*B/E_cm) * X_m; 293 if(result < 0.0) result = 0.0;294 /*295 289 if (!lowEnergyCheck) 296 290 { 297 if (result < 0.0) result = 0.0; 291 if (result < 0.0) 292 result = 0.0; 298 293 else if (E < 6.0*MeV) 299 294 { … … 301 296 G4DynamicParticle slowerProjectile = *theProjectile; 302 297 slowerProjectile.SetKineticEnergy(f * EA * MeV); 303 G4TripathiLightCrossSection theTripathiLightCrossSection; 304 theTripathiLightCrossSection.SetLowEnergyCheck(true); 298 // G4TripathiLightCrossSection theTripathiLightCrossSection; // MHM 20090824 Not needed 299 // theTripathiLightCrossSection.SetLowEnergyCheck(true); 300 G4bool savelowenergy=lowEnergyCheck; 301 SetLowEnergyCheck(true); 305 302 G4double resultp = 306 theTripathiLightCrossSection.GetIsoZACrossSection307 (&slowerProjectile, ZZ, AA, 0.0);303 GetIsoZACrossSection(&slowerProjectile, ZZ, AA, 0.0); 304 SetLowEnergyCheck(savelowenergy); 308 305 if (resultp >result) result = 0.0; 309 306 } 310 307 } 311 */ 308 312 309 return result; 313 310 } -
trunk/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc
r1196 r1228 25 25 // 26 26 // $Id: G4VCrossSectionDataSet.cc,v 1.8 2009/01/24 11:54:47 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.
