Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
processes
hadronic
models
inclxx
incl_physics
src
G4INCLClusterUtils.cc
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
// INCL++ intra-nuclear cascade model
27
// Pekka Kaitaniemi, CEA and Helsinki Institute of Physics
28
// Davide Mancusi, CEA
29
// Alain Boudard, CEA
30
// Sylvie Leray, CEA
31
// Joseph Cugnon, University of Liege
32
//
33
#define INCLXX_IN_GEANT4_MODE 1
34
35
#include "
globals.hh
"
36
37
#include "
G4INCLClusterUtils.hh
"
38
39
namespace
G4INCL {
40
41
G4double
ClusterUtils::getTotalEnergy
(
const
ParticleList
&
pl
) {
42
G4double
E = 0.0;
43
for
(
ParticleIter
i = pl.begin(); i != pl.end(); ++i) {
44
E += (*i)->getEnergy();
45
}
46
return
E;
47
}
48
49
G4double
ClusterUtils::getKineticEnergy
(
const
ParticleList
&
pl
) {
50
G4double
Ekin = 0.0;
51
for
(
ParticleIter
i = pl.begin(); i != pl.end(); ++i) {
52
Ekin += std::sqrt(std::pow((*i)->getEnergy(), 2) - std::pow((*i)->getMass(), 2));;
53
}
54
return
Ekin;
55
}
56
57
G4int
ClusterUtils::getZ
(
const
ParticleList
&
pl
) {
58
G4int
Z
= 0;
59
for
(
ParticleIter
i = pl.begin(); i != pl.end(); ++i) {
60
Z += (*i)->getZ();
61
}
62
return
Z
;
63
}
64
65
G4int
ClusterUtils::getZ
(
const
ParticleList
&
pl
,
Particle
*
p
) {
66
return
(
ClusterUtils::getZ
(pl) + p->
getZ
());
67
}
68
69
G4int
ClusterUtils::getA
(
const
ParticleList
&
pl
) {
70
G4int
A = 0;
71
for
(
ParticleIter
i = pl.begin(); i != pl.end(); ++i) {
72
A += (*i)->getA();
73
}
74
return
A;
75
}
76
77
G4int
ClusterUtils::getA
(
const
ParticleList
&
pl
,
Particle
*
p
) {
78
return
(
ClusterUtils::getA
(pl) + p->
getA
());
79
}
80
81
ThreeVector
ClusterUtils::getNewPositionVector
(
const
ParticleList
&
pl
)
82
{
83
ThreeVector
pos(0.0, 0.0, 0.0);
84
G4int
A = 1;
85
for
(
ParticleIter
i = pl.begin(); i != pl.end(); ++i) {
86
pos += (pos * A)*
ParticleTable::clusterPosFact
[A];
87
++A;
88
}
89
return
pos;
90
}
91
92
ThreeVector
ClusterUtils::getNewPositionVector
(
const
ParticleList
&
pl
,
Particle
*
p
)
93
{
94
ThreeVector
pos =
ClusterUtils::getNewPositionVector
(pl);
95
return
((pos * pl.size()) + p->
getPosition
()) *
ParticleTable::clusterPosFact
[pl.size() + 1];
96
}
97
98
ThreeVector
ClusterUtils::getNewPositionVector
(
const
ThreeVector
&oldPosition,
const
ParticleList
&
pl
,
Particle
*
p
) {
99
ThreeVector
newPosition = oldPosition;
100
newPosition *= pl.size();
101
newPosition += p->
getPosition
();
102
newPosition *=
ParticleTable::clusterPosFact
[pl.size() + 1];
103
return
newPosition;
104
}
105
106
G4double
ClusterUtils::getPhaseSpace
(
const
ThreeVector
&clusterPosition,
107
const
ThreeVector
&clusterMomentum,
108
G4int
clusterA,
109
Particle
*
p
) {
110
G4double
psSpace = (p->
getPosition
() - clusterPosition).mag2();
111
G4double
psMomentum = (p->
getMomentum
() - clusterMomentum).mag2();
112
return
psSpace * psMomentum *
ParticleTable::clusterPosFact2
[clusterA + p->
getA
()];
113
}
114
115
G4bool
ClusterUtils::isBetterCluster
(
ParticleList
*,
ParticleList
*) {
116
return
true
;
117
}
118
}
Generated on Sat May 25 2013 14:33:59 for Geant4 by
1.8.4