|
||||
File indexing completed on 2025-01-18 09:58:09
0001 // 0002 // ******************************************************************** 0003 // * License and Disclaimer * 0004 // * * 0005 // * The Geant4 software is copyright of the Copyright Holders of * 0006 // * the Geant4 Collaboration. It is provided under the terms and * 0007 // * conditions of the Geant4 Software License, included in the file * 0008 // * LICENSE and available at http://cern.ch/geant4/license . These * 0009 // * include a list of copyright holders. * 0010 // * * 0011 // * Neither the authors of this software system, nor their employing * 0012 // * institutes,nor the agencies providing financial support for this * 0013 // * work make any representation or warranty, express or implied, * 0014 // * regarding this software system or assume any liability for its * 0015 // * use. Please see the license in the file LICENSE and URL above * 0016 // * for the full disclaimer and the limitation of liability. * 0017 // * * 0018 // * This code implementation is the result of the scientific and * 0019 // * technical work of the GEANT4 collaboration. * 0020 // * By using, copying, modifying or distributing the software (or * 0021 // * any work based on the software) you agree to acknowledge its * 0022 // * use in resulting scientific publications, and indicate your * 0023 // * acceptance of all terms of the Geant4 Software license. * 0024 // ******************************************************************** 0025 // 0026 // Authors: S. Meylan and C. Villagrasa (IRSN, France) 0027 // Models come from 0028 // M. Bug et al, Rad. Phys and Chem. 130, 459-479 (2017) 0029 // 0030 0031 #ifndef G4DNAPTBExcitationModel_h 0032 #define G4DNAPTBExcitationModel_h 1 0033 0034 #include "G4DNACrossSectionDataSet.hh" 0035 #include "G4DNAPTBExcitationStructure.hh" 0036 #include "G4DNAPTBIonisationStructure.hh" 0037 #include "G4DNAWaterExcitationStructure.hh" 0038 #include "G4Electron.hh" 0039 #include "G4LogLogInterpolation.hh" 0040 #include "G4NistManager.hh" 0041 #include "G4ParticleChangeForGamma.hh" 0042 #include "G4ProductionCutsTable.hh" 0043 #include "G4Proton.hh" 0044 #include "G4VDNAModel.hh" 0045 /*! 0046 * \brief The G4DNAPTBExcitationModel class 0047 * This class implements the PTB excitation model. 0048 */ 0049 class G4Material; 0050 class G4DNAPTBExcitationModel : public G4VDNAModel 0051 { 0052 public: 0053 using MapMeanEnergy = std::map<std::size_t, G4double>; 0054 /*! 0055 * \brief G4DNAPTBExcitationModel 0056 * Constructor 0057 * \param applyToMaterial 0058 * \param p 0059 * \param nam 0060 */ 0061 G4DNAPTBExcitationModel(const G4String& applyToMaterial = "all", 0062 const G4ParticleDefinition* p = nullptr, const G4String& nam = "DNAPTBExcitationModel"); 0063 0064 /*! 0065 * \brief ~G4DNAPTBExcitationModel 0066 * Destructor 0067 */ 0068 ~G4DNAPTBExcitationModel() override = default; 0069 0070 // copy constructor and hide assignment operator 0071 G4DNAPTBExcitationModel(const G4DNAPTBExcitationModel&) = delete; // prevent copy-construction 0072 G4DNAPTBExcitationModel& operator=( 0073 const G4DNAPTBExcitationModel& right) = delete; // prevent assignement 0074 0075 /*! 0076 * \brief Initialise 0077 * Set the materials for which the model can be used and defined the energy limits 0078 */ 0079 void Initialise(const G4ParticleDefinition* particle, const G4DataVector&) override; 0080 0081 /*! 0082 * \brief CrossSectionPerVolume 0083 * Retrieve the cross section corresponding to the current material, particle and energy 0084 * \param material 0085 * \param materialName 0086 * \param p 0087 * \param ekin 0088 * \param emin 0089 * \param emax 0090 * \return the cross section value 0091 */ 0092 G4double CrossSectionPerVolume(const G4Material* material, const G4ParticleDefinition* p, 0093 G4double ekin, G4double emin, G4double emax) override; 0094 0095 /*! 0096 * \brief SampleSecondaries 0097 * If the model is selected for the ModelInterface then the SampleSecondaries method will be 0098 * called. The method sets the incident particle characteristics after the ModelInterface. \param 0099 * materialName \param particleChangeForGamma \param tmin \param tmax 0100 */ 0101 void SampleSecondaries(std::vector<G4DynamicParticle*>*, const G4MaterialCutsCouple*, 0102 const G4DynamicParticle*, G4double tmin, G4double tmax) override; 0103 0104 G4ParticleChangeForGamma* fParticleChangeForGamma = nullptr; 0105 0106 private: 0107 G4int verboseLevel = 0; ///< verbose level 0108 // Verbosity scale: 0109 // 0 = nothing 0110 // 1 = warning for energy non-conservation 0111 // 2 = details of energy budget 0112 // 3 = calculation of cross sections, file openings, sampling of atoms 0113 // 4 = entering in methods 0114 G4DNAWaterExcitationStructure waterStructure; 0115 0116 G4DNAPTBExcitationStructure ptbExcitationStructure; 0117 G4DNAPTBIonisationStructure ptbIonisationStructure; 0118 0119 MapMeanEnergy fTableMeanEnergyPTB; ///< map: [materialName]=energyValue 0120 0121 G4Material* fpGuanine_PU = nullptr; 0122 G4Material* fpTHF = nullptr; 0123 G4Material* fpPY = nullptr; 0124 G4Material* fpPU = nullptr; 0125 G4Material* fpTMP = nullptr; 0126 G4Material* fpG4_WATER = nullptr; 0127 G4Material* fpBackbone_THF = nullptr; 0128 G4Material* fpCytosine_PY = nullptr; 0129 G4Material* fpThymine_PY = nullptr; 0130 G4Material* fpAdenine_PU = nullptr; 0131 G4Material* fpBackbone_TMP = nullptr; 0132 G4Material* fpN2 = nullptr; 0133 G4DNAPTBExcitationModel* fpModelData = nullptr; 0134 0135 }; 0136 0137 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |