Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4RDShellEMDataSet Class Reference

#include <G4RDShellEMDataSet.hh>

Inheritance diagram for G4RDShellEMDataSet:
G4RDVEMDataSet

Public Member Functions

 G4RDShellEMDataSet (G4int Z, G4RDVDataSetAlgorithm *algo, G4double eUnit=CLHEP::MeV, G4double dataUnit=CLHEP::barn)
 
virtual ~G4RDShellEMDataSet ()
 
virtual G4double FindValue (G4double energy, G4int componentId=0) const
 
virtual void PrintData (void) const
 
virtual const G4RDVEMDataSetGetComponent (G4int componentId) const
 
virtual void AddComponent (G4RDVEMDataSet *dataSet)
 
virtual size_t NumberOfComponents (void) const
 
virtual const G4DataVectorGetEnergies (G4int componentId) const
 
virtual const G4DataVectorGetData (G4int componentId) const
 
virtual void SetEnergiesData (G4DataVector *energies, G4DataVector *data, G4int componentId)
 
virtual G4bool LoadData (const G4String &fileName)
 
virtual G4bool SaveData (const G4String &fileName) const
 
virtual G4double RandomSelect (G4int) const
 
- Public Member Functions inherited from G4RDVEMDataSet
 G4RDVEMDataSet ()
 
virtual ~G4RDVEMDataSet ()
 

Protected Member Functions

G4double GetUnitEnergies () const
 
G4double GetUnitData () const
 
const G4RDVDataSetAlgorithmGetAlgorithm () const
 
void CleanUpComponents (void)
 

Detailed Description

Definition at line 59 of file G4RDShellEMDataSet.hh.

Constructor & Destructor Documentation

G4RDShellEMDataSet::G4RDShellEMDataSet ( G4int  Z,
G4RDVDataSetAlgorithm algo,
G4double  eUnit = CLHEP::MeV,
G4double  dataUnit = CLHEP::barn 
)

Definition at line 48 of file G4RDShellEMDataSet.cc.

References FatalException, G4Exception(), and G4RDShellEMDataSet().

Referenced by G4RDShellEMDataSet().

