Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ParticleHPIsoData.cc
Go to the documentation of this file.
1// ********************************************************************
2// * License and Disclaimer *
3// * *
4// * The Geant4 software is copyright of the Copyright Holders of *
5// * the Geant4 Collaboration. It is provided under the terms and *
6// * conditions of the Geant4 Software License, included in the file *
7// * LICENSE and available at http://cern.ch/geant4/license . These *
8// * include a list of copyright holders. *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. Please see the license in the file LICENSE and URL above *
15// * for the full disclaimer and the limitation of liability. *
16// * *
17// * This code implementation is the result of the scientific and *
18// * technical work of the GEANT4 collaboration. *
19// * By using, copying, modifying or distributing the software (or *
20// * any work based on the software) you agree to acknowledge its *
21// * use in resulting scientific publications, and indicate your *
22// * acceptance of all terms of the Geant4 Software license. *
23// ********************************************************************
24//
25// particle_hp -- source file
26// J.P. Wellisch, Nov-1996
27// A prototype of the low energy neutron transport model.
28//
29// 080901 Avoiding troubles which caused by G4PhysicsVecotor of length 0 by T. Koi
30//
31// P. Arce, June-2014 Conversion neutron_hp to particle_hp
32//
34
35#include "G4Neutron.hh"
38#include "G4Alpha.hh"
39#include "G4Deuteron.hh"
40#include "G4He3.hh"
41#include "G4Proton.hh"
42#include "G4Triton.hh"
43//#include <stdlib.h>
44#include <fstream>
45
47{
48 if (theChannelData != nullptr) {
49 G4Exception("G4ParticleHPIsoData::FillChannelData","hadhp02",
50 FatalException, "Inconsistency: the data uploaded next time");
51 }
52 theChannelData = new G4ParticleHPVector;
53 for (G4int i = 0; i < aBuffer->GetVectorLength(); ++i) {
54 theChannelData->SetPoint(i, aBuffer->GetPoint(i));
55 }
56 theChannelData->Hash();
57}
58
60 G4String aFSType)
61{
62 theChannelData = nullptr;
63 G4double abundance = abun / 100.;
64 G4String filename;
65 G4bool result = true;
66 G4ParticleHPDataUsed aFile = theNames.GetName(A, Z, M, dirName, aFSType, result);
67 filename = aFile.GetName();
68
69 std::istringstream theChannel(filename, std::ios::in);
71 man->GetDataStream(filename, theChannel);
72
73#ifdef G4PHPDEBUG
74 if (man->GetDEBUG())
75 G4cout << "G4ParticleHPIsoData::Init = " << filename << " " << A << " " << Z << G4endl;
76#endif
77
78 if (Z == 1 && (aFile.GetZ() != Z || aFile.GetA() != A)) {
79 if (man->GetDEBUG())
80 G4cout << "Skipped = " << filename << " " << A << " " << Z << G4endl;
81 // 080901 TKDB No more necessary below protection, cross sections set to 0
82 }
83 if (!theChannel) { /*theChannel.close()*/
84 return false;
85 }
86 // accommodating deficiencie of some compilers
87 if (theChannel.eof()) { /*theChannel.close()*/
88 return false;
89 }
90 G4int dummy;
91 theChannel >> dummy >> dummy;
92 theChannelData = new G4ParticleHPVector;
93 G4int nData;
94 theChannel >> nData;
95 theChannelData->Init(theChannel, nData, CLHEP::eV, abundance * CLHEP::barn);
96 return result;
97}
98
100 G4ParticleDefinition* projectile, const char*)
101// fill PhysicsVector for this Isotope
102{
104
105 G4String baseName = man->GetParticleHPPath(projectile);
106
107 G4String dirName;
108 if (projectile == G4Neutron::Neutron()) {
109 dirName = baseName + "/Fission";
110 if (Z > 87) // TK Modifed for ENDF VII.0
111 {
112 Init(A, Z, M, abun, dirName, "/CrossSection");
113 }
114 else {
115 theChannelData = new G4ParticleHPVector;
116 }
117 theFissionData = theChannelData;
118 theChannelData = nullptr; // fast fix for double delete; revisit later. @@@@@@@
119
120 dirName = baseName + "/Capture";
121 Init(A, Z, M, abun, dirName, "/CrossSection");
122 theCaptureData = theChannelData;
123 theChannelData = nullptr;
124
125 dirName = baseName + "/Elastic";
126 Init(A, Z, M, abun, dirName, "/CrossSection");
127 theElasticData = theChannelData;
128 theChannelData = nullptr;
129 }
130
131 dirName = baseName + "/Inelastic";
132 Init(A, Z, M, abun, dirName, "/CrossSection");
133 theInelasticData = theChannelData;
134 theChannelData = nullptr;
135}
136
138{
139 G4bool dbool;
140 return (theNames.GetName(A, Z, base, rest, dbool)).GetName();
141}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define M(row, col)
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
const G4double A[17]
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
G4String GetName(G4int A, G4int Z, G4String base, G4String rest)
G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType)
void FillChannelData(G4ParticleHPVector *aBuffer)
static G4ParticleHPManager * GetInstance()
G4ParticleHPDataUsed GetName(G4int A, G4int Z, const G4String &base, const G4String &rest, G4bool &active)
const G4ParticleHPDataPoint & GetPoint(G4int i) const
void Init(std::istream &aDataFile, G4int total, G4double ux=1., G4double uy=1.)
G4int GetVectorLength() const
void SetPoint(G4int i, const G4ParticleHPDataPoint &it)