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
G4VDNAModel.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VDNAModel.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
// Authors: S. Meylan and C. Villagrasa (IRSN, France)
27
// This class is used to support PTB models that come from
28
// M. Bug et al, Rad. Phys and Chem. 130, 459-479 (2017)
29
//
30
31
#ifndef G4VDNAModel_HH
32
#define G4VDNAModel_HH
33
34
#ifdef _MSC_VER
35
#pragma warning(disable : 4503)
36
#endif
37
38
#include "
G4DNACrossSectionDataSet.hh
"
39
#include "
G4DNAMolecularMaterial.hh
"
40
#include "
G4LogLogInterpolation.hh
"
41
#include "
G4VEmModel.hh
"
42
49
class
G4VDNAModel
50
{
51
52
public
:
59
G4VDNAModel
(
const
G4String
& nam,
const
G4String
& applyToMaterial);
60
64
virtual
~G4VDNAModel
();
65
72
virtual
void
Initialise
(
const
G4ParticleDefinition
*
particle
,
73
const
G4DataVector
& cuts,
74
G4ParticleChangeForGamma
* fpChangeForGamme=
nullptr
) =0;
75
76
90
virtual
G4double
CrossSectionPerVolume
(
const
G4Material
*
material
,
91
const
G4String
& materialName,
92
const
G4ParticleDefinition
*
p
,
93
G4double
ekin,
94
G4double
emin
,
95
G4double
emax
) = 0;
96
106
virtual
void
SampleSecondaries
(std::vector<G4DynamicParticle*>*,
107
const
G4MaterialCutsCouple
*,
108
const
G4String
& materialName,
109
const
G4DynamicParticle
*,
110
G4ParticleChangeForGamma
*particleChangeForGamma,
111
G4double
tmin = 0,
112
G4double
tmax =
DBL_MAX
) = 0;
113
120
G4bool
IsMaterialDefine
(
const
G4String
&materialName);
121
128
G4bool
IsMaterialExistingInModel
(
const
G4String
&materialName);
129
139
G4bool
IsParticleExistingInModelForMaterial
(
const
G4String
&particleName,
const
G4String
&materialName);
140
145
G4String
GetName
(){
return
fName
;}
146
153
G4double
GetHighELimit
(
const
G4String
& material,
const
G4String
& particle) {
return
fHighEnergyLimits
[
material
][
particle
];}
154
161
G4double
GetLowELimit
(
const
G4String
& material,
const
G4String
& particle) {
return
fLowEnergyLimits
[
material
][
particle
];}
162
169
void
SetHighELimit
(
const
G4String
& material,
const
G4String
& particle,
G4double
lim) {
fHighEnergyLimits
[
material
][
particle
]=lim;}
170
177
void
SetLowELimit
(
const
G4String
& material,
const
G4String
& particle,
G4double
lim) {
fLowEnergyLimits
[
material
][
particle
]=lim;}
178
179
protected
:
180
181
// typedef used to ease the data container reading
182
//
183
typedef
std::map<G4String, std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > >
TableMapData
;
184
typedef
std::map<G4String,std::map<G4String, G4double> >
RatioMapData
;
185
typedef
std::map<G4String, G4double>::const_iterator
ItCompoMapData
;
186
187
// Getters
188
//
193
TableMapData
*
GetTableData
(){
return
&
fTableData
;}
194
195
// Setters
196
// ... no setters
197
204
std::vector<G4String>
BuildApplyToMatVect
(
const
G4String
&
materials
);
205
214
void
ReadAndSaveCSFile
(
const
G4String
&materialName,
const
G4String
&particleName,
const
G4String
&
file
,
G4double
scaleFactor);
215
225
G4int
RandomSelectShell
(
G4double
k
,
const
G4String
&particle,
const
G4String
&materialName);
226
236
void
AddCrossSectionData
(
G4String
materialName,
G4String
particleName,
G4String
fileCS,
G4String
fileDiffCS,
G4double
scaleFactor);
237
247
void
AddCrossSectionData
(
G4String
materialName,
G4String
particleName,
G4String
fileCS,
G4double
scaleFactor);
248
253
void
LoadCrossSectionData
(
const
G4String
&particleName);
254
264
virtual
void
ReadDiffCSFile
(
const
G4String
& materialName,
265
const
G4String
& particleName,
266
const
G4String
& path,
267
const
G4double
scaleFactor);
268
277
void
EnableForMaterialAndParticle
(
const
G4String
& materialName,
const
G4String
& particleName);
278
279
private
:
286
const
G4String
fStringOfMaterials
;
287
292
TableMapData
fTableData
;
293
294
std::vector<G4String>
fModelMaterials
;
295
std::vector<G4String>
fModelParticles
;
296
std::vector<G4String>
fModelCSFiles
;
297
std::vector<G4String>
fModelDiffCSFiles
;
298
std::vector<G4double>
fModelScaleFactors
;
299
300
std::map<G4String, std::map<G4String, G4double> >
fLowEnergyLimits
;
301
std::map<G4String, std::map<G4String, G4double> >
fHighEnergyLimits
;
302
303
G4String
fName
;
304
};
305
306
#endif // G4VDNAModel_HH
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
dna
models
include
G4VDNAModel.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:29
using
1.8.2 with
ECCE GitHub integration