28 #ifndef FISX_ELEMENT_H 29 #define FISX_ELEMENT_H 34 #include "fisx_shell.h" 35 #include "fisx_epdl97.h" 53 Element(std::string name,
int z);
61 void setName(
const std::string & name);
143 void setBindingEnergies(std::vector<std::string> labels, std::vector<double> energies);
163 const std::vector<double> & photoelectric, \
164 const std::vector<double> & coherent, \
165 const std::vector<double> & incoherent, \
166 const std::vector<double> & pair);
173 const std::vector<double> & photoelectric, \
174 const std::vector<double> & coherent, \
175 const std::vector<double> & incoherent);
184 const std::vector<double> & total);
196 const std::vector<double> & energy)
const;
203 std::map<std::string, std::pair<double, int> > extractEdgeEnergiesFromMassAttenuationCoefficients();
204 std::map<std::string, std::pair<double, int> > extractEdgeEnergiesFromMassAttenuationCoefficients(\
205 const std::vector<double> & energies,\
206 const std::vector<double> & muPhotoelectric);
214 const std::vector<double> & energy, \
215 const std::vector<double> & partialPhotoelectric);
221 const double & energy)
const;
224 void setRadiativeTransitions(std::string subshell, std::map<std::string, double> values);
226 void setRadiativeTransitions(std::string subshell,\
227 std::vector<std::string>,\
228 std::vector<double> values);
230 const std::map<std::string, double> & getRadiativeTransitions(
const std::string & subshell)
const;
232 void setNonradiativeTransitions(std::string subshell,
233 std::vector<std::string>,
234 std::vector<double> values);
236 void setNonradiativeTransitions(std::string subshell,
237 std::map<std::string, double> values);
239 const std::map<std::string, double> & getNonradiativeTransitions(
const std::string & subshell)
const;
242 void setShellConstants(std::string subshell, std::map<std::string, double> constants);
243 std::map<std::string, double> getShellConstants(
const std::string & subshell)
const;
255 const std::map<std::string, double> &
getXRayLines(
const std::string & family =
"")
const;
270 const std::vector<double> & energies)
const;
280 std::map<std::string, double> getCascadeModifiedVacancyDistribution(
const std::map<std::string, \
281 double> & distribution)
const;
295 std::map<std::string, std::map<std::string, double> >\
296 getXRayLinesFromVacancyDistribution(
const std::map<std::string, double> & distribution, \
297 const int & cascade = 1,
298 const int & useFluorescenceYield = 1)
const;
305 std::vector<std::map<std::string, std::map<std::string, double> > > \
306 getPhotoelectricExcitationFactors( \
307 const std::vector<double> & energy,
308 const std::vector<double> & weights = std::vector<double>())
const;
317 const double & energy,
318 const double & weight = 1.0)
const;
321 const Shell & getShell(
const std::string &)
const;
327 const std::map<std::string, double> & getAugerRatios(std::string subshell);
328 const std::map<std::string, std::map<std::string, double> > & getCosterKronigRatios(std::string subshell);
344 int isCascadeCacheFilled()
const;
346 void fillCascadeCache();
347 void emptyCascadeCache();
352 void fillCache(
const std::vector< double> & energy);
364 void updateCache(
const std::vector< double> & energy);
389 std::string longName;
392 std::map<std::string, double> bindingEnergy;
394 std::vector<double> muEnergy;
395 std::map< std::string, std::vector<double> >mu;
402 void initPartialPhotoelectricCoefficients();
403 std::map<std::string, std::vector<double> > muPartialPhotoelectricEnergy;
404 std::map<std::string, std::vector<double> > muPartialPhotoelectricValue;
407 static const unsigned int cacheMaximumSize = 10000;
408 bool calculationCacheEnabledFlag;
409 std::map< double, std::map< std::string, double> > muCache;
410 std::map< double, std::map<std::string, std::map<std::string, double> > > excitationFactorsCache;
413 std::map<std::string, Shell> shellInstance;
422 std::map<std::string, std::map<std::string, double> > shellXRayLines;
424 bool cascadeCacheEnabledFlag;
430 std::map<std::string, std::map<std::string, std::map<std::string, double> > > cascadeCache;
435 #endif // FISX_ELEMENT_H void setName(const std::string &name)
Definition: fisx_element.cpp:91
double getDensity() const
Definition: fisx_element.cpp:116
std::map< std::string, double > getPartialPhotoelectricMassAttenuationCoefficients(const double &energy) const
Definition: fisx_element.cpp:682
void clearCache()
Definition: fisx_element.cpp:1699
Definition: fisx_element.cpp:34
Definition: fisx_shell.h:39
std::map< std::string, std::vector< double > > getInitialPhotoelectricVacancyDistribution(const std::vector< double > &energies) const
Definition: fisx_element.cpp:907
double getTransitionEnergy(const std::string &transition) const
Definition: fisx_element.cpp:1163
std::vector< std::string > getExcitedShells(const double &energy) const
Definition: fisx_element.cpp:886
std::map< std::string, double > getEmittedXRayLines(const double &energy=1000.) const
Definition: fisx_element.cpp:1118
std::vector< std::map< std::string, std::map< std::string, double > > > getPhotoelectricExcitationFactors(const std::vector< double > &energy, const std::vector< double > &weights=std::vector< double >()) const
Definition: fisx_element.cpp:1496
const std::map< std::string, double > & getBindingEnergies() const
Definition: fisx_element.cpp:198
const double & getAtomicMass() const
Definition: fisx_element.cpp:1472
const int & getAtomicNumber() const
Definition: fisx_element.cpp:1489
const int isCacheEnabled() const
Definition: fisx_element.cpp:1687
void setBindingEnergies(std::map< std::string, double > bindingEnergies)
Definition: fisx_element.cpp:144
std::pair< long, long > getInterpolationIndices(const std::vector< double > &, const double &) const
Definition: fisx_element.cpp:1565
void setMassAttenuationCoefficients(const std::vector< double > &energies, const std::vector< double > &photoelectric, const std::vector< double > &coherent, const std::vector< double > &incoherent, const std::vector< double > &pair)
Definition: fisx_element.cpp:214
void updateCache(const std::vector< double > &energy)
Definition: fisx_element.cpp:1740
void setDensity(const double &)
Definition: fisx_element.cpp:111
int getColumn() const
Definition: fisx_element.cpp:126
Definition: fisx_element.h:40
void setAtomicMass(const double &mass)
Definition: fisx_element.cpp:1462
void setCascadeCacheEnabled(const int &flag=1)
Definition: fisx_element.cpp:1629
const std::map< std::string, double > & getXRayLines(const std::string &family="") const
Definition: fisx_element.cpp:1113
const std::map< std::string, std::vector< double > > & getMassAttenuationCoefficients() const
Definition: fisx_element.cpp:320
void fillCache(const std::vector< double > &energy)
Definition: fisx_element.cpp:1705
void setColumn(const int &)
Definition: fisx_element.cpp:121
int getCacheSize() const
Definition: fisx_element.cpp:1783
std::string getLongName() const
Definition: fisx_element.cpp:106
void setAtomicNumber(const int &z)
Definition: fisx_element.cpp:1479
void setLongName(const std::string &name)
Definition: fisx_element.cpp:101
int getRow() const
Definition: fisx_element.cpp:136
Element()
Definition: fisx_element.cpp:37
const std::map< std::string, double > & getFluorescenceRatios(const std::string &subshell) const
Definition: fisx_element.cpp:1081
void setCacheEnabled(const int &flag=1)
Definition: fisx_element.cpp:1679
void setPartialPhotoelectricMassAttenuationCoefficients(const std::string &shell, const std::vector< double > &energy, const std::vector< double > &partialPhotoelectric)
Definition: fisx_element.cpp:616
void setRow(const int &)
Definition: fisx_element.cpp:131
std::string getName() const
Definition: fisx_element.cpp:96
void setTotalMassAttenuationCoefficient(const std::vector< double > &energies, const std::vector< double > &total)
Definition: fisx_element.cpp:306