Geant4-11
Public Member Functions | Private Attributes | Static Private Attributes
G4AblaDataFile Class Reference

#include <G4AblaDataFile.hh>

Inheritance diagram for G4AblaDataFile:
G4AblaVirtualData

Public Member Functions

 G4AblaDataFile ()
 
G4double getAlpha (G4int A, G4int Z)
 
G4int getAlphaCols ()
 
G4int getAlphaRows ()
 
G4double getBeta2 (G4int A, G4int Z)
 
G4double getBeta4 (G4int A, G4int Z)
 
G4double getEcnz (G4int A, G4int Z)
 
G4double getMexp (G4int A, G4int Z)
 
G4int getMexpID (G4int A, G4int Z)
 
G4double getPace2 (G4int A, G4int Z)
 
G4int getPaceCols ()
 
G4int getPaceRows ()
 
G4double getRms (G4int A, G4int Z)
 
G4double getVgsld (G4int A, G4int Z)
 
bool readData ()
 
G4bool setAlpha (G4int A, G4int Z, G4double value)
 
G4bool setBeta2 (G4int A, G4int Z, G4double value)
 
G4bool setBeta4 (G4int A, G4int Z, G4double value)
 
G4bool setEcnz (G4int A, G4int Z, G4double value)
 
G4bool setMexp (G4int A, G4int Z, G4double value)
 
G4bool setMexpID (G4int A, G4int Z, G4int value)
 
G4bool setPace2 (G4int A, G4int Z, G4double value)
 
G4bool setRms (G4int A, G4int Z, G4double value)
 
G4bool setVgsld (G4int A, G4int Z, G4double value)
 
 ~G4AblaDataFile ()
 

Private Attributes

G4double alpha [alphaRows][alphaCols]
 
G4double beta2 [betaRows][betaCols]
 
G4double beta4 [betaRows][betaCols]
 
G4double ecnz [alphaRows][alphaCols]
 
G4double mexp [massRows][massCols]
 
G4int mexpid [massRows][massCols]
 
G4double pace2 [paceRows][paceCols]
 
G4double rms [rmsRows][rmsCols]
 
G4int verboseLevel
 
G4double vgsld [alphaRows][alphaCols]
 

Static Private Attributes

static const G4int alphaCols = 99
 
static const G4int alphaRows = 154
 
static const G4int betaCols = 137
 
static const G4int betaRows = 251
 
static const G4int massCols = 13
 
static const G4int massRows = 154
 
static const G4int paceCols = 500
 
static const G4int paceRows = 500
 
static const G4int rmsCols = 99
 
static const G4int rmsRows = 154
 

Detailed Description

Read ABLA data from files.

Definition at line 45 of file G4AblaDataFile.hh.

Constructor & Destructor Documentation

◆ G4AblaDataFile()

G4AblaDataFile::G4AblaDataFile ( )

Definition at line 52 of file G4AblaDataFile.cc.

52 {
53#else
56 theConfig = config;
57#endif
58 verboseLevel = 0;
59}
struct config_s config

References G4AblaDataFile(), G4AblaVirtualData::G4AblaVirtualData(), and verboseLevel.

Referenced by G4AblaDataFile().

◆ ~G4AblaDataFile()

G4AblaDataFile::~G4AblaDataFile ( )

Definition at line 61 of file G4AblaDataFile.cc.

62{
63}

Member Function Documentation

◆ getAlpha()

double G4AblaVirtualData::getAlpha ( G4int  A,
G4int  Z 
)
inherited

Get the value of Alpha.

Definition at line 111 of file G4AblaVirtualData.cc.

112{
113 return alpha[A][Z];
114}
const G4int Z[17]
const G4double A[17]
G4double alpha[alphaRows][alphaCols]

References A, G4AblaVirtualData::alpha, and Z.

Referenced by G4Abla::initEvapora().

◆ getAlphaCols()

int G4AblaVirtualData::getAlphaCols ( )
inherited

Definition at line 161 of file G4AblaVirtualData.cc.

162{
163 return alphaCols;
164}
static const G4int alphaCols

References G4AblaVirtualData::alphaCols.

◆ getAlphaRows()

int G4AblaVirtualData::getAlphaRows ( )
inherited

Definition at line 156 of file G4AblaVirtualData.cc.

157{
158 return alphaRows;
159}
static const G4int alphaRows

References G4AblaVirtualData::alphaRows.

◆ getBeta2()

double G4AblaVirtualData::getBeta2 ( G4int  A,
G4int  Z 
)
inherited

Get the value of beta2 deformation.

Definition at line 146 of file G4AblaVirtualData.cc.

