Changeset 1340 for trunk/source/processes/hadronic/cross_sections/include/G4IonProtonCrossSection.hh
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/cross_sections/include/G4IonProtonCrossSection.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 #ifndef G4IonProtonCrossSection_h 27 #define G4IonProtonCrossSection_h 28 29 #include "globals.hh" 30 #include "G4Proton.hh" 31 // Class Description 26 // $Id: G4IonProtonCrossSection.hh,v 1.12 2010/10/15 21:05:10 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 // 29 // ------------------------------------------------------------------- 30 // 31 // GEANT4 Class header file 32 // 33 // File name: G4IonProtonCrossSection 34 // 35 // 32 36 // Cross-sections for ion proton scattering up to 20 GeV, getting the low 33 37 // energy threshold behaviour right. 34 38 // H.P. Wellisch (TRIUMF), D. Axen (British Columbia U.). 1996. 35 39 // Published in Phys.Rev.C54:1329-1332,1996 36 // Class Description - End 40 // 41 // Original by H.P.Wellisch 28 June 2001 42 // 43 // Modifications: 44 // 30-07-2010 V.Ivanchenko move virtual methods to source, 45 // add constructor and destructor, 46 // make G4ProtonInelasticCrossSection class member, 47 // fix bug in kinematics 48 // 49 50 #ifndef G4IonProtonCrossSection_h 51 #define G4IonProtonCrossSection_h 1 37 52 38 53 #include "G4VCrossSectionDataSet.hh" 39 #include "G4ProtonInelasticCrossSection.hh" 54 #include "globals.hh" 55 56 class G4ProtonInelasticCrossSection; 40 57 41 58 class G4IonProtonCrossSection : public G4VCrossSectionDataSet 42 59 { 43 60 public: 44 61 45 virtual 46 G4bool IsZAApplicable(const G4DynamicParticle* aPart, G4double /*ZZ*/, 47 G4double AA) 48 { 49 G4bool result = false; 50 if((AA < 1.1) && 51 ( aPart->GetKineticEnergy()/aPart->GetDefinition() 52 ->GetBaryonNumber() < 20*GeV && 53 aPart->GetDefinition()->GetBaryonNumber() > 4) 54 ) result = true; 55 return result; 56 } 62 G4IonProtonCrossSection(); 57 63 58 virtual 59 G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle) 60 { 61 return IsZAApplicable(aPart, 0., anEle->GetN()); 62 } 64 virtual ~G4IonProtonCrossSection(); 63 65 64 virtual 65 G4double GetCrossSection(const G4DynamicParticle* aPart, 66 const G4Element*, G4double ) 67 { 68 return GetIsoZACrossSection(aPart, 0., 0., 0.); 69 } 66 virtual 67 G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle); 70 68 71 virtual 72 G4double GetIsoZACrossSection(const G4DynamicParticle* aPart, 73 G4double /*ZZ*/, G4double /*AA*/, 74 G4double /*temperature*/) 75 { 76 G4ProtonInelasticCrossSection theForward; 77 return theForward.GetCrossSection(aPart->GetKineticEnergy(), 78 aPart->GetDefinition()->GetBaryonNumber(), 79 aPart->GetDefinition()->GetPDGCharge()); 80 } 69 virtual 70 G4bool IsIsoApplicable(const G4DynamicParticle* aPart, 71 G4int Z, G4int A); 81 72 73 virtual 74 G4double GetCrossSection(const G4DynamicParticle* aPart, 75 const G4Element*, G4double); 76 77 virtual 78 G4double GetZandACrossSection(const G4DynamicParticle* aPart, 79 G4int Z=1, G4int A=1, G4double T=0.); 82 80 83 virtual 84 void BuildPhysicsTable(const G4ParticleDefinition&) 85 {} 81 virtual void BuildPhysicsTable(const G4ParticleDefinition&); 86 82 87 virtual 88 void DumpPhysicsTable(const G4ParticleDefinition&) 89 {G4cout << "G4IonProtonCrossSection: uses formula"<<G4endl;} 83 virtual void DumpPhysicsTable(const G4ParticleDefinition&); 84 85 private: // Without Description 86 87 G4IonProtonCrossSection & operator=(const G4IonProtonCrossSection &right); 88 G4IonProtonCrossSection(const G4IonProtonCrossSection&); 89 90 G4ProtonInelasticCrossSection* theForward; 90 91 91 92 };
Note: See TracChangeset
for help on using the changeset viewer.