00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef G4ComponentAntiNuclNuclearXS_h
00039 #define G4ComponentAntiNuclNuclearXS_h
00040
00041 #include <CLHEP/Units/PhysicalConstants.h>
00042
00043 #include "globals.hh"
00044 #include "G4Proton.hh"
00045 #include "G4AntiProton.hh"
00046 #include "G4AntiNeutron.hh"
00047 #include "G4AntiDeuteron.hh"
00048 #include "G4AntiHe3.hh"
00049 #include "G4AntiTriton.hh"
00050 #include "G4AntiAlpha.hh"
00051 #include "G4Nucleus.hh"
00052
00053 #include "G4VComponentCrossSection.hh"
00054
00055 class G4ParticleDefinition;
00056
00057 class G4ComponentAntiNuclNuclearXS : public G4VComponentCrossSection
00058 {
00059 public:
00060
00061 G4ComponentAntiNuclNuclearXS ();
00062 virtual ~G4ComponentAntiNuclNuclearXS ();
00063
00064 virtual
00065 G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00066 G4double kinEnergy,
00067 G4int Z, G4int A);
00068
00069 virtual
00070 G4double GetTotalElementCrossSection(const G4ParticleDefinition* aParticle,
00071 G4double kinEnergy,
00072 G4int Z, G4double A);
00073
00074 virtual
00075 G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00076 G4double kinEnergy,
00077 G4int Z, G4int A);
00078
00079 virtual
00080 G4double GetInelasticElementCrossSection(const G4ParticleDefinition* aParticle,
00081 G4double kinEnergy,
00082 G4int Z, G4double A);
00083
00084 virtual
00085 G4double GetElasticElementCrossSection(const G4ParticleDefinition* aParticle,
00086 G4double kinEnergy,
00087 G4int Z, G4double A);
00088
00089 virtual
00090 G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
00091 G4double kinEnergy,
00092 G4int Z, G4int A);
00093
00094 virtual
00095 void BuildPhysicsTable(const G4ParticleDefinition&)
00096 {}
00097
00098 virtual
00099 void DumpPhysicsTable(const G4ParticleDefinition&)
00100 {}
00101
00102 virtual void CrossSectionDescription(std::ostream&) const;
00103
00104
00105 G4double GetAntiHadronNucleonTotCrSc(const G4ParticleDefinition* aParticle, G4double kinEnergy);
00106
00107
00108
00109 G4double GetAntiHadronNucleonElCrSc(const G4ParticleDefinition* aParticle, G4double kinEnergy);
00110
00111
00112 private:
00113
00114 const G4double fUpperLimit;
00115 const G4double fLowerLimit;
00116 G4double fRadiusEff;
00117 G4double fRadiusNN2;
00118
00119 G4double fTotalXsc, fElasticXsc, fInelasticXsc;
00120 G4double fAntiHadronNucleonTotXsc, fAntiHadronNucleonElXsc;
00121 G4double Elab, S, SqrtS ;
00122 G4double Mn, b0, b2, SqrtS0, S0, R0;
00123
00124 G4ParticleDefinition* theAProton;
00125 G4ParticleDefinition* theANeutron;
00126 G4ParticleDefinition* theADeuteron;
00127 G4ParticleDefinition* theATriton;
00128 G4ParticleDefinition* theAAlpha;
00129 G4ParticleDefinition* theAHe3;
00130
00131 };
00132
00133 #endif