147{
148 return beta2[A][Z];
149}
G4double beta2[betaRows][betaCols]

References A, G4AblaVirtualData::beta2, and Z.

Referenced by G4Abla::initEvapora().

◆ getBeta4()

double G4AblaVirtualData::getBeta4 ( G4int  A,
G4int  Z 
)
inherited

Get the value of beta4 deformation.

Definition at line 151 of file G4AblaVirtualData.cc.

152{
153 return beta4[A][Z];
154}
G4double beta4[betaRows][betaCols]

References A, G4AblaVirtualData::beta4, and Z.

Referenced by G4Abla::initEvapora().

◆ getEcnz()

double G4AblaVirtualData::getEcnz ( G4int  A,
G4int  Z 
)
inherited

Get the value of Ecnz.

Definition at line 116 of file G4AblaVirtualData.cc.

117{
118 return ecnz[A][Z];
119}
G4double ecnz[alphaRows][alphaCols]

References A, G4AblaVirtualData::ecnz, and Z.

Referenced by G4Abla::initEvapora().

◆ getMexp()

double G4AblaVirtualData::getMexp ( G4int  A,
G4int  Z 
)
inherited

Get the value of experimental masses.

Definition at line 136 of file G4AblaVirtualData.cc.

137{
138 return mexp[A][Z];
139}
G4double mexp[massRows][massCols]

References A, G4AblaVirtualData::mexp, and Z.

Referenced by G4Abla::initEvapora().

◆ getMexpID()

int G4AblaVirtualData::getMexpID ( G4int  A,
G4int  Z 
)
inherited

Get the value of experimental masses ID.

Definition at line 141 of file G4AblaVirtualData.cc.

142{
143 return mexpid[A][Z];
144}
G4int mexpid[massRows][massCols]

References A, G4AblaVirtualData::mexpid, and Z.

Referenced by G4Abla::initEvapora().

◆ getPace2()

double G4AblaVirtualData::getPace2 ( G4int  A,
G4int  Z 
)
inherited

Get the value of Pace2.

Definition at line 126 of file G4AblaVirtualData.cc.

127{
128 return pace2[A][Z];
129}
G4double pace2[paceRows][paceCols]

References A, G4AblaVirtualData::pace2, and Z.

Referenced by G4Abla::initEvapora(), and readData().

◆ getPaceCols()

int G4AblaVirtualData::getPaceCols ( )
inherited

Definition at line 169 of file G4AblaVirtualData.cc.

170{
171 return paceCols;
172}
static const G4int paceCols

References G4AblaVirtualData::paceCols.

Referenced by readData().

◆ getPaceRows()

int G4AblaVirtualData::getPaceRows ( )
inherited

Definition at line 165 of file G4AblaVirtualData.cc.

166{
167 return paceRows;
168}
static const G4int paceRows

References G4AblaVirtualData::paceRows.

Referenced by readData().

◆ getRms()

double G4AblaVirtualData::getRms ( G4int  A,
G4int  Z 
)
inherited

Get the value of RMS.

Definition at line 131 of file G4AblaVirtualData.cc.

132{
133 return rms[A][Z];
134}
G4double rms[rmsRows][rmsCols]

References A, G4AblaVirtualData::rms, and Z.

Referenced by G4Abla::initEvapora().

◆ getVgsld()

double G4AblaVirtualData::getVgsld ( G4int  A,
G4int  Z 
)
inherited

Get the value of Vgsld.

Definition at line 121 of file G4AblaVirtualData.cc.

122{
123 return vgsld[A][Z];
124}
G4double vgsld[alphaRows][alphaCols]

References A, G4AblaVirtualData::vgsld, and Z.

Referenced by G4Abla::initEvapora().

◆ readData()

bool G4AblaDataFile::readData ( )
virtual

Read all data from files.

Implements G4AblaVirtualData.

Definition at line 68 of file G4AblaDataFile.cc.