51  :
52  z(zeta),
53  algorithm(algo),
54  unitEnergies(eUnit),
55  unitData(dataUnit)
56 {
57  if (algorithm == 0)
58  G4Exception("G4RDShellEMDataSet::G4RDShellEMDataSet()", "InvalidSetup",
59  FatalException, "Interpolation == 0!");
60 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4RDShellEMDataSet::~G4RDShellEMDataSet ( )
virtual

Definition at line 63 of file G4RDShellEMDataSet.cc.

References CleanUpComponents().

64 {
66  if (algorithm) delete algorithm;
67 }

Member Function Documentation

virtual void G4RDShellEMDataSet::AddComponent ( G4RDVEMDataSet dataSet)
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 74 of file G4RDShellEMDataSet.hh.

Referenced by LoadData().

74 { components.push_back(dataSet); }
void G4RDShellEMDataSet::CleanUpComponents ( void  )
protected

Definition at line 259 of file G4RDShellEMDataSet.cc.

Referenced by LoadData(), and ~G4RDShellEMDataSet().

260 {
261  while (!components.empty())
262  {
263  if (components.back()) delete components.back();
264  components.pop_back();
265  }
266 }
G4double G4RDShellEMDataSet::FindValue ( G4double  energy,
G4int  componentId = 0 
) const
virtual

Implements G4RDVEMDataSet.

Definition at line 70 of file G4RDShellEMDataSet.cc.

71 {
72  // Returns the sum over the shells corresponding to e
73  G4double value = 0.;
74 
75  std::vector<G4RDVEMDataSet *>::const_iterator i(components.begin());
76  std::vector<G4RDVEMDataSet *>::const_iterator end(components.end());
77 
78  while (i != end)
79  {
80  value += (*i)->FindValue(energy);
81  i++;
82  }
83 
84  return value;
85 }
double precision function energy(A, Z)
Definition: dpm25nuc6.f:4106
const XML_Char int const XML_Char * value
double G4double
Definition: G4Types.hh:76
const G4RDVDataSetAlgorithm* G4RDShellEMDataSet::GetAlgorithm ( ) const
inlineprotected

Definition at line 90 of file G4RDShellEMDataSet.hh.

90 { return algorithm; }
virtual const G4RDVEMDataSet* G4RDShellEMDataSet::GetComponent ( G4int  componentId) const
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 73 of file G4RDShellEMDataSet.hh.

Referenced by GetData(), GetEnergies(), PrintData(), and SaveData().

73 { return components[componentId]; }
virtual const G4DataVector& G4RDShellEMDataSet::GetData ( G4int  componentId) const
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 78 of file G4RDShellEMDataSet.hh.

References GetComponent(), and G4RDVEMDataSet::GetData().

78 { return GetComponent(componentId)->GetData(0); }
virtual const G4DataVector & GetData(G4int componentId) const =0
virtual const G4RDVEMDataSet * GetComponent(G4int componentId) const
virtual const G4DataVector& G4RDShellEMDataSet::GetEnergies ( G4int  componentId) const
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 77 of file G4RDShellEMDataSet.hh.

References GetComponent(), and G4RDVEMDataSet::GetEnergies().

77 { return GetComponent(componentId)->GetEnergies(0); }
virtual const G4DataVector & GetEnergies(G4int componentId) const =0
virtual const G4RDVEMDataSet * GetComponent(G4int componentId) const
G4double G4RDShellEMDataSet::GetUnitData ( ) const
inlineprotected

Definition at line 89 of file G4RDShellEMDataSet.hh.

89 { return unitData; }
G4double G4RDShellEMDataSet::GetUnitEnergies ( ) const
inlineprotected

Definition at line 88 of file G4RDShellEMDataSet.hh.

88 { return unitEnergies; }
G4bool G4RDShellEMDataSet::LoadData ( const G4String fileName)
virtual

Implements G4RDVEMDataSet.

Definition at line 126 of file G4RDShellEMDataSet.cc.

References test::a, AddComponent(), CleanUpComponents(), G4RDVDataSetAlgorithm::Clone(), FatalException, and G4Exception().

127 {
129 
130  G4String fullFileName = FullFileName(file);
131  std::ifstream in(fullFileName);
132 
133  if (!in.is_open())
134  {
135  G4String message("Data file \"");
136  message += fullFileName;
137  message += "\" not found";
138  G4Exception("G4RDShellEMDataSet::LoadData()", "DataNotFound",
139  FatalException, message);
140  }
141 
142  G4DataVector* energies = 0;
143  G4DataVector* data = 0;
144 
145  G4double a = 0.;
146  G4int shellIndex = 0;
147  bool energyColumn = true;
148 
149  do
150  {
151  in >> a;
152 
153  if (a == -1)
154  {
155  if (energyColumn && energies!=0)
156  {
157  AddComponent(new G4RDEMDataSet(shellIndex, energies, data, algorithm->Clone(), unitEnergies, unitData));
158  energies = 0;
159  data = 0;
160  }
161 
162  energyColumn = (!energyColumn);
163  }
164  else if (a != -2)
165  {
166  if (energies == 0)
167  {
168  energies = new G4DataVector;
169  data = new G4DataVector;
170  }
171 
172  if (energyColumn)
173  energies->push_back(a * unitEnergies);
174  else
175  data->push_back(a * unitData);
176 
177  energyColumn = (!energyColumn);
178  }
179  }
180  while (a != -2);
181 
182  return true;
183 }
virtual G4RDVDataSetAlgorithm * Clone() const =0
int G4int
Definition: G4Types.hh:78
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
virtual void AddComponent(G4RDVEMDataSet *dataSet)
double G4double
Definition: G4Types.hh:76
const XML_Char const XML_Char * data
virtual size_t G4RDShellEMDataSet::NumberOfComponents ( void  ) const
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 75 of file G4RDShellEMDataSet.hh.

Referenced by PrintData(), and SaveData().

75 { return components.size(); }
void G4RDShellEMDataSet::PrintData ( void  ) const
virtual

Implements G4RDVEMDataSet.

Definition at line 88 of file G4RDShellEMDataSet.cc.

References G4cout, G4endl, GetComponent(), n, NumberOfComponents(), and G4RDVEMDataSet::PrintData().

89 {
90  const size_t n = NumberOfComponents();
91 
92  G4cout << "The data set has " << n << " components" << G4endl;
93  G4cout << G4endl;
94 
95  size_t i = 0;
96 
97  while (i < n)
98  {
99  G4cout << "--- Component " << i << " ---" << G4endl;
100  GetComponent(i)->PrintData();
101  i++;
102  }
103 }
G4GLOB_DLL std::ostream G4cout
const G4int n
virtual void PrintData(void) const =0
virtual const G4RDVEMDataSet * GetComponent(G4int componentId) const
#define G4endl
Definition: G4ios.hh:61
virtual size_t NumberOfComponents(void) const
virtual G4double G4RDShellEMDataSet::RandomSelect ( G4int  ) const
inlinevirtual

Implements G4RDVEMDataSet.

Definition at line 84 of file G4RDShellEMDataSet.hh.

84 { return -1.; };
G4bool G4RDShellEMDataSet::SaveData ( const G4String fileName) const
virtual

Implements G4RDVEMDataSet.

Definition at line 186 of file G4RDShellEMDataSet.cc.

References FatalException, G4Exception(), GetComponent(), G4RDVEMDataSet::GetData(), G4RDVEMDataSet::GetEnergies(), left, n, and NumberOfComponents().

187 {
188  G4String fullFileName = FullFileName(file);
189  std::ofstream out(fullFileName);
190 
191  if (!out.is_open())
192  {
193  G4String message("Cannot open \"");
194  message += fullFileName;
195  message += "\"";
196  G4Exception("G4RDEMDataSet::SaveData()", "CannotOpenFile",
197  FatalException, message);
198  }
199 
200  const size_t n = NumberOfComponents();
201  size_t k = 0;
202 
203  while (k < n)
204  {
205  const G4RDVEMDataSet* component = GetComponent(k);
206 
207  if (component)
208  {
209  const G4DataVector& energies = component->GetEnergies(0);
210  const G4DataVector& data = component->GetData(0);
211 
212  G4DataVector::const_iterator i = energies.begin();
213  G4DataVector::const_iterator endI = energies.end();
214  G4DataVector::const_iterator j = data.begin();
215 
216  while (i != endI)
217  {
218  out.precision(10);
219  out.width(15);
220  out.setf(std::ofstream::left);
221  out << ((*i)/unitEnergies) << ' ';
222 
223  out.precision(10);
224  out.width(15);
225  out.setf(std::ofstream::left);
226  out << ((*j)/unitData) << std::endl;
227  i++;
228  j++;
229  }
230  }
231 
232  out.precision(10);
233  out.width(15);
234  out.setf(std::ofstream::left);
235  out << -1.f << ' ';
236 
237  out.precision(10);
238  out.width(15);
239  out.setf(std::ofstream::left);
240  out << -1.f << std::endl;
241 
242  k++;
243  }
244 
245  out.precision(10);
246  out.width(15);
247  out.setf(std::ofstream::left);
248  out << -2.f << ' ';
249 
250  out.precision(10);
251  out.width(15);
252  out.setf(std::ofstream::left);
253  out << -2.f << std::endl;
254 
255  return true;
256 }
virtual const G4DataVector & GetData(G4int componentId) const =0
const G4int n
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
virtual const G4DataVector & GetEnergies(G4int componentId) const =0
virtual const G4RDVEMDataSet * GetComponent(G4int componentId) const
virtual size_t NumberOfComponents(void) const
const XML_Char const XML_Char * data
void G4RDShellEMDataSet::SetEnergiesData ( G4DataVector energies,
G4DataVector data,
G4int  componentId 
)
virtual

Implements G4RDVEMDataSet.

Definition at line 106 of file G4RDShellEMDataSet.cc.

References FatalException, G4Exception(), and G4RDVEMDataSet::SetEnergiesData().

109 {
110  G4RDVEMDataSet* component = components[componentId];
111 
112  if (component)
113  {
114  component->SetEnergiesData(energies, data, 0);
115  return;
116  }
117 
118  std::ostringstream message;
119  message << "Component " << componentId << " not found";
120 
121  G4Exception("G4RDShellEMDataSet::SetEnergiesData()", "DataNotFound",
122  FatalException, message.str().c_str());
123 }
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

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