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 #ifndef G4DNAEmfietzoglouExcitationModel_h
00030 #define G4DNAEmfietzoglouExcitationModel_h 1
00031
00032 #include "G4VEmModel.hh"
00033 #include "G4ParticleChangeForGamma.hh"
00034 #include "G4ProductionCutsTable.hh"
00035
00036 #include "G4DNAWaterExcitationStructure.hh"
00037 #include <deque>
00038 #include "Randomize.hh"
00039 #include "G4Electron.hh"
00040 #include "G4NistManager.hh"
00041
00042 class G4DNAEmfietzoglouExcitationModel : public G4VEmModel
00043 {
00044
00045 public:
00046
00047 G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition* p = 0,
00048 const G4String& nam = "DNAEmfietzoglouExcitationModel");
00049
00050 virtual ~G4DNAEmfietzoglouExcitationModel();
00051
00052 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()) );
00053
00054 virtual G4double CrossSectionPerVolume(const G4Material* material,
00055 const G4ParticleDefinition* p,
00056 G4double ekin,
00057 G4double emin,
00058 G4double emax);
00059
00060 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00061 const G4MaterialCutsCouple*,
00062 const G4DynamicParticle*,
00063 G4double tmin,
00064 G4double maxEnergy);
00065
00066
00067
00068 G4double PartialCrossSection(G4double energy,G4int level);
00069
00070 protected:
00071
00072 G4ParticleChangeForGamma* fParticleChangeForGamma;
00073
00074 private:
00075
00076 const std::vector<G4double>* fpWaterDensity;
00077
00078 G4double lowEnergyLimit;
00079 G4double highEnergyLimit;
00080 G4bool isInitialised;
00081 G4int verboseLevel;
00082
00083
00084
00085 G4double Sum(G4double energy);
00086
00087 G4int RandomSelect(G4double energy);
00088
00089 G4int nLevels;
00090
00091 G4DNAWaterExcitationStructure waterExcitation;
00092
00093
00094
00095 G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right);
00096 G4DNAEmfietzoglouExcitationModel(const G4DNAEmfietzoglouExcitationModel&);
00097
00098 };
00099
00100
00101
00102 #endif