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 G4DNAMillerGreenExcitationModel_h
00030 #define G4DNAMillerGreenExcitationModel_h 1
00031
00032 #include "G4VEmModel.hh"
00033 #include "G4ParticleChangeForGamma.hh"
00034 #include "G4ProductionCutsTable.hh"
00035
00036 #include "G4Proton.hh"
00037 #include "G4DNAGenericIonsManager.hh"
00038 #include "G4DNAEmfietzoglouExcitationModel.hh"
00039 #include "G4DNAWaterExcitationStructure.hh"
00040 #include "Randomize.hh"
00041 #include "G4NistManager.hh"
00042
00043 class G4DNAMillerGreenExcitationModel : public G4VEmModel
00044 {
00045
00046 public:
00047
00048 G4DNAMillerGreenExcitationModel(const G4ParticleDefinition* p = 0,
00049 const G4String& nam = "DNAMillerGreenExcitationModel");
00050
00051 virtual ~G4DNAMillerGreenExcitationModel();
00052
00053 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00054
00055 virtual G4double CrossSectionPerVolume(const G4Material* material,
00056 const G4ParticleDefinition* p,
00057 G4double ekin,
00058 G4double emin,
00059 G4double emax);
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* fParticleChangeForGamma;
00070
00071 private:
00072
00073 const std::vector<G4double>* fpMolWaterDensity;
00074
00075 std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
00076 std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
00077
00078 G4bool isInitialised;
00079 G4int verboseLevel;
00080
00081
00082
00083
00084
00085 G4double PartialCrossSection(G4double energy,G4int level, const G4ParticleDefinition* particle);
00086
00087 G4double Sum(G4double energy, const G4ParticleDefinition* particle);
00088
00089 G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
00090
00091 G4int nLevels;
00092
00093 G4DNAWaterExcitationStructure waterExcitation;
00094
00095 G4double S_1s(G4double t,
00096 G4double energyTransferred,
00097 G4double slaterEffectiveCharge,
00098 G4double shellNumber);
00099
00100 G4double S_2s(G4double t,
00101 G4double energyTransferred,
00102 G4double slaterEffectiveCharge,
00103 G4double shellNumber);
00104
00105 G4double S_2p(G4double t,
00106 G4double energyTransferred,
00107 G4double slaterEffectiveCharge,
00108 G4double shellNumber);
00109
00110 G4double R(G4double t,
00111 G4double energyTransferred,
00112 G4double slaterEffectiveCharge,
00113 G4double shellNumber);
00114
00115 G4double kineticEnergyCorrection[4];
00116 G4double slaterEffectiveCharge[3][4];
00117 G4double sCoefficient[3][4];
00118
00119
00120
00121 G4DNAMillerGreenExcitationModel & operator=(const G4DNAMillerGreenExcitationModel &right);
00122 G4DNAMillerGreenExcitationModel(const G4DNAMillerGreenExcitationModel&);
00123
00124 };
00125
00126
00127
00128 #endif