Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // >> 26 // $Id$ 26 // 27 // 27 // Author: Luciano Pandola 28 // Author: Luciano Pandola 28 // 29 // 29 // History: 30 // History: 30 // ----------- 31 // ----------- 31 // 14 Mar 2012 L. Pandola 1st implementati 32 // 14 Mar 2012 L. Pandola 1st implementation. 32 // 33 // 33 // ------------------------------------------- 34 // ------------------------------------------------------------------- 34 // 35 // 35 //! Class description: 36 //! Class description: 36 //! Access to Penelope ionisation cross secti 37 //! Access to Penelope ionisation cross sections for e- and e+. To be 37 //! registered as a specific model in G4UAtom 38 //! registered as a specific model in G4UAtomicDeexcitation. 38 //! 39 //! 39 //! NOTICE: working only for e- at the moment 40 //! NOTICE: working only for e- at the moment (no interface available for 40 //! e+) 41 //! e+) 41 //! 42 //! 42 // ------------------------------------------- 43 // ------------------------------------------------------------------- 43 44 44 #ifndef G4PENELOPEIONISATIONCROSSSECTION_HH 45 #ifndef G4PENELOPEIONISATIONCROSSSECTION_HH 45 #define G4PENELOPEIONISATIONCROSSSECTION_HH 1 46 #define G4PENELOPEIONISATIONCROSSSECTION_HH 1 46 47 47 #include "globals.hh" 48 #include "globals.hh" 48 #include "G4VhShellCrossSection.hh" 49 #include "G4VhShellCrossSection.hh" 49 #include <map> 50 #include <map> 50 51 51 class G4AtomicTransitionManager; 52 class G4AtomicTransitionManager; 52 class G4PenelopeOscillatorManager; 53 class G4PenelopeOscillatorManager; 53 class G4PenelopeOscillator; 54 class G4PenelopeOscillator; 54 class G4PenelopeCrossSection; 55 class G4PenelopeCrossSection; 55 class G4PenelopeIonisationXSHandler; 56 class G4PenelopeIonisationXSHandler; 56 57 57 class G4PenelopeIonisationCrossSection : publi 58 class G4PenelopeIonisationCrossSection : public G4VhShellCrossSection 58 { 59 { 59 public: 60 public: 60 //! Constructor. 61 //! Constructor. 61 explicit G4PenelopeIonisationCrossSection(); << 62 G4PenelopeIonisationCrossSection(); 62 63 63 //! Destructor. Clean all tables. 64 //! Destructor. Clean all tables. 64 ~G4PenelopeIonisationCrossSection(); 65 ~G4PenelopeIonisationCrossSection(); 65 66 66 //! Purely virtual method from the base inte 67 //! Purely virtual method from the base interface. Returns the cross 67 //! section for all levels of element Z in m 68 //! section for all levels of element Z in material mat at the 68 //! given energy 69 //! given energy 69 std::vector<G4double> GetCrossSection(G4int 70 std::vector<G4double> GetCrossSection(G4int Z, 70 G4double incidentEnergy, 71 G4double incidentEnergy, 71 G4double mass, 72 G4double mass, 72 G4double deltaEnergy, 73 G4double deltaEnergy, 73 const G4Material* mat) override; << 74 const G4Material* mat); 74 75 75 //! Purely virtual method from the base inte 76 //! Purely virtual method from the base interface. Returns the 76 //! cross section for the given shell in the 77 //! cross section for the given shell in the element Z of material 77 //! mat at the specified energy 78 //! mat at the specified energy 78 G4double CrossSection(G4int Z, 79 G4double CrossSection(G4int Z, 79 G4AtomicShellEnumerator shell, 80 G4AtomicShellEnumerator shell, 80 G4double incidentEnergy, 81 G4double incidentEnergy, 81 G4double mass, 82 G4double mass, 82 const G4Material* mat) override; << 83 const G4Material* mat); 83 84 84 //! Purely virtual method from the base inte 85 //! Purely virtual method from the base interface. Returns the 85 //! shell ionisation probabilities for the g 86 //! shell ionisation probabilities for the given Z in the 86 //! material mat at the specified energy. 87 //! material mat at the specified energy. 87 std::vector<G4double> Probabilities(G4int Z, 88 std::vector<G4double> Probabilities(G4int Z, 88 G4double incidentEnergy, 89 G4double incidentEnergy, 89 G4double mass, 90 G4double mass, 90 G4double deltaEnergy, 91 G4double deltaEnergy, 91 const G4Material* mat) override; << 92 const G4Material* mat) ; 92 //! Getter/setter for the verbosity level 93 //! Getter/setter for the verbosity level 93 void SetVerbosityLevel(G4int vl){fVerboseLev << 94 void SetVerbosityLevel(G4int vl){verboseLevel = vl;}; 94 G4int GetVerbosityLevel(){return fVerboseLev << 95 G4int GetVerbosityLevel(){return verboseLevel;}; 95 96 96 G4PenelopeIonisationCrossSection & operator= << 97 private: 97 = delete; << 98 G4PenelopeIonisationCrossSection & operator=(const G4PenelopeIonisationCrossSection &right); 98 G4PenelopeIonisationCrossSection(const G4Pen << 99 G4PenelopeIonisationCrossSection(const G4PenelopeIonisationCrossSection&); >> 100 >> 101 //Oscillator manager >> 102 G4PenelopeOscillatorManager* oscManager; >> 103 >> 104 G4int verboseLevel; 99 105 100 private: << 101 //!The shells in Penelope are organized per 106 //!The shells in Penelope are organized per *material*, rather than per 102 //!element, so given a material one has to f 107 //!element, so given a material one has to find the proper index for the 103 //!given Z and shellID. An appropriate look- 108 //!given Z and shellID. An appropriate look-up table is used to avoid 104 //!recalculation. 109 //!recalculation. 105 G4int FindShellIDIndex(const G4Material* mat 110 G4int FindShellIDIndex(const G4Material* mat,G4int Z,G4AtomicShellEnumerator shell); >> 111 std::map< std::pair<const G4Material*,G4int>, G4DataVector*> *shellIDTable; 106 112 107 std::map< std::pair<const G4Material*,G4int> << 113 G4int nMaxLevels; 108 114 109 //Oscillator manager << 110 G4PenelopeOscillatorManager* fOscManager; << 111 G4PenelopeIonisationXSHandler* fCrossSection << 112 const G4AtomicTransitionManager* fTransition << 113 << 114 G4double fLowEnergyLimit; 115 G4double fLowEnergyLimit; 115 G4double fHighEnergyLimit; 116 G4double fHighEnergyLimit; 116 G4int fVerboseLevel; << 117 117 G4int fNMaxLevels; << 118 G4PenelopeIonisationXSHandler* theCrossSectionHandler; >> 119 const G4AtomicTransitionManager* transitionManager; 118 }; 120 }; 119 121 120 #endif 122 #endif 121 123 122 124