Geant4.10
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4.10.00.p01
source
processes
hadronic
models
neutron_hp
include
G4NeutronHPDeExGammas.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
//
28
#ifndef G4NeutronHPDeExGammas_h
29
#define G4NeutronHPDeExGammas_h 1
30
31
#include <fstream>
32
#include <
CLHEP/Units/PhysicalConstants.h
>
33
34
#include "
globals.hh
"
35
#include "
G4ios.hh
"
36
#include "
G4ReactionProductVector.hh
"
37
#include "
G4Gamma.hh
"
38
#include "
G4NeutronHPLevel.hh
"
39
#include "
G4NeutronHPGamma.hh
"
40
#include "
G4ReactionProduct.hh
"
41
42
class
G4NeutronHPDeExGammas
43
{
44
public
:
45
46
G4NeutronHPDeExGammas
()
47
{
48
levelStart = 0;
49
levelSize = 0;
50
nLevels = 0;
51
theLevels = 0;
52
}
53
~G4NeutronHPDeExGammas
()
54
{
55
if
(levelStart!=0)
delete
[] levelStart;
56
if
(levelSize!=0)
delete
[] levelSize;
57
if
(theLevels!=0)
delete
[] theLevels;
58
}
59
60
void
Init
(std::istream & aDataFile);
61
62
inline
G4ReactionProductVector
*
GetDecayGammas
(
G4int
aLevel)
63
{
64
if
(aLevel>nLevels-1 || aLevel<0)
return
0;
65
if
(nLevels==0)
return
new
G4ReactionProductVector
();
66
G4ReactionProductVector
* result =
new
G4ReactionProductVector
;
67
G4DynamicParticleVector
* theResult;
68
69
theResult = theLevels[aLevel].
GetDecayGammas
();
70
G4ReactionProduct
* theCurrent;
71
unsigned
int
i;
72
for
(i=0; i<theResult->size(); i++)
73
{
74
theCurrent =
new
G4ReactionProduct
;
75
*theCurrent = *(theResult->operator[](i));
76
delete
theResult->operator[](i);
77
G4double
costheta = 2.*
G4UniformRand
()-1;
78
G4double
theta = std::acos(costheta);
79
G4double
phi = CLHEP::twopi*
G4UniformRand
();
80
G4double
sinth = std::sin(theta);
81
G4double
en = theCurrent->
GetTotalMomentum
();
82
G4ThreeVector
temp(en*sinth*std::cos(phi), en*sinth*std::sin(phi), en*costheta );
83
theCurrent->
SetMomentum
( temp ) ;
84
result->push_back(theCurrent);
85
}
86
delete
theResult;
87
return
result;
88
}
89
90
inline
G4NeutronHPLevel
*
GetLevel
(
G4int
i)
91
{
92
if
(i>nLevels-1)
return
0;
93
return
theLevels+i;
94
}
95
96
inline
G4int
GetNumberOfLevels
() {
return
nLevels; }
97
98
inline
G4double
GetLevelEnergy
(
G4int
aLevel)
99
{
100
if
(aLevel>nLevels-1 || aLevel<0)
return
0;
101
G4double
result = theLevels[aLevel].
GetLevelEnergy
();
102
return
result;
103
}
104
private
:
105
106
G4int
* levelStart;
107
G4int
* levelSize;
108
G4int
nLevels;
109
G4NeutronHPLevel
* theLevels;
110
};
111
112
#endif
G4NeutronHPLevel.hh
CLHEP::Hep3Vector
Definition:
ThreeVector.h:41
G4ReactionProduct::GetTotalMomentum
G4double GetTotalMomentum() const
Definition:
G4ReactionProduct.hh:126
G4NeutronHPDeExGammas::GetLevel
G4NeutronHPLevel * GetLevel(G4int i)
Definition:
G4NeutronHPDeExGammas.hh:90
G4ReactionProduct::SetMomentum
void SetMomentum(const G4double x, const G4double y, const G4double z)
Definition:
G4ReactionProduct.cc:165
G4NeutronHPDeExGammas::Init
void Init(std::istream &aDataFile)
Definition:
G4NeutronHPDeExGammas.cc:35
G4NeutronHPLevel
Definition:
G4NeutronHPLevel.hh:39
G4int
int G4int
Definition:
G4Types.hh:78
G4ReactionProduct
Definition:
G4ReactionProduct.hh:53
G4NeutronHPDeExGammas::G4NeutronHPDeExGammas
G4NeutronHPDeExGammas()
Definition:
G4NeutronHPDeExGammas.hh:46
G4ReactionProductVector
std::vector< G4ReactionProduct * > G4ReactionProductVector
Definition:
G4ReactionProductVector.hh:43
G4NeutronHPDeExGammas
Definition:
G4NeutronHPDeExGammas.hh:42
G4ReactionProductVector.hh
G4UniformRand
#define G4UniformRand()
Definition:
Randomize.hh:87
G4NeutronHPDeExGammas::~G4NeutronHPDeExGammas
~G4NeutronHPDeExGammas()
Definition:
G4NeutronHPDeExGammas.hh:53
G4DynamicParticleVector
std::vector< G4DynamicParticle * > G4DynamicParticleVector
Definition:
G4DynamicParticleVector.hh:43
PhysicalConstants.h
globals.hh
G4NeutronHPGamma.hh
G4NeutronHPDeExGammas::GetNumberOfLevels
G4int GetNumberOfLevels()
Definition:
G4NeutronHPDeExGammas.hh:96
G4NeutronHPDeExGammas::GetLevelEnergy
G4double GetLevelEnergy(G4int aLevel)
Definition:
G4NeutronHPDeExGammas.hh:98
G4ios.hh
G4NeutronHPDeExGammas::GetDecayGammas
G4ReactionProductVector * GetDecayGammas(G4int aLevel)
Definition:
G4NeutronHPDeExGammas.hh:62
G4double
double G4double
Definition:
G4Types.hh:76
G4NeutronHPLevel::GetLevelEnergy
G4double GetLevelEnergy()
Definition:
G4NeutronHPLevel.hh:62
G4ReactionProduct.hh
G4Gamma.hh
Generated on Wed Apr 30 2014 15:54:55 for Geant4.10 by
1.8.7