Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ShellEMDataSet Class Reference

#include <G4ShellEMDataSet.hh>

Inheritance diagram for G4ShellEMDataSet:
Collaboration diagram for G4ShellEMDataSet:

Public Member Functions

 G4ShellEMDataSet (G4int Z, G4VDataSetAlgorithm *algo, G4double eUnit=CLHEP::MeV, G4double dataUnit=CLHEP::barn)
 
virtual ~G4ShellEMDataSet ()
 
virtual G4double FindValue (G4double energy, G4int componentId=0) const
 
virtual void PrintData (void) const
 
virtual const G4VEMDataSet * GetComponent (G4int componentId) const
 
virtual void AddComponent (G4VEMDataSet *dataSet)
 
virtual size_t NumberOfComponents (void) const
 
virtual const G4DataVector & GetEnergies (G4int componentId) const
 
virtual const G4DataVector & GetData (G4int componentId) const
 
virtual const G4DataVector & GetLogEnergies (G4int componentId) const
 
virtual const G4DataVector & GetLogData (G4int componentId) const
 
virtual void SetEnergiesData (G4DataVector *energies, G4DataVector *data, G4int componentId)
 
virtual void SetLogEnergiesData (G4DataVector *energies, G4DataVector *data, G4DataVector *log_energies, G4DataVector *log_data, G4int componentId)
 
virtual G4bool LoadData (const G4String &fileName)
 
virtual G4bool LoadNonLogData (const G4String &fileName)
 
virtual G4bool SaveData (const G4String &fileName) const
 
virtual G4double RandomSelect (G4int) const
 
- Public Member Functions inherited from G4VEMDataSet
 G4VEMDataSet ()
 
virtual ~G4VEMDataSet ()
 

Protected Member Functions

G4double GetUnitEnergies () const
 
G4double GetUnitData () const
 
const G4VDataSetAlgorithm * GetAlgorithm () const
 
void CleanUpComponents (void)
 

Detailed Description

Definition at line 60 of file G4ShellEMDataSet.hh.

Constructor & Destructor Documentation

G4ShellEMDataSet::G4ShellEMDataSet ( G4int  Z,
G4VDataSetAlgorithm *  algo,
G4double  eUnit = CLHEP::MeV,
G4double  dataUnit = CLHEP::barn 
)

Definition at line 64 of file G4ShellEMDataSet.cc.

