Geant4
11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ParticleHPHash.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
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
28
//
29
#ifndef G4ParticleHPHash_h
30
#define G4ParticleHPHash_h
31
32
#include <vector>
33
#include "
globals.hh
"
34
#include "
G4ParticleHPDataPoint.hh
"
35
36
class
G4ParticleHPHash
37
{
38
public
:
39
G4ParticleHPHash
()
40
{
41
theUpper = 0;
42
prepared =
false
;
43
}
44
45
~G4ParticleHPHash
()
46
{
47
if
(theUpper)
delete
theUpper;
48
}
49
50
G4ParticleHPHash
(
const
G4ParticleHPHash
& aHash)
51
{
52
theIndex = aHash.theIndex;
53
theData = aHash.theData;
54
prepared = aHash.prepared;
55
if
(aHash.theUpper != 0)
56
{
57
theUpper =
new
G4ParticleHPHash
(*(aHash.theUpper));
58
}
59
else
60
{
61
theUpper = 0;
62
}
63
}
64
65
G4ParticleHPHash
&
operator =
(
const
G4ParticleHPHash
& aHash)
66
{
67
if
(&aHash !=
this
)
68
{
69
theIndex = aHash.theIndex;
70
theData = aHash.theData;
71
if
(aHash.theUpper != 0)
72
{
73
theUpper =
new
G4ParticleHPHash
(*(aHash.theUpper));
74
}
75
else
76
{
77
theUpper = 0;
78
}
79
}
80
return
*
this
;
81
}
82
83
void
Clear
()
84
{
85
if
(theUpper)
86
{
87
theUpper->
Clear
();
88
delete
theUpper;
89
theUpper = 0;
90
}
91
theIndex.clear();
92
theData.clear();
93
prepared =
false
;
94
}
95
96
G4bool
Prepared
()
const
{
return
prepared;}
97
inline
void
SetData
(
G4int
index,
G4double
x,
G4double
y)
98
{
99
prepared =
true
;
100
G4ParticleHPDataPoint
aPoint;
101
aPoint.
SetData
(x, y);
102
theData.push_back(aPoint);
103
theIndex.push_back(index);
104
if
(0 == theData.size()%10 && 0!=theData.size())
105
{
106
if
(0 == theUpper) theUpper =
new
G4ParticleHPHash
();
107
theUpper->
SetData
(
static_cast<
G4int
>
(theData.size())-1, x, y);
108
}
109
}
110
111
G4int
GetMinIndex
(
G4double
e)
const
112
{
113
G4int
result=-1;
114
if
(theData.size() == 0)
return
0;
115
if
(theData[0].GetX()>e)
return
0;
116
117
G4int
lower=0;
118
if
(theUpper != 0)
119
{
120
lower = theUpper->
GetMinIndex
(e);
121
}
122
unsigned
int
i;
123
for
(i=lower; i<theData.size(); i++)
124
{
125
if
(theData[i].GetX()>e)
126
{
127
result = theIndex[i-1];
128
break
;
129
}
130
}
131
if
(result == -1) result = theIndex[theIndex.size()-1];
132
return
result;
133
}
134
135
private
:
136
137
G4bool
prepared;
138
G4ParticleHPHash
* theUpper;
139
std::vector<int> theIndex;
140
std::vector<G4ParticleHPDataPoint> theData;
// the data
141
};
142
#endif
G4ParticleHPDataPoint.hh
G4double
double G4double
Definition:
G4Types.hh:83
G4bool
bool G4bool
Definition:
G4Types.hh:86
G4int
int G4int
Definition:
G4Types.hh:85
G4ParticleHPDataPoint
Definition:
G4ParticleHPDataPoint.hh:36
G4ParticleHPDataPoint::SetData
void SetData(G4double e, G4double x)
Definition:
G4ParticleHPDataPoint.hh:54
G4ParticleHPHash
Definition:
G4ParticleHPHash.hh:37
G4ParticleHPHash::SetData
void SetData(G4int index, G4double x, G4double y)
Definition:
G4ParticleHPHash.hh:97
G4ParticleHPHash::G4ParticleHPHash
G4ParticleHPHash(const G4ParticleHPHash &aHash)
Definition:
G4ParticleHPHash.hh:50
G4ParticleHPHash::Clear
void Clear()
Definition:
G4ParticleHPHash.hh:83
G4ParticleHPHash::G4ParticleHPHash
G4ParticleHPHash()
Definition:
G4ParticleHPHash.hh:39
G4ParticleHPHash::operator=
G4ParticleHPHash & operator=(const G4ParticleHPHash &aHash)
Definition:
G4ParticleHPHash.hh:65
G4ParticleHPHash::~G4ParticleHPHash
~G4ParticleHPHash()
Definition:
G4ParticleHPHash.hh:45
G4ParticleHPHash::Prepared
G4bool Prepared() const
Definition:
G4ParticleHPHash.hh:96
G4ParticleHPHash::GetMinIndex
G4int GetMinIndex(G4double e) const
Definition:
G4ParticleHPHash.hh:111
globals.hh
geant4-v11.1.1
source
processes
hadronic
models
particle_hp
include
G4ParticleHPHash.hh
Generated by
1.9.6