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
00039 #ifndef G4HadronNucleonXsc_h
00040 #define G4HadronNucleonXsc_h
00041
00042 #include "globals.hh"
00043 #include "G4Proton.hh"
00044 #include "G4Nucleus.hh"
00045 #include "G4LPhysicsFreeVector.hh"
00046
00047
00048 class G4ParticleDefinition;
00049 class G4DynamicParticle;
00050
00051 class G4HadronNucleonXsc
00052 {
00053 public:
00054
00055 G4HadronNucleonXsc ();
00056 virtual ~G4HadronNucleonXsc ();
00057
00058 virtual
00059 G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*);
00060
00061 virtual
00062 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A);
00063
00064 virtual
00065 void DumpPhysicsTable(const G4ParticleDefinition&)
00066 {G4cout << "G4HadronNucleonXsc: uses parametrisation"<<G4endl;}
00067
00068 void CrossSectionDescription(std::ostream&) const;
00069
00070
00071
00072 G4double GetHadronNucleonXscEL(const G4DynamicParticle*, const G4ParticleDefinition*);
00073
00074 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4ParticleDefinition*);
00075
00076 G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4ParticleDefinition*);
00077
00078 G4double GetHadronNucleonXscVU(const G4DynamicParticle*, const G4ParticleDefinition*);
00079
00080
00081
00082 G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
00083
00084 G4double CalcMandelstamS( const G4double , const G4double , const G4double );
00085
00086 G4double GetCoulombBarrier(const G4DynamicParticle* aParticle, const G4ParticleDefinition* nucleon );
00087
00088 G4double GetTotalHadronNucleonXsc() { return fTotalXsc; };
00089 G4double GetElasticHadronNucleonXsc() { return fElasticXsc; };
00090 G4double GetInelasticHadronNucleonXsc(){ return fInelasticXsc; };
00091
00092 void InitialiseKaonNucleonTotXsc();
00093
00094 G4double GetKpProtonTotXscVector(G4double logEnergy){ return fKpProtonTotXscVector.Value(logEnergy); };
00095 G4double GetKpNeutronTotXscVector(G4double logEnergy){ return fKpNeutronTotXscVector.Value(logEnergy); };
00096 G4double GetKmProtonTotXscVector(G4double logEnergy){ return fKmProtonTotXscVector.Value(logEnergy); };
00097 G4double GetKmNeutronTotXscVector(G4double logEnergy){ return fKmNeutronTotXscVector.Value(logEnergy); };
00098
00099 private:
00100
00101 const G4double fUpperLimit;
00102 const G4double fLowerLimit;
00103
00104 G4double fTotalXsc, fElasticXsc, fInelasticXsc;
00105 G4double fHadronNucleonXsc;
00106
00107
00108
00109 static const G4double fKpProtonTotXsc[66];
00110 static const G4double fKpProtonTotTkin[66];
00111
00112 static const G4double fKpNeutronTotXsc[75];
00113 static const G4double fKpNeutronTotTkin[75];
00114
00115 static const G4double fKmProtonTotXsc[106];
00116 static const G4double fKmProtonTotTkin[106];
00117
00118 static const G4double fKmNeutronTotXsc[68];
00119 static const G4double fKmNeutronTotTkin[68];
00120
00121 G4LPhysicsFreeVector fKpProtonTotXscVector;
00122 G4LPhysicsFreeVector fKpNeutronTotXscVector;
00123 G4LPhysicsFreeVector fKmProtonTotXscVector;
00124 G4LPhysicsFreeVector fKmNeutronTotXscVector;
00125
00126 G4ParticleDefinition* theGamma;
00127 G4ParticleDefinition* theProton;
00128 G4ParticleDefinition* theNeutron;
00129 G4ParticleDefinition* theAProton;
00130 G4ParticleDefinition* theANeutron;
00131 G4ParticleDefinition* thePiPlus;
00132 G4ParticleDefinition* thePiMinus;
00133 G4ParticleDefinition* thePiZero;
00134 G4ParticleDefinition* theKPlus;
00135 G4ParticleDefinition* theKMinus;
00136 G4ParticleDefinition* theK0S;
00137 G4ParticleDefinition* theK0L;
00138 G4ParticleDefinition* theL;
00139 G4ParticleDefinition* theAntiL;
00140 G4ParticleDefinition* theSPlus;
00141 G4ParticleDefinition* theASPlus;
00142 G4ParticleDefinition* theSMinus;
00143 G4ParticleDefinition* theASMinus;
00144 G4ParticleDefinition* theS0;
00145 G4ParticleDefinition* theAS0;
00146 G4ParticleDefinition* theXiMinus;
00147 G4ParticleDefinition* theXi0;
00148 G4ParticleDefinition* theAXiMinus;
00149 G4ParticleDefinition* theAXi0;
00150 G4ParticleDefinition* theOmega;
00151 G4ParticleDefinition* theAOmega;
00152 G4ParticleDefinition* theD;
00153 G4ParticleDefinition* theT;
00154 G4ParticleDefinition* theA;
00155 G4ParticleDefinition* theHe3;
00156
00157 };
00158
00159
00160 #endif