63 : zMin(minZ), zMax(maxZ),
73 std::map<G4int,G4RDVEMDataSet*,std::less<G4int> >::iterator
pos;
96 G4int id = Z*100 + parameterIndex;
97 std::map<G4int,G4RDVEMDataSet*,std::less<G4int> >::const_iterator
pos;
100 if (pos!=
param.end()) {
104 if(shellIndex < nShells) {
110 G4cout <<
"WARNING: G4IonisationParameters::FindParameter "
111 <<
"has no parameters for shell= " << shellIndex
116 G4cout <<
"WARNING: G4IonisationParameters::Parameter "
117 <<
"did not find ID = "
127 std::map<G4int,G4RDVEMDataSet*,std::less<G4int> >::const_iterator
pos;
130 if (pos!=
excit.end()) {
137 G4cout <<
"WARNING: G4IonisationParameters::Excitation "
138 <<
"did not find ID = "
155 if (materialTable == 0)
156 G4Exception(
"G4RDeIonisationParameters::LoadData()",
"InvalidSetup",
161 for (
G4int m=0;
m<nMaterials;
m++) {
167 for (
size_t iEl=0; iEl<nElements; iEl++) {
168 G4Element* element = (*elementVector)[iEl];
176 char* path = getenv(
"G4LEDATA");
179 G4String excep(
"G4LEDATA environment variable not set!");
180 G4Exception(
"G4RDeIonisationParameters::LoadData()",
"InvalidSetup",
192 for (
size_t i=0; i<nZ; i++) {
195 std::ostringstream ost;
196 ost << pathString << Z <<
".dat";
200 std::filebuf* lsdp = file.rdbuf();
202 if (! (lsdp->is_open()) ) {
204 +
name +
G4String(
" not found. The version 1.# of G4LEDATA should be used");
205 G4Exception(
"G4RDeIonisationParameters::LoadData()",
"DataNotFound",
220 std::vector<G4RDVEMDataSet*>
p;
221 for (
size_t k=0; k<
length; k++)
225 p.push_back(composite);
229 std::vector<G4DataVector*>
a;
230 for (
size_t j=0; j<
length; j++)
238 file >> energy >>
sum;
239 if (energy == -2)
break;
243 a[0]->push_back(sum);
244 for (
size_t j=0; j<length-1; j++) {
247 a[j + 1]->push_back(qRead);
253 for (
size_t k=0; k<
length; k++) {
260 size_t eSize = e.size();
261 for (
size_t s=0;
s<eSize;
s++) {
262 eVector->push_back(e[
s]);
266 p[k]->AddComponent(set);
270 for (
size_t j2=0; j2<
length; j2++) {
276 }
while (energy > -2);
280 for (
size_t kk=0; kk<
length; kk++)
282 G4int id = Z*100 + kk;
289 std::ifstream file_a(name_a);
290 std::filebuf* lsdp_a = file_a.rdbuf();
291 G4String pathString_b(path);
292 G4String name_b = pathString_b + G4String(
"/ioni/ion-ex-sig.dat");
293 std::ifstream file_b(name_b);
294 std::filebuf* lsdp_b = file_b.rdbuf();
296 if (! (lsdp_a->is_open()) ) {
297 G4String excep = G4String(
"Cannot open file ")
299 G4Exception(
"G4RDeIonisationParameters::LoadData()",
"CannotOpenFile",
302 if (! (lsdp_b->is_open()) ) {
303 G4String excep = G4String(
"Cannot open file ")
305 G4Exception(
"G4RDeIonisationParameters::LoadData()",
"CannotOpenFile",
324 file_a >> ener >> sig;
325 file_b >> ener1 >> sig1;
328 G4cout <<
"G4RDeIonisationParameters: problem in excitation data "
330 <<
" ener1= " << ener1
339 }
else if (ener == -1) {
350 size_t eSize = e.size();
351 for (
size_t s=0;
s<eSize;
s++) {
352 eVector->push_back(e[
s]);
353 dVector->push_back(d[s]);
363 e.push_back(ener*
MeV);
364 d.push_back(sig1*sig*
barn*MeV);
366 }
while (ener != -2);
376 G4cout <<
"===== G4RDeIonisationParameters =====" <<
G4endl;
380 std::map<G4int,G4RDVEMDataSet*,std::less<G4int> >::const_iterator
pos;
382 for (
size_t i=0; i<nZ; i++) {
385 for (
size_t j=0; j<
length; j++) {
387 G4int index = Z*100 + j;
389 pos =
param.find(index);
390 if (pos!=
param.end()) {
394 for (
size_t k=0; k<nShells; k++) {
396 G4cout <<
"===== Z= " << Z <<
" shell= " << k
397 <<
" parameter[" << j <<
"] ====="
405 G4cout <<
"====================================" <<
G4endl;
T max(const T t1, const T t2)
brief Return the largest of the two arguments
~G4RDeIonisationParameters()
std::vector< ExP01TrackerHit * > a
static const G4double pos
static size_t GetNumberOfMaterials()
static constexpr double MeV
static G4MaterialTable * GetMaterialTable()
G4double Parameter(G4int Z, G4int shellIndex, G4int parameterIndex, G4double e) const
G4RDeIonisationParameters(G4int minZ=1, G4int maxZ=99)
virtual const G4DataVector & GetEnergies(G4int componentId) const =0
G4bool contains(const G4double &) const
const G4ElementVector * GetElementVector() const
virtual void PrintData(void) const =0
static constexpr double m
virtual size_t NumberOfComponents(void) const =0
const XML_Char int const XML_Char * value
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
std::vector< G4Material * > G4MaterialTable
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double Excitation(G4int Z, G4double e) const
std::vector< G4Element * > G4ElementVector
static constexpr double barn
G4GLOB_DLL std::ostream G4cout
virtual const G4RDVEMDataSet * GetComponent(G4int componentId) const =0
std::map< G4int, G4RDVEMDataSet *, std::less< G4int > > param
size_t GetNumberOfElements() const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
std::map< G4int, G4RDVEMDataSet *, std::less< G4int > > excit