69{
70#ifdef ABLAXX_IN_GEANT4_MODE
71 if(!std::getenv("G4ABLADATA")) {
72 // throw G4HadronicException(__FILE__, __LINE__, "ERROR: Data
73 // missing. Set environment variable G4ABLA3.0 to point to the
74 // directory containing data files needed by INCL and ABLA
75 // models.");
76 // G4String errorMessage1 = "ERROR: Data missing. Set environment variable G4ABLADATA\n";
77 // G4String errorMessage2 = "\t to point to the directory containing data files needed\n";
78 // G4String errorMessage3 = "\t by INCL and ABLA models.\n";
79 // G4String errorMessage = errorMessage1 + errorMessage2 + errorMessage3;
80 // G4Exception(errorMessage);
82 ed << " Data missing: set environment variable G4ABLADATA\n"
83 << " to point to the directory containing data files needed\n"
84 << " by the ABLA model" << G4endl;
85 G4Exception("G4AblaDataFile::readData()","ABLA_001",
86 FatalException, ed);
87 }
88 G4String dataPath(std::getenv("G4ABLADATA"));
89#else
90 G4String dataPath(theConfig->getABLAXXDataFilePath().c_str());
91#endif
92 G4String flAlphaFile(dataPath + "/flalpha.dat");
93 G4String frldmFile( dataPath + "/frldm.dat");
94 G4String vgsldFile( dataPath + "/vgsld.dat");
95 G4String pace2File( dataPath + "/pace2.dat");
96 G4String rmsFile( dataPath + "/rms.dat");
97 G4String defoFile( dataPath + "/defo.dat");
98 G4String massFile( dataPath + "/mass2003.dat");
99
100 if(verboseLevel > 1) {
101 // G4cout <<"Data path = " << dataPath << G4endl;
102 // G4cout <<"FlAlphaFile = " << flAlphaFile << G4endl;
103 // G4cout <<"FrldmFile = " << frldmFile << G4endl;
104 // G4cout <<"VgsldFile = " << vgsldFile << G4endl;
105 // G4cout <<"Pace2File = " << pace2File << G4endl;
106 }
107
108 std::ifstream flalphain(flAlphaFile.c_str());
109 std::ifstream frldmin(frldmFile.c_str());
110 std::ifstream vgsldin(vgsldFile.c_str());
111 std::ifstream pace2in(pace2File.c_str());
112 std::ifstream rmsin(rmsFile.c_str());
113 std::ifstream defoin(defoFile.c_str());
114 std::ifstream massin(massFile.c_str());
115
116 std::filebuf *buf1 = flalphain.rdbuf();
117 std::filebuf *buf2 = frldmin.rdbuf();
118 std::filebuf *buf3 = vgsldin.rdbuf();
119 std::filebuf *buf4 = pace2in.rdbuf();
120 std::filebuf *buf5 = rmsin.rdbuf();
121 std::filebuf *buf6 = defoin.rdbuf();
122 std::filebuf *buf7 = massin.rdbuf();
123 if (!((buf1->is_open()) && (buf2->is_open()) && (buf3->is_open()) && (buf4->is_open()) && (buf5->is_open()) && (buf6->is_open()) && (buf7->is_open()))) {
124#ifdef ABLAXX_IN_GEANT4_MODE
126 ed << "Data missing: could not find ABLA data file in " << dataPath
127 << "defined by environment variable G4ABLADATA" << G4endl;
128 G4Exception("G4AblaDataFile::readData()", "ABLA", FatalException, ed);
129#else
130 std::cerr << "Error opening file." << std::endl;
131#endif
132 }
133
134 G4double fflalpha, ffrldm, fvgsld, fpace2, frms;
135 int fj,fk,a2,a3,a4;
136 G4double fbeta2,fbeta4;
137 G4double a7;
138 const G4int rows = 99;
139 const G4int cols = 154;
140 const G4int rowsbeta = 137;
141 const G4int colsbeta = 251;
142 const G4int rowsmass = 13;
143 const G4int colsmass = 154;
144 const G4int massnumbers = 263;
145 for(int i = 0; i < rows; i++) {
146 for(int j = 0; j < cols; j++) {
147 setAlpha(j, i, 0.0);
148 setEcnz( j, i, 0.0);
149 setVgsld(j, i, 0.0);
150 setRms(j, i, 0.0);
151 }
152 }
153
154 for(int i = 0; i < rows; i++) {
155 for(int j = 0; j < cols; j++) {
156 flalphain >> fflalpha;
157 frldmin >> ffrldm;
158 vgsldin >> fvgsld;
159 rmsin >> frms;
160 setAlpha(j, i, fflalpha);
161 setEcnz( j, i, ffrldm);
162 setVgsld(j, i, fvgsld);
163 setRms(j, i, frms);
164 }
165 }
166
167
168 for(int i = 0; i < rowsbeta; i++) {
169 for(int j = 0; j < colsbeta; j++) {
170 setBeta2(j, i, 0.0);
171 setBeta4(j, i, 0.0);
172 }
173 }
174
175 for(int i = 0; i < 8983; i++) {
176 defoin >> fj >> fk >> fbeta2 >> fbeta4;
177 setBeta2(fk, fj, fbeta2);
178 setBeta4(fk, fj, fbeta4);
179 }
180
181 for(int i = 0; i < rowsmass; i++) {
182 for(int j = 0; j < colsmass; j++) {
183 setMexp(j, i, 0.0);
184 setMexpID(j,i,0);
185 }
186 }
187 massin >> a2 >> a3 >> a4 >> a7 ;
188 while(!massin.eof()){
189 //
190 if(a3<13.){
191 setMexpID(a2,a3,1);
192 setMexp(a2,a3,938.7829835*a3+939.5653301*a2-1.*a4*a7/1000.);
193 }
194 massin >> a2 >> a3 >> a4 >> a7 ;
195 }
196
197 flalphain.close();
198 frldmin.close();
199 vgsldin.close();
200 rmsin.close();
201 defoin.close();
202 massin.close();
203
204 G4String str1, str2, str3;
205 for(int i = 0; i < 500; i++) {
206 for(int j = 0; j < 500; j++) {
207 setPace2(i, j, 0.0);
208 }
209 }
210
211 int A = 0, Zbegin = 0, Zend = 0;
212 for(int i = 0; i < massnumbers; i++) {
213 pace2in >> str1 >> A >> str2 >> Zbegin >> str3 >> Zend;
214 if(Zbegin >= 0 && Zbegin < getPaceCols() &&
215 A >= 0 && A < getPaceRows()) {
216 for(int j = Zbegin; j <= Zend; j++) {
217 pace2in >> fpace2;
218 setPace2(A, j, fpace2);
219 }
220 }
221 }
222 pace2in.close();
223 if(std::abs(getPace2(A, Zend) - 114516.10) > 1e-6) {
224 std::cerr << "ERROR: Problem in parsing datafile " + pace2File << std::endl;
225 return false;
226 }
227
228 return true;
229}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4bool setVgsld(G4int A, G4int Z, G4double value)
G4double getPace2(G4int A, G4int Z)
G4bool setMexp(G4int A, G4int Z, G4double value)
G4bool setEcnz(G4int A, G4int Z, G4double value)
G4bool setPace2(G4int A, G4int Z, G4double value)
G4bool setRms(G4int A, G4int Z, G4double value)
G4bool setMexpID(G4int A, G4int Z, G4int value)
G4bool setAlpha(G4int A, G4int Z, G4double value)
G4bool setBeta2(G4int A, G4int Z, G4double value)
G4bool setBeta4(G4int A, G4int Z, G4double value)

