ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4PenelopeOscillatorManager.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4PenelopeOscillatorManager.hh
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
//
28
// Authors: Luciano Pandola (luciano.pandola at lngs.infn.it)
29
//
30
// History:
31
// -----------
32
//
33
// 03 Dec 2009 First implementation, Luciano Pandola
34
// 16 Feb 2010 Added methods to calculate and store also A and Z
35
// for molecules. Luciano Pandola
36
// 16 Mar 2010 Added methods to calculate and store mean exc energy
37
// and plasma energy (used for Ionisation). L Pandola
38
// 18 Mar 2010 Added method to retrieve number of atoms per
39
// molecule. L. Pandola
40
// 15 Mar 2012 Added method to retrieve number of atom of given Z per
41
// molecule, L. Pandola
42
//
43
// -------------------------------------------------------------------
44
//
51
//
52
53
// -------------------------------------------------------------------
54
55
#ifndef G4PenelopeOscillatorManager_h
56
#define G4PenelopeOscillatorManager_h 1
57
58
#include "
globals.hh
"
59
#include "
G4PenelopeOscillator.hh
"
60
#include <vector>
61
#include <map>
62
63
class
G4Material
;
64
65
typedef
std::vector<G4PenelopeOscillator*>
G4PenelopeOscillatorTable
;
66
67
// This class is a singleton
68
class
G4PenelopeOscillatorManager
{
69
70
public
:
71
72
// The only way to get an instance of this class is to call the
73
// function GetOscillatorManager()
74
static
G4PenelopeOscillatorManager
*
GetOscillatorManager
();
75
76
//Clear() is invoked by Initialise() of the processes, if required
77
void
Clear
();
78
void
Dump
(
const
G4Material
*);
79
80
//For ionisation
81
G4PenelopeOscillatorTable
*
GetOscillatorTableIonisation
(
const
G4Material
*);
82
G4PenelopeOscillator
*
GetOscillatorIonisation
(
const
G4Material
*,
G4int
);
83
84
//For Compton
85
G4PenelopeOscillatorTable
*
GetOscillatorTableCompton
(
const
G4Material
*);
86
G4PenelopeOscillator
*
GetOscillatorCompton
(
const
G4Material
*,
G4int
);
87
88
void
SetVerbosityLevel
(
G4int
vl){
verbosityLevel
= vl;};
89
G4int
GetVerbosityLevel
(){
return
verbosityLevel
;};
90
93
G4double
GetTotalZ
(
const
G4Material
*);
95
G4double
GetTotalA
(
const
G4Material
*);
97
G4double
GetMeanExcitationEnergy
(
const
G4Material
*);
99
G4double
GetPlasmaEnergySquared
(
const
G4Material
*);
101
G4double
GetAtomsPerMolecule
(
const
G4Material
*);
102
103
//Components of each molecule
104
G4double
GetNumberOfZAtomsPerMolecule
(
const
G4Material
*,
G4int
Z
);
105
106
protected
:
107
G4PenelopeOscillatorManager
();
108
~G4PenelopeOscillatorManager
();
109
110
private
:
111
// Hide copy constructor and assignment operator
112
G4PenelopeOscillatorManager
&
operator=
(
const
113
G4PenelopeOscillatorManager
&
right
);
114
G4PenelopeOscillatorManager
(
const
G4PenelopeOscillatorManager
&);
115
116
static
G4ThreadLocal
G4PenelopeOscillatorManager
*
instance
;
117
118
//In Penelope2008, the Ionisation and Compton oscillator tables are
119
//slightly different!
120
std::map<const G4Material*,G4PenelopeOscillatorTable*>
121
*
oscillatorStoreIonisation
;
122
123
std::map<const G4Material*,G4PenelopeOscillatorTable*>
124
*
oscillatorStoreCompton
;
125
126
std::map<const G4Material*,G4double> *
atomicNumber
;
127
std::map<const G4Material*,G4double> *
atomicMass
;
128
129
std::map<const G4Material*,G4double> *
excitationEnergy
;
130
std::map<const G4Material*,G4double> *
plasmaSquared
;
131
132
std::map<const G4Material*,G4double> *
atomsPerMolecule
;
133
134
std::map< std::pair<const G4Material*,G4int>,
G4double
> *
atomTablePerMolecule
;
135
136
//create both tables simultaneously
137
void
CheckForTablesCreated
();
138
139
void
ReadElementData
();
140
G4double
elementData
[5][2000];
141
G4bool
fReadElementData
;
142
143
void
BuildOscillatorTable
(
const
G4Material
*);
144
145
G4int
verbosityLevel
;
146
147
};
148
149
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
lowenergy
include
G4PenelopeOscillatorManager.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:31
using
1.8.2 with
ECCE GitHub integration