File indexing completed on 2025-10-31 09:02:31
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 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 
0035 
0036 
0037 
0038 #ifndef G4ComponentAntiNuclNuclearXS_h
0039 #define G4ComponentAntiNuclNuclearXS_h
0040 
0041 #include <CLHEP/Units/PhysicalConstants.h>  // pi, fermi,..
0042 
0043 #include "globals.hh"
0044 #include "G4Proton.hh"
0045 #include "G4AntiProton.hh"
0046 #include "G4AntiNeutron.hh"
0047 #include "G4AntiDeuteron.hh"
0048 #include "G4AntiHe3.hh"
0049 #include "G4AntiTriton.hh"
0050 #include "G4AntiAlpha.hh"
0051 #include "G4Nucleus.hh"
0052 #include "G4Pow.hh"
0053 #include "G4VComponentCrossSection.hh"
0054 
0055 
0056 class G4ParticleDefinition;
0057 
0058 
0059 class G4ComponentAntiNuclNuclearXS : public G4VComponentCrossSection {
0060 
0061   public:
0062     G4ComponentAntiNuclNuclearXS ();
0063     virtual ~G4ComponentAntiNuclNuclearXS ();
0064     virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition* aParticle,
0065                                  G4double kinEnergy, G4int Z, G4int A);
0066     virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition* aParticle,
0067                                  G4double kinEnergy, G4int Z, G4double A);
0068     virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
0069                                  G4double kinEnergy, G4int Z, G4int A);
0070     virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition* aParticle,
0071                                  G4double kinEnergy, G4int Z, G4double A);
0072     virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition* aParticle,
0073                                G4double kinEnergy, G4int Z, G4double A);
0074     virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
0075                                G4double kinEnergy, G4int Z, G4int A);
0076     virtual void BuildPhysicsTable(const G4ParticleDefinition&) {}
0077     virtual void DumpPhysicsTable(const G4ParticleDefinition&)  {}
0078     virtual void CrossSectionDescription(std::ostream&) const;
0079     
0080     G4double GetAntiHadronNucleonTotCrSc(const G4ParticleDefinition* aParticle, G4double kinEnergy);
0081     
0082     G4double GetAntiHadronNucleonElCrSc(const G4ParticleDefinition* aParticle, G4double kinEnergy);
0083 
0084   private:
0085     G4double fRadiusEff;  
0086     G4double fTotalXsc, fElasticXsc, fInelasticXsc;
0087     G4double fAntiHadronNucleonTotXsc, fAntiHadronNucleonElXsc; 
0088     G4double Elab, S, SqrtS ;
0089     G4double Mn, b0, b2,  SqrtS0, S0, R0;  
0090     G4ParticleDefinition* theAProton;
0091     G4ParticleDefinition* theANeutron;
0092     G4ParticleDefinition* theADeuteron;
0093     G4ParticleDefinition* theATriton;
0094     G4ParticleDefinition* theAAlpha;
0095     G4ParticleDefinition* theAHe3;
0096 
0097     const G4double ReffTot[5][5] =  { {0.000, 3.800, 3.300, 3.300, 2.376},    
0098                                       {3.800, 3.238, 3.144, 3.144, 2.544},    
0099                                       {3.300, 3.144, 3.075, 3.075, 3.589},    
0100                                       {3.300, 3.144, 3.075, 3.075, 2.589},    
0101                                       {2.376, 2.544, 3.589, 3.598, 2.241} };  
0102     const G4double ReffInel[5][5] = { {0.000, 3.582, 3.105, 3.105, 2.209},    
0103                                       {3.582, 3.169, 3.066, 3.066, 2.498},    
0104                                       {3.105, 3.066, 2.973, 2.973, 2.508},    
0105                                       {3.105, 3.066, 2.973, 2.973, 2.508},    
0106                                       {2.209, 2.498, 2.508, 2.508, 2.158} };  
0107 
0108     const G4Pow* theG4Pow = G4Pow::GetInstance();
0109 };
0110 
0111 #endif