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
00043
00044
00045 #ifndef G4PENELOPEIONISATIONXSHANDLER_HH
00046 #define G4PENELOPEIONISATIONXSHANDLER_HH 1
00047
00048 #include "globals.hh"
00049 #include "G4DataVector.hh"
00050 #include "G4Material.hh"
00051 #include <map>
00052
00053 class G4PhysicsFreeVector;
00054 class G4PhysicsLogVector;
00055 class G4ParticleDefinition;
00056 class G4PenelopeOscillatorManager;
00057 class G4PenelopeOscillator;
00058 class G4PenelopeCrossSection;
00059
00060 class G4PenelopeIonisationXSHandler
00061 {
00062
00063 public:
00067 G4PenelopeIonisationXSHandler(size_t nBins=200);
00068
00070 virtual ~G4PenelopeIonisationXSHandler();
00071
00073 G4double GetDensityCorrection(const G4Material*,G4double energy);
00074
00077 G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
00078 const G4Material*,G4double cut);
00080 void SetVerboseLevel(G4int vl){verboseLevel = vl;};
00081
00082 private:
00083 G4PenelopeIonisationXSHandler & operator=(const G4PenelopeIonisationXSHandler &right);
00084 G4PenelopeIonisationXSHandler(const G4PenelopeIonisationXSHandler&);
00085
00086
00087 void BuildXSTable(const G4Material*,G4double cut,
00088 const G4ParticleDefinition*);
00089
00090
00091 void BuildDeltaTable(const G4Material*);
00092
00093 G4DataVector* ComputeShellCrossSectionsElectron(G4PenelopeOscillator* ,
00094 G4double energy,G4double cut,
00095 G4double delta);
00096
00097 G4DataVector* ComputeShellCrossSectionsPositron(G4PenelopeOscillator* ,
00098 G4double energy,G4double cut,
00099 G4double delta);
00100
00101
00102 G4PenelopeOscillatorManager* oscManager;
00103
00104
00105 std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTableElectron;
00106 std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTablePositron;
00107
00108
00109 std::map<const G4Material*,G4PhysicsFreeVector*> *theDeltaTable;
00110
00111
00112 G4PhysicsLogVector* energyGrid;
00113 size_t nBins;
00114
00115 G4int verboseLevel;
00116
00117 };
00118
00119 #endif
00120