File indexing completed on 2025-01-18 09:59:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef G4RKFieldIntegrator_h
0027 #define G4RKFieldIntegrator_h 1
0028
0029 #include "G4FieldPropagation.hh"
0030
0031 class G4RKFieldIntegrator : public G4FieldPropagation
0032 {
0033 public:
0034 G4RKFieldIntegrator() {}
0035 G4RKFieldIntegrator(const G4RKFieldIntegrator &):G4FieldPropagation() {}
0036
0037 ~G4RKFieldIntegrator() {}
0038
0039
0040 const G4RKFieldIntegrator & operator=(const G4RKFieldIntegrator &) {return *this;}
0041
0042 G4bool operator==(const G4RKFieldIntegrator &) const {return 1;}
0043 G4bool operator!=(const G4RKFieldIntegrator &) const {return 1;}
0044
0045
0046
0047 void Transport(G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep);
0048 G4double GetExcitationEnergy(G4int nHitNucleons, const G4KineticTrackVector &theParticles);
0049
0050
0051 void Init(G4int z, G4int a) {theZ = z; theA = a;}
0052
0053
0054 G4double GetNeutronPotential(G4double radius);
0055 G4double GetNeutronPotential(G4ThreeVector &aPosition) {return GetNeutronPotential(aPosition.mag());}
0056
0057 G4double GetProtonPotential(G4double radius);
0058 G4double GetProtonPotential(G4ThreeVector &aPosition) {return GetProtonPotential(aPosition.mag());}
0059
0060 G4double GetAntiprotonPotential(G4double radius);
0061 G4double GetAntiprotonPotential(G4ThreeVector &aPosition) {return GetAntiprotonPotential(aPosition.mag());};
0062
0063 G4double GetKaonPotential(G4double radius);
0064 G4double GetKaonPotential(G4ThreeVector &aPosition) {return GetKaonPotential(aPosition.mag());}
0065
0066 G4double GetPionPotential(G4double radius);
0067 G4double GetPionPotential(G4ThreeVector &aPosition) {return GetPionPotential(aPosition.mag());}
0068
0069 private:
0070 void Integrate(const G4KineticTrackVector & theActive, G4double theTimeStep);
0071 G4double CalculateTotalEnergy(const G4KineticTrackVector& Barions);
0072 G4double Erf(G4double X);
0073
0074
0075 G4int theA;
0076 G4int theZ;
0077
0078
0079
0080 static const G4double coulomb;
0081 static const G4double a_kaon;
0082 static const G4double a_pion;
0083 static const G4double a_antiproton;
0084 };
0085
0086 #endif
0087
0088