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 #ifndef G4DNAMeltonAttachmentModel_h
00034 #define G4DNAMeltonAttachmentModel_h 1
00035
00036 #include "G4VEmModel.hh"
00037 #include "G4ParticleChangeForGamma.hh"
00038 #include "G4DNAGenericIonsManager.hh"
00039 #include "G4DNACrossSectionDataSet.hh"
00040 #include "G4Electron.hh"
00041 #include "G4LogLogInterpolation.hh"
00042 #include "G4NistManager.hh"
00043
00044 class G4DNAMeltonAttachmentModel : public G4VEmModel
00045 {
00046
00047 public:
00048
00049 G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = 0,
00050 const G4String& nam = "DNAMeltonAttachmentModel");
00051
00052 virtual ~G4DNAMeltonAttachmentModel();
00053
00054 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00055
00056 virtual G4double CrossSectionPerVolume(const G4Material* material,
00057 const G4ParticleDefinition* p,
00058 G4double ekin,
00059 G4double emin,
00060 G4double emax);
00061
00062 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00063 const G4MaterialCutsCouple*,
00064 const G4DynamicParticle*,
00065 G4double tmin,
00066 G4double maxEnergy);
00067
00068 inline void SetDissociationFlag(G4bool);
00069 inline G4bool GetDissociationFlag();
00070
00071 protected:
00072
00073 G4ParticleChangeForGamma* fParticleChangeForGamma;
00074
00075 private:
00076
00077 const std::vector<G4double>* fpWaterDensity;
00078
00079 G4double lowEnergyLimit;
00080 G4double highEnergyLimit;
00081 G4double lowEnergyLimitOfModel;
00082 G4bool isInitialised;
00083 G4int verboseLevel;
00084 G4bool fDissociationFlag;
00085
00086
00087
00088 typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
00089 MapFile tableFile;
00090
00091 typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
00092 MapData tableData;
00093
00094
00095
00096 G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right);
00097 G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&);
00098
00099 };
00100
00101 inline void G4DNAMeltonAttachmentModel::SetDissociationFlag(G4bool flag)
00102 {
00103 fDissociationFlag = flag;
00104 }
00105
00106 inline G4bool G4DNAMeltonAttachmentModel::GetDissociationFlag()
00107 {
00108 return fDissociationFlag;
00109 }
00110
00111
00112
00113
00114 #endif