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 #ifndef G4LivermorePolarizedPhotoElectricModel_h
00032 #define G4LivermorePolarizedPhotoElectricModel_h 1
00033
00034 #include "G4VEmModel.hh"
00035 #include "G4Electron.hh"
00036 #include "G4ParticleChangeForGamma.hh"
00037 #include "G4CrossSectionHandler.hh"
00038
00039 class G4VAtomDeexcitation;
00040
00041 class G4LivermorePolarizedPhotoElectricModel : public G4VEmModel
00042 {
00043
00044 public:
00045
00046 G4LivermorePolarizedPhotoElectricModel(
00047 const G4String& nam = "LivermorePolarizedPhotoElectric");
00048
00049 virtual ~G4LivermorePolarizedPhotoElectricModel();
00050
00051 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00052
00053 virtual G4double ComputeCrossSectionPerAtom(
00054 const G4ParticleDefinition*,
00055 G4double kinEnergy,
00056 G4double Z,
00057 G4double A=0,
00058 G4double cut=0,
00059 G4double emax=DBL_MAX);
00060
00061 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00062 const G4MaterialCutsCouple*,
00063 const G4DynamicParticle*,
00064 G4double tmin,
00065 G4double maxEnergy);
00066
00067 protected:
00068
00069 G4ParticleChangeForGamma* fParticleChange;
00070
00071 private:
00072
00073 G4LivermorePolarizedPhotoElectricModel & operator=(const G4LivermorePolarizedPhotoElectricModel &right);
00074 G4LivermorePolarizedPhotoElectricModel(const G4LivermorePolarizedPhotoElectricModel&);
00075
00076 G4ParticleDefinition* theGamma;
00077 G4ParticleDefinition* theElectron;
00078
00079 G4double lowEnergyLimit;
00080 G4double highEnergyLimit;
00081 G4int verboseLevel;
00082 G4bool fDeexcitationActive;
00083
00084 G4VCrossSectionHandler* crossSectionHandler;
00085 G4VCrossSectionHandler* shellCrossSectionHandler;
00086
00087 G4VAtomDeexcitation* fAtomDeexcitation;
00088
00089 };
00090
00091
00092
00093 #endif