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 G4PENELOPEIONISATIONCROSSSECTION_HH
00046 #define G4PENELOPEIONISATIONCROSSSECTION_HH 1
00047
00048 #include "globals.hh"
00049 #include "G4VhShellCrossSection.hh"
00050 #include <map>
00051
00052 class G4AtomicTransitionManager;
00053 class G4PenelopeOscillatorManager;
00054 class G4PenelopeOscillator;
00055 class G4PenelopeCrossSection;
00056 class G4PenelopeIonisationXSHandler;
00057
00058 class G4PenelopeIonisationCrossSection : public G4VhShellCrossSection
00059 {
00060 public:
00062 G4PenelopeIonisationCrossSection();
00063
00065 ~G4PenelopeIonisationCrossSection();
00066
00070 std::vector<G4double> GetCrossSection(G4int Z,
00071 G4double incidentEnergy,
00072 G4double mass,
00073 G4double deltaEnergy,
00074 const G4Material* mat);
00075
00079 G4double CrossSection(G4int Z,
00080 G4AtomicShellEnumerator shell,
00081 G4double incidentEnergy,
00082 G4double mass,
00083 const G4Material* mat);
00084
00088 std::vector<G4double> Probabilities(G4int Z,
00089 G4double incidentEnergy,
00090 G4double mass,
00091 G4double deltaEnergy,
00092 const G4Material* mat) ;
00094 void SetVerbosityLevel(G4int vl){verboseLevel = vl;};
00095 G4int GetVerbosityLevel(){return verboseLevel;};
00096
00097 private:
00098 G4PenelopeIonisationCrossSection & operator=(const G4PenelopeIonisationCrossSection &right);
00099 G4PenelopeIonisationCrossSection(const G4PenelopeIonisationCrossSection&);
00100
00101
00102 G4PenelopeOscillatorManager* oscManager;
00103
00104 G4int verboseLevel;
00105
00110 G4int FindShellIDIndex(const G4Material* mat,G4int Z,G4AtomicShellEnumerator shell);
00111 std::map< std::pair<const G4Material*,G4int>, G4DataVector*> *shellIDTable;
00112
00113 G4int nMaxLevels;
00114
00115 G4double fLowEnergyLimit;
00116 G4double fHighEnergyLimit;
00117
00118 G4PenelopeIonisationXSHandler* theCrossSectionHandler;
00119 const G4AtomicTransitionManager* transitionManager;
00120 };
00121
00122 #endif
00123