67  :
68  z(zeta),
69  algorithm(algo),
70  unitEnergies(eUnit),
71  unitData(dataUnit)
72 {
73  if (algorithm == 0) G4Exception("G4ShellEMDataSet::G4ShellEMDataSet()","em0007",FatalErrorInArgument, "Interpolation == 0");
74 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

Here is the caller graph for this function:

G4ShellEMDataSet::~G4ShellEMDataSet ( )
virtual

Definition at line 77 of file G4ShellEMDataSet.cc.

78 {
80  if (algorithm) delete algorithm;
81 }
void CleanUpComponents(void)

Here is the call graph for this function:

Member Function Documentation

virtual void G4ShellEMDataSet::AddComponent ( G4VEMDataSet *  dataSet)
inlinevirtual

Implements G4VEMDataSet.

Definition at line 75 of file G4ShellEMDataSet.hh.

75 { components.push_back(dataSet); }

Here is the caller graph for this function:

void G4ShellEMDataSet::CleanUpComponents ( void  )
protected

Definition at line 389 of file G4ShellEMDataSet.cc.

390 {
391  while (!components.empty())
392  {
393  if (components.back()) delete components.back();
394  components.pop_back();
395  }
396 }

Here is the caller graph for this function:

G4double G4ShellEMDataSet::FindValue ( G4double  energy,
G4int  componentId = 0 
) const
virtual

Implements G4VEMDataSet.

Definition at line 84 of file G4ShellEMDataSet.cc.

85 {
86  // Returns the sum over the shells corresponding to e
87  G4double value = 0.;
88 
89  std::vector<G4VEMDataSet *>::const_iterator i(components.begin());
90  std::vector<G4VEMDataSet *>::const_iterator end(components.end());
91 
92  while (i != end)
93  {
94  value += (*i)->FindValue(energy);
95  i++;
96  }
97 
98  return value;
99 }
const XML_Char int const XML_Char * value
Definition: expat.h:331
G4double energy(const ThreeVector &p, const G4double m)
double G4double
Definition: G4Types.hh:76
const G4VDataSetAlgorithm* G4ShellEMDataSet::GetAlgorithm ( ) const
inlineprotected

Definition at line 101 of file G4ShellEMDataSet.hh.

101 { return algorithm; }
virtual const G4VEMDataSet* G4ShellEMDataSet::GetComponent ( G4int  componentId) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 74 of file G4ShellEMDataSet.hh.

74 { return components[componentId]; }

Here is the caller graph for this function:

virtual const G4DataVector& G4ShellEMDataSet::GetData ( G4int  componentId) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 79 of file G4ShellEMDataSet.hh.

79 { return GetComponent(componentId)->GetData(0); }
virtual const G4DataVector & GetData(G4int componentId) const =0
virtual const G4VEMDataSet * GetComponent(G4int componentId) const

Here is the call graph for this function:

virtual const G4DataVector& G4ShellEMDataSet::GetEnergies ( G4int  componentId) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 78 of file G4ShellEMDataSet.hh.

78 { return GetComponent(componentId)->GetEnergies(0); }
virtual const G4DataVector & GetEnergies(G4int componentId) const =0
virtual const G4VEMDataSet * GetComponent(G4int componentId) const

Here is the call graph for this function:

virtual const G4DataVector& G4ShellEMDataSet::GetLogData ( G4int  componentId) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 81 of file G4ShellEMDataSet.hh.

81 { return GetComponent(componentId)->GetLogData(0); }
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
virtual const G4DataVector & GetLogData(G4int componentId) const =0

Here is the call graph for this function:

virtual const G4DataVector& G4ShellEMDataSet::GetLogEnergies ( G4int  componentId) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 80 of file G4ShellEMDataSet.hh.

80 { return GetComponent(componentId)->GetLogEnergies(0); }
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
virtual const G4DataVector & GetLogEnergies(G4int componentId) const =0

Here is the call graph for this function:

G4double G4ShellEMDataSet::GetUnitData ( ) const
inlineprotected

Definition at line 100 of file G4ShellEMDataSet.hh.

100 { return unitData; }
G4double G4ShellEMDataSet::GetUnitEnergies ( ) const
inlineprotected

Definition at line 99 of file G4ShellEMDataSet.hh.

99 { return unitEnergies; }
G4bool G4ShellEMDataSet::LoadData ( const G4String &  fileName)
virtual

Implements G4VEMDataSet.

Definition at line 160 of file G4ShellEMDataSet.cc.

161 {
163 
164  G4String fullFileName = FullFileName(file);
165  std::ifstream in(fullFileName);
166 
167  if (!in.is_open())
168  {
169  G4String message("Data file \"");
170  message += fullFileName;
171  message += "\" not found";
172  G4Exception("G4ShellEMDataSet::LoadData()", "em0003",FatalException, message);
173  return 0;
174  }
175 
176  G4DataVector* orig_shell_energies = 0;
177  G4DataVector* orig_shell_data = 0;
178  G4DataVector* log_shell_energies = 0;
179  G4DataVector* log_shell_data = 0;
180 
181  G4double a = 0.;
182  G4int shellIndex = 0;
183  G4int k = 0;
184  G4int nColumns = 2;
185 
186  do
187  {
188  in >> a;
189 
190  if (a==0.) a=1e-300;
191 
192  // The file is organized into four columns:
193  // 1st column contains the values of energy
194  // 2nd column contains the corresponding data value
195  // The file terminates with the pattern: -1 -1
196  // -2 -2
197  //
198  if (a == -1)
199  {
200  if ((k%nColumns == 0) && (orig_shell_energies != 0) )
201  {
202  AddComponent(new G4EMDataSet(shellIndex, orig_shell_energies, orig_shell_data, log_shell_energies, log_shell_data, algorithm->Clone(), unitEnergies, unitData));
203  orig_shell_energies = 0;
204  orig_shell_data = 0;
205  log_shell_energies = 0;
206  log_shell_data = 0;
207  }
208  }
209  else if (a != -2)
210  {
211  if (orig_shell_energies == 0)
212  {
213  orig_shell_energies = new G4DataVector;
214  orig_shell_data = new G4DataVector;
215  log_shell_energies = new G4DataVector;
216  log_shell_data = new G4DataVector;
217  }
218  if (k%nColumns == 0)
219  {
220  orig_shell_energies->push_back(a*unitEnergies);
221  log_shell_energies->push_back(std::log10(a) + std::log10(unitEnergies));
222  }
223  else if (k%nColumns == 1)
224  {
225  orig_shell_data->push_back(a*unitData);
226  log_shell_data->push_back(std::log10(a) + std::log10(unitData));
227  }
228  k++;
229  }
230  else k = 1;
231  }
232  while (a != -2); // End of file
233 
234 
235  delete orig_shell_energies;
236  delete orig_shell_data;
237  delete log_shell_energies;
238  delete log_shell_data;
239 
240  return true;
241 }
void CleanUpComponents(void)
int G4int
Definition: G4Types.hh:78
virtual G4VDataSetAlgorithm * Clone() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
virtual void AddComponent(G4VEMDataSet *dataSet)

Here is the call graph for this function:

G4bool G4ShellEMDataSet::LoadNonLogData ( const G4String &  fileName)
virtual

Implements G4VEMDataSet.

Definition at line 244 of file G4ShellEMDataSet.cc.

245 {
247 
248  G4String fullFileName = FullFileName(file);
249  std::ifstream in(fullFileName);
250 
251  if (!in.is_open())
252  {
253  G4String message("G4ShellEMDataSet::LoadData - data file \"");
254  message += fullFileName;
255  message += "\" not found";
256  G4Exception("G4ShellEMDataSet::LoadNonLogData()", "em0003",FatalException, message);
257  return 0;
258  }
259 
260  G4DataVector* orig_shell_energies = 0;
261  G4DataVector* orig_shell_data = 0;
262 
263  G4double a = 0.;
264  G4int shellIndex = 0;
265  G4int k = 0;
266  G4int nColumns = 2;
267 
268  do
269  {
270  in >> a;
271 
272  // The file is organized into four columns:
273  // 1st column contains the values of energy
274  // 2nd column contains the corresponding data value
275  // The file terminates with the pattern: -1 -1
276  // -2 -2
277  //
278  if (a == -1)
279  {
280  if ((k%nColumns == 0) && (orig_shell_energies != 0) )
281  {
282  AddComponent(new G4EMDataSet(shellIndex, orig_shell_energies, orig_shell_data, algorithm->Clone(), unitEnergies, unitData));
283  orig_shell_energies = 0;
284  orig_shell_data = 0;
285  }
286  }
287  else if (a != -2)
288  {
289  if (orig_shell_energies == 0)
290  {
291  orig_shell_energies = new G4DataVector;
292  orig_shell_data = new G4DataVector;
293  }
294  if (k%nColumns == 0)
295  {
296  orig_shell_energies->push_back(a*unitEnergies);
297  }
298  else if (k%nColumns == 1)
299  {
300  orig_shell_data->push_back(a*unitData);
301  }
302  k++;
303  }
304  else k = 1;
305  }
306  while (a != -2); // End of file
307 
308 
309  delete orig_shell_energies;
310  delete orig_shell_data;
311 
312  return true;
313 }
void CleanUpComponents(void)
int G4int
Definition: G4Types.hh:78
virtual G4VDataSetAlgorithm * Clone() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
virtual void AddComponent(G4VEMDataSet *dataSet)

Here is the call graph for this function:

virtual size_t G4ShellEMDataSet::NumberOfComponents ( void  ) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 76 of file G4ShellEMDataSet.hh.

76 { return components.size(); }

Here is the caller graph for this function:

void G4ShellEMDataSet::PrintData ( void  ) const
virtual

Implements G4VEMDataSet.

Definition at line 102 of file G4ShellEMDataSet.cc.

103 {
104  const size_t n = NumberOfComponents();
105 
106  G4cout << "The data set has " << n << " components" << G4endl;
107  G4cout << G4endl;
108 
109  size_t i = 0;
110 
111  while (i < n)
112  {
113  G4cout << "--- Component " << i << " ---" << G4endl;
114  GetComponent(i)->PrintData();
115  i++;
116  }
117 }
virtual size_t NumberOfComponents(void) const
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
G4GLOB_DLL std::ostream G4cout
virtual void PrintData(void) const =0
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

virtual G4double G4ShellEMDataSet::RandomSelect ( G4int  ) const
inlinevirtual

Implements G4VEMDataSet.

Definition at line 95 of file G4ShellEMDataSet.hh.

95 { return -1.; };
G4bool G4ShellEMDataSet::SaveData ( const G4String &  fileName) const
virtual

Implements G4VEMDataSet.

Definition at line 317 of file G4ShellEMDataSet.cc.

318 {
319  G4String fullFileName = FullFileName(file);
320  std::ofstream out(fullFileName);
321 
322  if (!out.is_open())
323  {
324  G4String message("Cannot open \"");
325  message += fullFileName;
326  message += "\"";
327  G4Exception("G4EMDataSet::SaveData()","em0005",FatalException,message);
328  }
329 
330  const size_t n = NumberOfComponents();
331  size_t k = 0;
332 
333  while (k < n)
334  {
335  const G4VEMDataSet* component = GetComponent(k);
336 
337  if (component)
338  {
339  const G4DataVector& energies = component->GetEnergies(0);
340  const G4DataVector& data = component->GetData(0);
341 
342  G4DataVector::const_iterator i = energies.begin();
343  G4DataVector::const_iterator endI = energies.end();
344  G4DataVector::const_iterator j = data.begin();
345 
346  while (i != endI)
347  {
348  out.precision(10);
349  out.width(15);
350  out.setf(std::ofstream::left);
351  out << ((*i)/unitEnergies) << ' ';
352 
353  out.precision(10);
354  out.width(15);
355  out.setf(std::ofstream::left);
356  out << ((*j)/unitData) << std::endl;
357  i++;
358  j++;
359  }
360  }
361 
362  out.precision(10);
363  out.width(15);
364  out.setf(std::ofstream::left);
365  out << -1.f << ' ';
366 
367  out.precision(10);
368  out.width(15);
369  out.setf(std::ofstream::left);
370  out << -1.f << std::endl;
371 
372  k++;
373  }
374 
375  out.precision(10);
376  out.width(15);
377  out.setf(std::ofstream::left);
378  out << -2.f << ' ';
379 
380  out.precision(10);
381  out.width(15);
382  out.setf(std::ofstream::left);
383  out << -2.f << std::endl;
384 
385  return true;
386 }
virtual const G4DataVector & GetEnergies(G4int componentId) const =0
virtual size_t NumberOfComponents(void) const
virtual const G4DataVector & GetData(G4int componentId) const =0
virtual const G4VEMDataSet * GetComponent(G4int componentId) const
const XML_Char const XML_Char * data
Definition: expat.h:268
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

void G4ShellEMDataSet::SetEnergiesData ( G4DataVector *  energies,
G4DataVector *  data,
G4int  componentId 
)
virtual

Implements G4VEMDataSet.

Definition at line 120 of file G4ShellEMDataSet.cc.

123 {
124  G4VEMDataSet* component = components[componentId];
125 
126  if (component)
127  {
128  component->SetEnergiesData(energies, data, 0);
129  return;
130  }
131 
132  G4String msg = "component " + (G4String)componentId + " not found";
133 
134  G4Exception("G4ShellEMDataSet::SetEnergiesData()","em0008", FatalErrorInArgument ,msg);
135 }
virtual void SetEnergiesData(G4DataVector *x, G4DataVector *data, G4int component=0)=0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

void G4ShellEMDataSet::SetLogEnergiesData ( G4DataVector *  energies,
G4DataVector *  data,
G4DataVector *  log_energies,
G4DataVector *  log_data,
G4int  componentId 
)
virtual

Implements G4VEMDataSet.

Definition at line 138 of file G4ShellEMDataSet.cc.

143 {
144  G4VEMDataSet* component = components[componentId];
145 
146  if (component)
147  {
148  component->SetLogEnergiesData(energies, data, log_energies, log_data, 0);
149  return;
150  }
151 
152  G4String msg = "component " + (G4String)componentId + " not found";
153 
154  G4Exception("G4ShellEMDataSet::SetLogEnergiesData()","em0008", FatalErrorInArgument ,msg);
155 
156 }
virtual void SetLogEnergiesData(G4DataVector *x, G4DataVector *data, G4DataVector *Log_x, G4DataVector *Log_data, G4int component=0)=0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:


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