Geant4
9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HESigmaZeroInelastic.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
// $Id$
27
28
// G4 Process: Gheisha High Energy Collision model.
29
// This includes the high energy cascading model, the two-body-resonance model
30
// and the low energy two-body model. Not included are the low energy stuff
31
// like nuclear reactions, nuclear fission without any cascading and all
32
// processes for particles at rest.
33
// First work done by J.L.Chuma and F.W.Jones, TRIUMF, June 96.
34
// H. Fesefeldt, RWTH-Aachen, 23-October-1996
35
36
#include "
G4HESigmaZeroInelastic.hh
"
37
#include "
globals.hh
"
38
#include "
G4ios.hh
"
39
#include "
G4Gamma.hh
"
40
41
void
G4HESigmaZeroInelastic::ModelDescription
(std::ostream& outFile)
const
42
{
43
outFile <<
"G4HESigmaZeroInelastic is one of the High Energy\n"
44
<<
"Parameterized (HEP) models used to implement inelastic\n"
45
<<
"Sigma0 scattering from nuclei. It is a re-engineered\n"
46
<<
"version of the GHEISHA code of H. Fesefeldt. It divides the\n"
47
<<
"initial collision products into backward- and forward-going\n"
48
<<
"clusters which are then decayed into final state hadrons.\n"
49
<<
"The model does not conserve energy on an event-by-event\n"
50
<<
"basis. It may be applied to Sigma0 with initial energies\n"
51
<<
"above 20 GeV.\n"
;
52
}
53
54
55
G4HadFinalState
*
56
G4HESigmaZeroInelastic::ApplyYourself
(
const
G4HadProjectile
& aTrack,
57
G4Nucleus
& targetNucleus)
58
{
59
G4HEVector
* pv =
new
G4HEVector
[
MAXPART
];
60
const
G4HadProjectile
* aParticle = &aTrack;
61
G4HEVector
incidentParticle(aParticle);
62
63
G4HELambdaInelastic
theLambdaInelastic;
64
theLambdaInelastic.
SetMaxNumberOfSecondaries
(
MAXPART
);
65
theLambdaInelastic.
SetVerboseLevel
(
verboseLevel
);
66
67
G4double
incidentTotalMomentum = incidentParticle.
getTotalMomentum
();
68
G4double
pgam =
G4UniformRand
()*incidentTotalMomentum*0.75;
69
G4HEVector
incidentLambda;
70
incidentLambda.
SmulAndUpdate
(incidentParticle,
71
(incidentTotalMomentum - pgam)/incidentTotalMomentum);
72
G4DynamicParticle
* aLambda =
new
G4DynamicParticle
();
73
aLambda->
SetDefinition
(
G4Lambda::Lambda
());
74
aLambda->
SetMomentum
(incidentLambda.
getMomentum
());
75
G4HadProjectile
aLambdaTrack(*aLambda);
76
G4HadFinalState
* result =
77
theLambdaInelastic.
ApplyYourself
(aLambdaTrack, targetNucleus);
78
vecLength
= theLambdaInelastic.
GetNumberOfSecondaries
();
79
80
pv[
vecLength
] =
Gamma
;
81
pv[
vecLength
].
setMomentum
(incidentParticle.
getMomentum
());
82
pv[
vecLength
].
SmulAndUpdate
( pv[
vecLength
],pgam/incidentTotalMomentum);
83
G4DynamicParticle
* aPhoton =
new
G4DynamicParticle
();
84
aPhoton->
SetDefinition
(
G4Gamma::Gamma
());
85
aPhoton->
SetMomentum
(pv[
vecLength
].getMomentum());
86
result->
AddSecondary
(aPhoton);
87
delete
[] pv;
88
return
result;
89
}
90
G4Gamma.hh
G4HESigmaZeroInelastic.hh
G4double
double G4double
Definition:
G4Types.hh:64
G4ios.hh
G4UniformRand
#define G4UniformRand()
Definition:
Randomize.hh:53
G4DynamicParticle
Definition:
G4DynamicParticle.hh:74
G4DynamicParticle::SetDefinition
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
Definition:
G4DynamicParticle.cc:271
G4DynamicParticle::SetMomentum
void SetMomentum(const G4ThreeVector &momentum)
Definition:
G4DynamicParticle.cc:337
G4Gamma::Gamma
static G4Gamma * Gamma()
Definition:
G4Gamma.cc:86
G4HEInelastic::SetMaxNumberOfSecondaries
void SetMaxNumberOfSecondaries(const G4int maxnumber)
Definition:
G4HEInelastic.hh:73
G4HEInelastic::Gamma
G4HEVector Gamma
Definition:
G4HEInelastic.hh:245
G4HEInelastic::SetVerboseLevel
void SetVerboseLevel(const G4int level)
Definition:
G4HEInelastic.hh:76
G4HELambdaInelastic
Definition:
G4HELambdaInelastic.hh:53
G4HELambdaInelastic::GetNumberOfSecondaries
G4int GetNumberOfSecondaries()
Definition:
G4HELambdaInelastic.hh:66
G4HELambdaInelastic::ApplyYourself
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
Definition:
G4HELambdaInelastic.cc:70
G4HESigmaZeroInelastic::ModelDescription
virtual void ModelDescription(std::ostream &) const
Definition:
G4HESigmaZeroInelastic.cc:41
G4HESigmaZeroInelastic::ApplyYourself
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
Definition:
G4HESigmaZeroInelastic.cc:56
G4HESigmaZeroInelastic::vecLength
G4int vecLength
Definition:
G4HESigmaZeroInelastic.hh:71
G4HESigmaZeroInelastic::verboseLevel
G4int verboseLevel
Definition:
G4HESigmaZeroInelastic.hh:69
G4HESigmaZeroInelastic::MAXPART
G4int MAXPART
Definition:
G4HESigmaZeroInelastic.hh:70
G4HEVector
Definition:
G4HEVector.hh:50
G4HEVector::getMomentum
const G4ParticleMomentum getMomentum() const
Definition:
G4HEVector.cc:157
G4HEVector::SmulAndUpdate
void SmulAndUpdate(const G4HEVector &p, G4double h)
Definition:
G4HEVector.cc:668
G4HEVector::getTotalMomentum
G4double getTotalMomentum() const
Definition:
G4HEVector.cc:166
G4HEVector::setMomentum
void setMomentum(const G4ParticleMomentum mom)
Definition:
G4HEVector.cc:117
G4HadFinalState
Definition:
G4HadFinalState.hh:46
G4HadFinalState::AddSecondary
void AddSecondary(G4DynamicParticle *aP)
Definition:
G4HadFinalState.cc:70
G4HadProjectile
Definition:
G4HadProjectile.hh:40
G4Lambda::Lambda
static G4Lambda * Lambda()
Definition:
G4Lambda.cc:108
G4Nucleus
Definition:
G4Nucleus.hh:51
globals.hh
geant4-v9.6.0
source
processes
hadronic
models
high_energy
src
G4HESigmaZeroInelastic.cc
Generated by
1.9.6