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 G4DNABornExcitationModel_h
00030 #define G4DNABornExcitationModel_h 1
00031
00032 #include "G4VEmModel.hh"
00033 #include "G4ParticleChangeForGamma.hh"
00034 #include "G4ProductionCutsTable.hh"
00035
00036 #include "G4DNACrossSectionDataSet.hh"
00037 #include "G4LogLogInterpolation.hh"
00038 #include "G4Electron.hh"
00039 #include "G4Proton.hh"
00040 #include "G4DNAWaterExcitationStructure.hh"
00041 #include "G4NistManager.hh"
00042
00043 class G4DNABornExcitationModel : public G4VEmModel
00044 {
00045
00046 public:
00047
00048 G4DNABornExcitationModel(const G4ParticleDefinition* p = 0,
00049 const G4String& nam = "DNABornExcitationModel");
00050
00051 virtual ~G4DNABornExcitationModel();
00052
00053 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new 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
00074 const std::vector<G4double>* fpMolWaterDensity;
00075
00076 std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
00077 std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
00078
00079 G4bool isInitialised;
00080 G4int verboseLevel;
00081
00082
00083
00084 typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
00085 MapFile tableFile;
00086
00087 typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
00088 MapData tableData;
00089
00090
00091
00092 G4int RandomSelect(G4double energy,const G4String& particle );
00093
00094
00095
00096 G4DNAWaterExcitationStructure waterStructure;
00097
00098
00099
00100 G4DNABornExcitationModel & operator=(const G4DNABornExcitationModel &right);
00101 G4DNABornExcitationModel(const G4DNABornExcitationModel&);
00102
00103 };
00104
00105
00106
00107 #endif