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
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef G4BGGPionElasticXS_h
00050 #define G4BGGPionElasticXS_h
00051
00052 #include "globals.hh"
00053 #include "G4VCrossSectionDataSet.hh"
00054 #include "G4ParticleDefinition.hh"
00055
00056 class G4GlauberGribovCrossSection;
00057 class G4UPiNuclearCrossSection;
00058 class G4HadronNucleonXsc;
00059 class G4ComponentSAIDTotalXS;
00060 class G4Material;
00061 class G4Element;
00062 class G4Isotope;
00063
00064 class G4BGGPionElasticXS : public G4VCrossSectionDataSet
00065 {
00066 public:
00067
00068 G4BGGPionElasticXS (const G4ParticleDefinition*);
00069
00070 virtual ~G4BGGPionElasticXS();
00071
00072 virtual
00073 G4bool IsElementApplicable(const G4DynamicParticle*, G4int Z,
00074 const G4Material*);
00075
00076 virtual
00077 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A,
00078 const G4Element* elm = 0,
00079 const G4Material* mat = 0);
00080
00081 virtual
00082 G4double GetElementCrossSection(const G4DynamicParticle*, G4int Z,
00083 const G4Material* mat = 0);
00084
00085 virtual
00086 G4double GetIsoCrossSection(const G4DynamicParticle*, G4int Z, G4int A,
00087 const G4Isotope* iso = 0,
00088 const G4Element* elm = 0,
00089 const G4Material* mat = 0);
00090
00091 virtual
00092 void BuildPhysicsTable(const G4ParticleDefinition&);
00093
00094 virtual void CrossSectionDescription(std::ostream&) const;
00095
00096 private:
00097
00098 G4BGGPionElasticXS & operator=(const G4BGGPionElasticXS &right);
00099 G4BGGPionElasticXS(const G4BGGPionElasticXS&);
00100
00101 G4double fGlauberEnergy;
00102 G4double fLowEnergy;
00103 G4double fSAIDHighEnergyLimit;
00104 G4double theGlauberFac[93];
00105 G4double theCoulombFac[93];
00106 G4int theA[93];
00107
00108 const G4ParticleDefinition* particle;
00109 const G4ParticleDefinition* theProton;
00110 G4GlauberGribovCrossSection* fGlauber;
00111 G4UPiNuclearCrossSection* fPion;
00112 G4HadronNucleonXsc* fHadron;
00113 G4ComponentSAIDTotalXS* fSAID;
00114 G4bool isPiplus;
00115 G4bool isInitialized;
00116 };
00117
00118 #endif