Geant4-11
source
processes
hadronic
models
inclxx
utils
src
G4INCLIAvatar.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
// Alain Boudard, CEA-Saclay, France
28
// Joseph Cugnon, University of Liege, Belgium
29
// Jean-Christophe David, CEA-Saclay, France
30
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31
// Sylvie Leray, CEA-Saclay, France
32
// Davide Mancusi, CEA-Saclay, France
33
//
34
#define INCLXX_IN_GEANT4_MODE 1
35
36
#include "
globals.hh
"
37
38
/*
39
* IAvatar.cc
40
*
41
* \date 4 juin 2009
42
* \author Pekka Kaitaniemi
43
*/
44
45
#include "
G4INCLIAvatar.hh
"
46
#include "
G4INCLRandom.hh
"
47
#include <sstream>
48
49
namespace
G4INCL
{
50
51
G4ThreadLocal
long
IAvatar::nextID
= 1;
52
53
IAvatar::IAvatar
() :
54
type(
UnknownAvatarType
),
55
theTime(0.)
56
{
57
ID
=
nextID
;
58
nextID
++;
59
}
60
61
IAvatar::IAvatar
(
G4double
time) :
62
type(
UnknownAvatarType
),
63
theTime(time)
64
{
65
ID
=
nextID
;
66
nextID
++;
67
}
68
69
IAvatar::~IAvatar
() {
70
INCL_DEBUG
(
"destroying avatar "
<<
this
<< std::endl);
71
}
72
73
std::string
IAvatar::toString
() {
74
std::stringstream entry;
75
std::stringstream particleString;
76
ParticleList
const
&pl =
getParticles
();
77
G4int
numberOfParticles
= 0;
78
for
(
ParticleIter
i=pl.begin(), e=pl.end(); i!=e; ++i) {
79
numberOfParticles
++;
80
particleString << (*i)->getID() <<
" "
;
81
}
82
if
(
numberOfParticles
== 1) particleString <<
"-1"
;
83
entry <<
getID
() <<
" "
84
<<
getType
() <<
" "
85
<<
getTime
() <<
" "
86
<< particleString.str();
87
return
entry.str();
88
}
89
90
FinalState
*
IAvatar::getFinalState
() {
91
FinalState
*fs =
new
FinalState
;
92
fillFinalState
(fs);
93
return
fs;
94
}
95
96
void
IAvatar::fillFinalState
(
FinalState
*fs) {
97
INCL_DEBUG
(
"Random seeds before preInteraction: "
<<
Random::getSeeds
() <<
'\n'
);
98
preInteraction
();
99
INCL_DEBUG
(
"Random seeds before getChannel: "
<<
Random::getSeeds
() <<
'\n'
);
100
IChannel
*c =
getChannel
();
101
if
( !c )
102
return
;
103
INCL_DEBUG
(
"Random seeds before getFinalState: "
<<
Random::getSeeds
() <<
'\n'
);
104
c->
fillFinalState
(fs);
105
INCL_DEBUG
(
"Random seeds before postInteraction: "
<<
Random::getSeeds
() <<
'\n'
);
106
postInteraction
(fs);
107
delete
c;
108
}
109
110
}
G4INCLIAvatar.hh
INCL_DEBUG
#define INCL_DEBUG(x)
Definition:
G4INCLLogger.hh:240
G4INCLRandom.hh
G4double
double G4double
Definition:
G4Types.hh:83
G4int
int G4int
Definition:
G4Types.hh:85
numberOfParticles
static int numberOfParticles
Definition:
MCGIDI_particle.cc:14
G4INCL::FinalState
Definition:
G4INCLFinalState.hh:64
G4INCL::IAvatar::fillFinalState
void fillFinalState(FinalState *fs)
Definition:
G4INCLIAvatar.cc:96
G4INCL::IAvatar::getID
long getID() const
Definition:
G4INCLIAvatar.hh:94
G4INCL::IAvatar::postInteraction
virtual void postInteraction(FinalState *)=0
G4INCL::IAvatar::getParticles
virtual ParticleList getParticles() const =0
G4INCL::IAvatar::preInteraction
virtual void preInteraction()=0
G4INCL::IAvatar::getTime
G4double getTime() const
Definition:
G4INCLIAvatar.hh:84
G4INCL::IAvatar::getFinalState
FinalState * getFinalState()
Definition:
G4INCLIAvatar.cc:90
G4INCL::IAvatar::~IAvatar
virtual ~IAvatar()
Definition:
G4INCLIAvatar.cc:69
G4INCL::IAvatar::ID
long ID
Definition:
G4INCLIAvatar.hh:98
G4INCL::IAvatar::getChannel
virtual G4INCL::IChannel * getChannel()=0
G4INCL::IAvatar::IAvatar
IAvatar()
Definition:
G4INCLIAvatar.cc:53
G4INCL::IAvatar::getType
AvatarType getType() const
Definition:
G4INCLIAvatar.hh:90
G4INCL::IAvatar::toString
std::string toString()
Definition:
G4INCLIAvatar.cc:73
G4INCL::IAvatar::nextID
static G4ThreadLocal long nextID
Definition:
G4INCLIAvatar.hh:100
G4INCL::IChannel
Definition:
G4INCLIChannel.hh:57
G4INCL::IChannel::fillFinalState
virtual void fillFinalState(FinalState *fs)=0
G4INCL::ParticleList
Definition:
G4INCLParticle.hh:62
globals.hh
G4INCL::Random::getSeeds
SeedVector getSeeds()
Definition:
G4INCLRandom.cc:89
G4INCL
Definition:
G4INCLAvatarDumpAction.hh:51
G4INCL::ParticleIter
ParticleList::const_iterator ParticleIter
Definition:
G4INCLParticle.hh:72
G4INCL::UnknownAvatarType
@ UnknownAvatarType
Definition:
G4INCLIAvatar.hh:70
G4ThreadLocal
#define G4ThreadLocal
Definition:
tls.hh:77
Generated by
1.9.3