Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // Geant4 header G4EmDNABuilder 28 // 29 // Author V.Ivanchenko 18.02.2022 30 // 31 // Utilities to build DNA physics 32 // 33 34 #ifndef G4EmDNABuilder_h 35 #define G4EmDNABuilder_h 1 36 37 #include "globals.hh" 38 // DNA processes 39 #include "G4DNAElectronSolvation.hh" 40 #include "G4DNAElastic.hh" 41 #include "G4DNAIonisation.hh" 42 #include "G4DNAExcitation.hh" 43 #include "G4DNAVibExcitation.hh" 44 #include "G4DNAAttachment.hh" 45 #include "G4DNAChargeDecrease.hh" 46 #include "G4DNAChargeIncrease.hh" 47 #include "G4LowECapture.hh" 48 49 enum G4EmDNAMscModelType 50 { 51 dnaUrban = 0, 52 dnaWVI, 53 dnaGS 54 }; 55 56 class G4ParticleDefinition; 57 class G4Region; 58 59 class G4EmDNABuilder 60 { 61 public: 62 63 static void ConstructDNAParticles(); 64 65 static void ConstructStandardEmPhysics(const G4double emin_electron, 66 const G4double emin_proton, 67 const G4double emin_alpha, 68 const G4double emin_ion, 69 const G4EmDNAMscModelType mscType, 70 const G4bool fast); 71 72 static void ConstructDNAElectronPhysics(const G4double emaxDNA, 73 const G4int opt, 74 const G4bool fast, 75 const G4bool stationary, 76 const G4Region* reg = nullptr); 77 78 static void ConstructDNAProtonPhysics(const G4double e1DNA, 79 const G4double emaxDNA, 80 const G4int opt, 81 const G4bool fast, 82 const G4bool stationary, 83 const G4Region* reg = nullptr); 84 85 static void ConstructDNAIonPhysics(const G4double emax, 86 const G4bool stationary, 87 const G4Region* reg = nullptr); 88 89 static void ConstructDNALightIonPhysics(G4ParticleDefinition* part, 90 const G4int charge, 91 const G4int opt, 92 const G4double emax, 93 const G4bool fast, 94 const G4bool stationary, 95 const G4Region* reg = nullptr); 96 97 static G4DNAElectronSolvation* FindOrBuildElectronSolvation(); 98 99 static G4DNAElastic* 100 FindOrBuildElastic(G4ParticleDefinition* part, const G4String& name); 101 102 static G4DNAExcitation* 103 FindOrBuildExcitation(G4ParticleDefinition* part, const G4String& name); 104 105 static G4DNAVibExcitation* 106 FindOrBuildVibExcitation(G4ParticleDefinition* part, const G4String& name); 107 108 static G4DNAIonisation* 109 FindOrBuildIonisation(G4ParticleDefinition* part, const G4String& name); 110 111 static G4DNAAttachment* 112 FindOrBuildAttachment(G4ParticleDefinition* part, const G4String& name); 113 114 static G4DNAChargeDecrease* 115 FindOrBuildChargeDecrease(G4ParticleDefinition* part, const G4String& name); 116 117 static G4DNAChargeIncrease* 118 FindOrBuildChargeIncrease(G4ParticleDefinition* part, const G4String& name); 119 120 static G4LowECapture* 121 FindOrBuildCapture(const G4double elim, G4ParticleDefinition* part); 122 123 static void FindOrBuildNuclearStopping(G4ParticleDefinition* part, 124 const G4double elim); 125 126 private: 127 128 static void StandardHadronPhysics(G4ParticleDefinition*, 129 const G4double lowELimitForMSC, 130 const G4double lowELimitForIoni, 131 const G4double maxEnergy, 132 const G4EmDNAMscModelType mscType, 133 const G4bool isIon); 134 }; 135 136 #endif 137