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 // Based on the work described in 27 // Rad Res 163, 98-111 (2005) 28 // D. Emfietzoglou, H. Nikjoo 29 // 30 // Authors of the class (2014): 31 // I. Kyriakou (kyriak@cc.uoi.gr) 32 // D. Emfietzoglou (demfietz@cc.uoi.gr) 33 // S. Incerti (incerti@cenbg.in2p3.fr) 34 // 35 36 #ifndef G4DNAEmfietzoglouExcitationModel_h 37 #define G4DNAEmfietzoglouExcitationModel_h 1 38 39 #include "G4VEmModel.hh" 40 #include "G4ParticleChangeForGamma.hh" 41 #include "G4ProductionCutsTable.hh" 42 43 #include "G4DNACrossSectionDataSet.hh" 44 #include "G4LogLogInterpolation.hh" 45 #include "G4Electron.hh" 46 #include "G4Proton.hh" 47 #include "G4DNAEmfietzoglouWaterExcitationStructure.hh" 48 #include "G4NistManager.hh" 49 50 class G4DNAEmfietzoglouExcitationModel : public G4VEmModel 51 { 52 53 public: 54 55 G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition* p = nullptr, 56 const G4String& nam = 57 "DNAEmfietzoglouExcitationModel"); 58 59 ~G4DNAEmfietzoglouExcitationModel() override; 60 61 G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right) = delete; 62 G4DNAEmfietzoglouExcitationModel(const G4DNAEmfietzoglouExcitationModel&) = delete; 63 64 void Initialise(const G4ParticleDefinition*, 65 const G4DataVector& = *(new G4DataVector())) override; 66 67 G4double CrossSectionPerVolume(const G4Material* material, 68 const G4ParticleDefinition* p, 69 G4double ekin, 70 G4double emin, 71 G4double emax) override; 72 73 void SampleSecondaries(std::vector<G4DynamicParticle*>*, 74 const G4MaterialCutsCouple*, 75 const G4DynamicParticle*, 76 G4double tmin, 77 G4double maxEnergy) override; 78 79 inline void SelectStationary(G4bool input); 80 81 protected: 82 83 G4ParticleChangeForGamma* fParticleChangeForGamma; 84 85 private: 86 87 G4bool statCode; 88 89 // Water density table 90 const std::vector<G4double>* fpMolWaterDensity; 91 92 std::map<G4String, G4double, std::less<G4String> > lowEnergyLimit; 93 std::map<G4String, G4double, std::less<G4String> > highEnergyLimit; 94 95 G4bool isInitialised{false}; 96 G4int verboseLevel; 97 98 // Cross section 99 100 using MapFile = std::map<G4String, G4String, std::less<G4String>>; 101 MapFile tableFile; 102 103 using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>; 104 MapData tableData; 105 106 // Partial cross section 107 108 G4int RandomSelect(G4double energy, const G4String& particle); 109 110 // Final state 111 112 G4DNAEmfietzoglouWaterExcitationStructure waterStructure; 113 114 }; 115 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 117 118 inline void G4DNAEmfietzoglouExcitationModel::SelectStationary (G4bool input) 119 { 120 statCode = input; 121 } 122 123 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 124 125 #endif 126