References A, FatalException, G4endl, G4Exception(), G4AblaVirtualData::getPace2(), G4AblaVirtualData::getPaceCols(), G4AblaVirtualData::getPaceRows(), G4AblaVirtualData::setAlpha(), G4AblaVirtualData::setBeta2(), G4AblaVirtualData::setBeta4(), G4AblaVirtualData::setEcnz(), G4AblaVirtualData::setMexp(), G4AblaVirtualData::setMexpID(), G4AblaVirtualData::setPace2(), G4AblaVirtualData::setRms(), G4AblaVirtualData::setVgsld(), and verboseLevel.

Referenced by G4Abla::initEvapora().

◆ setAlpha()

bool G4AblaVirtualData::setAlpha ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of Alpha.

Definition at line 47 of file G4AblaVirtualData.cc.

48{
49 alpha[A][Z] = value;
50
51 return true;
52}

References A, G4AblaVirtualData::alpha, and Z.

Referenced by readData().

◆ setBeta2()

bool G4AblaVirtualData::setBeta2 ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of beta2 deformation.

Definition at line 96 of file G4AblaVirtualData.cc.

97{
98 beta2[A][Z] = value;
99
100 return true;
101}

References A, G4AblaVirtualData::beta2, and Z.

Referenced by readData().

◆ setBeta4()

bool G4AblaVirtualData::setBeta4 ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of beta4 deformation.

Definition at line 103 of file G4AblaVirtualData.cc.

104{
105 beta4[A][Z] = value;
106
107 return true;
108}

References A, G4AblaVirtualData::beta4, and Z.

Referenced by readData().

◆ setEcnz()

bool G4AblaVirtualData::setEcnz ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of Ecnz.

Definition at line 54 of file G4AblaVirtualData.cc.

55{
56 ecnz[A][Z] = value;
57
58 return true;
59}

References A, G4AblaVirtualData::ecnz, and Z.

Referenced by readData().

◆ setMexp()

bool G4AblaVirtualData::setMexp ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of experimental masses.

Definition at line 82 of file G4AblaVirtualData.cc.

83{
84 mexp[A][Z] = value;
85
86 return true;
87}

