Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4PenelopeIonisationXSHandler.hh
Go to the documentation of this file.
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// Author: Luciano Pandola
28//
29// History:
30// -----------
31// 09 Mar 2012 L. Pandola 1st implementation.
32//
33// -------------------------------------------------------------------
34//
35//! Class description:
36//! This class is meant to calculate, store and provide the shell-per-shell
37//! and the total ionisation cross section calculated by the Penelope model.
38//! The information is provided to other physics models, notably: Penelope
39//! ionisation model and Penelope "PIXE" model. Cross sections are calculated
40//! per material-cut couple and stored as G4PenelopeCrossSection objects.
41//!
42// -------------------------------------------------------------------
43
44#ifndef G4PENELOPEIONISATIONXSHANDLER_HH
45#define G4PENELOPEIONISATIONXSHANDLER_HH 1
46
47#include "globals.hh"
48#include "G4DataVector.hh"
49#include "G4Material.hh"
50#include <map>
51
58
60{
61public:
62 //! Constructor. nBins is the number of intervals in the
63 //! energy grid. By default the energy grid goes from 100 eV
64 //! to 100 GeV.
65 explicit G4PenelopeIonisationXSHandler(size_t nBins=200);
66
67 //! Destructor. Clean all tables.
69
70 //!Returns the density coeection for the material at the given energy
71 G4double GetDensityCorrection(const G4Material*,const G4double energy) const;
72 //! Returns the table of cross sections for the given particle, given
73 //! material and given cut as a G4PenelopeCrossSection* pointer.
75 const G4Material*,const G4double cut) const;
76 //!Setter for the verbosity level
77 void SetVerboseLevel(G4int vl){fVerboseLevel = vl;};
78
79 //! This can be inkoved only by the master
80 void BuildXSTable(const G4Material*,G4double cut,
81 const G4ParticleDefinition*,G4bool isMaster=true);
82
85
86private:
87 void BuildDeltaTable(const G4Material*);
88
89 G4DataVector* ComputeShellCrossSectionsElectron(G4PenelopeOscillator* ,
90 G4double energy,G4double cut,
91 G4double delta);
92
93 G4DataVector* ComputeShellCrossSectionsPositron(G4PenelopeOscillator* ,
94 G4double energy,G4double cut,
95 G4double delta);
96
97 //Oscillator manager
98 G4PenelopeOscillatorManager* fOscManager;
99
100 //G4PenelopeCrossSection takes care of the logs
101 std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *fXSTableElectron;
102 std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *fXSTablePositron;
103
104 //delta vs. log(energy)
105 std::map<const G4Material*,G4PhysicsFreeVector*> *fDeltaTable;
106
107 //energy grid
108 G4PhysicsLogVector* fEnergyGrid;
109
110 G4int fVerboseLevel;
111 size_t fNBins;
112};
113
114#endif
115
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
G4double GetDensityCorrection(const G4Material *, const G4double energy) const
Returns the density coeection for the material at the given energy.
virtual ~G4PenelopeIonisationXSHandler()
Destructor. Clean all tables.
void BuildXSTable(const G4Material *, G4double cut, const G4ParticleDefinition *, G4bool isMaster=true)
This can be inkoved only by the master.
const G4PenelopeCrossSection * GetCrossSectionTableForCouple(const G4ParticleDefinition *, const G4Material *, const G4double cut) const
G4PenelopeIonisationXSHandler(const G4PenelopeIonisationXSHandler &)=delete
void SetVerboseLevel(G4int vl)
Setter for the verbosity level.
G4PenelopeIonisationXSHandler & operator=(const G4PenelopeIonisationXSHandler &right)=delete