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
im_r_matrix
src
G4PartialWidthTable.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
//
27
// -------------------------------------------------------------------
28
// GEANT4 Class file
29
//
30
// For information related to this code contact:
31
//
32
// File name: G4PartialWidthTable
33
//
34
// Author:
35
//
36
// Creation date: 15 April 1999
37
//
38
// Modifications:
39
//
40
// -------------------------------------------------------------------
41
42
#include "
globals.hh
"
43
#include "
G4SystemOfUnits.hh
"
44
#include "
G4HadronicException.hh
"
45
#include "
G4ios.hh
"
46
#include "
G4PartialWidthTable.hh
"
47
#include "
G4KineticTrack.hh
"
48
49
G4PartialWidthTable::G4PartialWidthTable
(
const
G4double
* energies,
G4int
entries) : nEnergies(entries)
50
{
51
// Fill the vector with tabulated energies
52
G4int
i;
53
for
(i=0; i<entries; i++)
54
{
55
G4double
e
= *(energies + i) *
GeV
;
56
energy.push_back(e);
57
}
58
}
59
60
61
G4PartialWidthTable::~G4PartialWidthTable
()
62
{ }
63
64
65
G4bool
G4PartialWidthTable::operator==
(
const
G4PartialWidthTable
&
right
)
const
66
{
67
return
(
this
== (
G4PartialWidthTable
*) &right);
68
}
69
70
71
G4bool
G4PartialWidthTable::operator!=
(
const
G4PartialWidthTable
&
right
)
const
72
{
73
return
(
this
!= (
G4PartialWidthTable
*) &right);
74
}
75
76
77
G4int
G4PartialWidthTable::NumberOfChannels
()
const
78
{
79
return
widths.size();
80
}
81
82
83
const
G4PhysicsVector
*
G4PartialWidthTable::Width
(
const
G4String
& name1,
const
G4String
& name2)
const
84
{
85
// Returned pointer is not owned by the client
86
G4int
i;
87
G4PhysicsVector
*
width
= 0;
88
G4int
n
= 0;
89
G4int
entries = widths.size();
90
for
(i=0; i<entries; i++)
91
{
92
if
( (daughter1[i] == name1 && daughter2[i] == name2) ||
93
(daughter2[i] == name1 && daughter1[i] == name2) )
94
{
95
width = (
G4PhysicsVector
*) (widths[i]);
96
n++;
97
}
98
}
99
if
(n > 1)
throw
G4HadronicException
(__FILE__, __LINE__,
"G4PartialWidthTable::Width - ambiguity"
);
100
101
return
width;
102
}
103
104
105
void
G4PartialWidthTable::AddWidths
(
const
G4double
* channelWidth,
106
const
G4String
& name1,
const
G4String
& name2)
107
{
108
G4PhysicsFreeVector
*
width
=
new
G4PhysicsFreeVector
(nEnergies);
109
G4int
i;
110
for
(i=0; i<nEnergies; i++)
111
{
112
G4double
value
= *(channelWidth+ i) *
GeV
;
113
G4double
e
= energy[i];
114
width->
PutValue
(i,e,value);
115
}
116
117
widths.push_back(width);
118
daughter1.push_back(name1);
119
daughter2.push_back(name2);
120
121
return
;
122
}
123
124
125
void
G4PartialWidthTable::Dump
()
const
126
{
127
G4int
entries = widths.size();
128
129
G4int
i;
130
for
(i=0; i<entries; i++)
131
{
132
G4cout
<<
" Channel "
<< i <<
": "
133
<< daughter1[i] <<
" "
<< daughter2[i] <<
G4endl
;
134
G4PhysicsFreeVector
*
width
= widths[i];
135
G4int
j;
136
for
(j=0; j<nEnergies; j++)
137
{
138
G4bool
dummy =
false
;
139
G4double
e
= energy[i];
140
G4double
w = width->
GetValue
(e,dummy);
141
G4cout
<< j <<
") Energy = "
<< e <<
", Width = "
<< w <<
G4endl
;
142
}
143
}
144
return
;
145
}
Generated on Sat May 25 2013 14:33:58 for Geant4 by
1.8.4