References A, G4AblaVirtualData::mexp, and Z.

Referenced by readData().

◆ setMexpID()

bool G4AblaVirtualData::setMexpID ( G4int  A,
G4int  Z,
G4int  value 
)
inherited

Set the value of experimental masses ID.

Definition at line 89 of file G4AblaVirtualData.cc.

90{
91 mexpid[A][Z] = value;
92
93 return true;
94}

References A, G4AblaVirtualData::mexpid, and Z.

Referenced by readData().

◆ setPace2()

bool G4AblaVirtualData::setPace2 ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of Pace2.

Definition at line 68 of file G4AblaVirtualData.cc.

69{
70 pace2[A][Z] = value;
71
72 return true;
73}

References A, G4AblaVirtualData::pace2, and Z.

Referenced by readData().

◆ setRms()

bool G4AblaVirtualData::setRms ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of RMS.

Definition at line 75 of file G4AblaVirtualData.cc.

76{
77 rms[A][Z] = value;
78
79 return true;
80}

References A, G4AblaVirtualData::rms, and Z.

Referenced by readData().

◆ setVgsld()

bool G4AblaVirtualData::setVgsld ( G4int  A,
G4int  Z,
G4double  value 
)
inherited

Set the value of Vgsld.

Definition at line 61 of file G4AblaVirtualData.cc.

62{
63 vgsld[A][Z] = value;
64
65 return true;
66}

References A, G4AblaVirtualData::vgsld, and Z.

Referenced by readData().

Field Documentation

◆ alpha

G4double G4AblaVirtualData::alpha[alphaRows][alphaCols]
privateinherited

◆ alphaCols

const G4int G4AblaVirtualData::alphaCols = 99
staticprivateinherited

Definition at line 171 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getAlphaCols().

◆ alphaRows

const G4int G4AblaVirtualData::alphaRows = 154
staticprivateinherited

Definition at line 170 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getAlphaRows().

◆ beta2

G4double G4AblaVirtualData::beta2[betaRows][betaCols]
privateinherited

◆ beta4

G4double G4AblaVirtualData::beta4[betaRows][betaCols]
privateinherited

◆ betaCols

const G4int G4AblaVirtualData::betaCols = 137
staticprivateinherited

Definition at line 180 of file G4AblaVirtualData.hh.

◆ betaRows

const G4int G4AblaVirtualData::betaRows = 251
staticprivateinherited

Definition at line 179 of file G4AblaVirtualData.hh.

◆ ecnz

G4double G4AblaVirtualData::ecnz[alphaRows][alphaCols]
privateinherited

Definition at line 186 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getEcnz(), and G4AblaVirtualData::setEcnz().

◆ massCols

const G4int G4AblaVirtualData::massCols = 13
staticprivateinherited

Definition at line 183 of file G4AblaVirtualData.hh.

◆ massRows

const G4int G4AblaVirtualData::massRows = 154
staticprivateinherited

Definition at line 182 of file G4AblaVirtualData.hh.

◆ mexp

G4double G4AblaVirtualData::mexp[massRows][massCols]
privateinherited

Definition at line 190 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getMexp(), and G4AblaVirtualData::setMexp().

◆ mexpid

G4int G4AblaVirtualData::mexpid[massRows][massCols]
privateinherited

◆ pace2

G4double G4AblaVirtualData::pace2[paceRows][paceCols]
privateinherited

◆ paceCols

const G4int G4AblaVirtualData::paceCols = 500
staticprivateinherited

Definition at line 174 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getPaceCols().

◆ paceRows

const G4int G4AblaVirtualData::paceRows = 500
staticprivateinherited

Definition at line 173 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getPaceRows().

◆ rms

G4double G4AblaVirtualData::rms[rmsRows][rmsCols]
privateinherited

Definition at line 189 of file G4AblaVirtualData.hh.

Referenced by G4AblaVirtualData::getRms(), and G4AblaVirtualData::setRms().

◆ rmsCols

const G4int G4AblaVirtualData::rmsCols = 99
staticprivateinherited

Definition at line 177 of file G4AblaVirtualData.hh.

◆ rmsRows

const G4int G4AblaVirtualData::rmsRows = 154
staticprivateinherited

Definition at line 176 of file G4AblaVirtualData.hh.

◆ verboseLevel

G4int G4AblaDataFile::verboseLevel
private

Definition at line 61 of file G4AblaDataFile.hh.

Referenced by G4AblaDataFile(), and readData().

◆ vgsld

G4double G4AblaVirtualData::vgsld[alphaRows][alphaCols]
privateinherited

The documentation for this class was generated from the following files: