28 #ifndef FISX_ELEMENTS_H 29 #define FISX_ELEMENTS_H 40 #include "fisx_simplespecfile.h" 41 #include "fisx_element.h" 42 #include "fisx_epdl97.h" 43 #include "fisx_material.h" 57 #define FISX_DATA_DIR "" 73 Elements(std::string dataDirectory=
"");
82 Elements(std::string dataDirectory,
short pymca);
93 Elements(std::string dataDirectory, std::string bindingEnergiesFile, std::string crossSectionsFile=
"");
130 const double & energy= 1000.)
const;
137 const std::string & subshell)
const;
143 const std::string & subshell)
const;
154 const std::string & elementName,
155 const std::vector<double> & energies)
const;
166 const std::string & elementName,
167 const double & energy)
const;
169 std::map<std::string, double> getCascadeModifiedVacancyDistribution(
const std::string & elementName,
170 const std::map<std::string, \
171 double> & distribution)
const;
187 std::map<std::string, std::map<std::string, double> >\
188 getXRayLinesFromVacancyDistribution(
const std::string & elementName,
189 const std::map<std::string, double> & distribution, \
190 const int & cascade = 1,
191 const int & useFluorescenceYield = 1)
const;
197 std::map<std::string, double>
getShellConstants(
const std::string & elementName, \
198 const std::string & subshell)
const;
210 const std::string & fileName);
217 const std::string & fileName);
251 const std::vector<double> & energy, \
252 const std::vector<double> & photoelectric, \
253 const std::vector<double> & coherent, \
254 const std::vector<double> & compton,\
255 const std::vector<double> & pair);
261 const std::string & elementName)
const;
269 const std::string & formula,
270 const std::vector<double> & energies)
const;
278 std::map<std::string, double> elementMassFractions,\
279 std::vector<double> energies)
const;
296 std::map<std::string, double> elementMassFractions,\
297 double energies)
const;
305 const double & thickness = 1.0,
const std::string & comment =
"");
315 const std::map<std::string, double> & composition);
323 const std::vector<std::string> & names,\
324 const std::vector<double> & amounts);
349 void addMaterial(
const std::string & name,
const double & density = 1.0, \
350 const double & thickness = 1.0,
const std::string & comment =
"", \
351 const int & errorOnReplace = 1);
374 std::map<std::string, double>
getComposition(
const std::string & name)
const;
382 std::map<std::string, double>
getComposition(
const std::string & name, \
383 const std::vector<Material> & materials)
const;
389 std::map<std::string, double>
parseFormula(
const std::string & formula)
const;
397 const std::string & element,
398 const std::vector<double> & energy,
399 const std::vector<double> & weights = std::vector<double>())
const;
407 const std::string & element,
408 const double & energy, \
409 const double & weights = 1.0)
const;
415 std::vector<std::pair<std::string, double> >
getPeakFamilies(
const std::string & name, \
416 const double & energy)
const;
423 std::vector<std::pair<std::string, double> >
getPeakFamilies(
const std::vector<std::string> & elementList, \
424 const double & energy)
const;
430 const double &
getAtomicMass(
const std::string & name)
const;
441 const std::map<std::string, double> &
getBindingEnergies(
const std::string & name)
const;
446 double getDensity(
const std::string & name)
const;
451 std::string
getLongName(
const std::string & name)
const;
456 int getColumn(
const std::string & name)
const;
461 int getRow(
const std::string & name)
const;
484 std::map<std::string, std::map<std::string, double> >
getEscape(
const std::map<std::string, double> & composition, \
485 const double & energy, \
486 const double & energyThreshold = 0.010, \
487 const double & intensityThreshold = 1.0e-7, \
488 const int & nThreshold = 4 , \
489 const double & alphaIn = 90.,\
490 const double & thickness = 0.0)
const;
497 const std::vector<double> & energy, \
498 const double & energyThreshold = 0.010, \
499 const double & intensityThreshold = 1.0e-7, \
500 const int & nThreshold = 4 , \
501 const double & alphaIn = 90.,\
502 const double & thickness = 0.0);
509 int isElementCascadeCacheFilled(
const std::string & elementName)
const;
510 void fillElementCascadeCache(
const std::string & elementName);
511 void emptyElementCascadeCache(
const std::string & elementName);
512 void setEscapeCacheEnabled(
const int & flag = 1){this->escapeCacheEnabled = flag;};
513 int isEscapeCacheEnabled()
const {
return this->escapeCacheEnabled;};
519 void fillCache(
const std::string & elementName,
const std::vector< double> & energy);
525 void setCacheEnabled(
const std::string & elementName,
const int & flag = 1);
531 void updateCache(
const std::string & elementName,
const std::vector< double> & energy);
536 void clearCache(
const std::string & elementName);
551 int getCacheSize(
const std::string & elementName)
const;
556 static bool stringToDouble(
const std::string & str,
double& number);
561 static std::string
toString(
const double& number);
565 void initialize(std::string, std::string);
572 std::map<std::string , int> elementDict;
575 std::vector<Element> elementList;
578 std::vector<Material> materialList;
581 const std::vector<Material>::size_type getMaterialIndexFromName(
const std::string & name)
const;
584 std::map<std::string, std::string> shellConstantsFile;
585 std::map<std::string, std::string> shellRadiativeTransitionsFile;
586 std::map<std::string, std::string> shellNonradiativeTransitionsFile;
589 std::map< double, std::map<std::string,std::map<std::string, double> > > detectorEscapeCache;
590 std::map< std::string, double> detectorCompositionUsedInCache;
591 double detectorEnergyThresholdUsedInCache;
592 double detectorIntensityThresholdUsedInCache;
593 int detectorNThresholdUsedInCache;
594 double detectorAlphaInUsedInCache;
595 double detectorThicknessUsedInCache;
596 int escapeCacheEnabled;
597 bool isEscapeCacheCompatible(\
598 const std::map<std::string, double> & composition,
599 const double & energyThreshold, \
600 const double & intensityThreshold, \
601 const int & nThreshold , \
602 const double & alphaIn , \
603 const double & thickness)
const;
605 struct sortVectorOfExcited {
606 bool operator()(
const std::pair<std::string, double> &left,
const std::pair<std::string,int> &right) {
607 return left.second < right.second;
615 #endif //FISX_ELEMENTS_H Material createMaterial(const std::string &name, const double &density=1.0, const double &thickness=1.0, const std::string &comment="")
Definition: fisx_elements.cpp:1161
void setCacheEnabled(const std::string &elementName, const int &flag=1)
Definition: fisx_elements.cpp:2175
const Material & getMaterial(const std::string &materialName)
Definition: fisx_elements.cpp:1239
void setElementCascadeCacheEnabled(const std::string &elementName, const int &flag=1)
Definition: fisx_elements.cpp:2093
const std::string & getShellConstantsFile(const std::string &mainShellName) const
Definition: fisx_elements.cpp:1786
const std::string & getShellNonradiativeTransitionsFile(const std::string &mainShellName) const
Definition: fisx_elements.cpp:1811
void setMassAttenuationCoefficients(const std::string &elementName, const std::vector< double > &energy, const std::vector< double > &photoelectric, const std::vector< double > &coherent, const std::vector< double > &compton, const std::vector< double > &pair)
Definition: fisx_elements.cpp:719
void clearEscapeCache(void)
Definition: fisx_elements.cpp:2203
const std::map< std::string, double > & getBindingEnergies(const std::string &name) const
Definition: fisx_elements.cpp:1870
static const std::string defaultDataDir()
Definition: fisx_elements.cpp:42
void addMaterial(const Material &materialInstance, const int &errorOnReplace=1)
Definition: fisx_elements.cpp:1282
std::map< std::string, double > getCompositionFromFormula(const std::string &formula) const
Definition: fisx_elements.cpp:1466
Class containing the composition of a material.
Definition: fisx_material.h:45
void fillCache(const std::string &elementName, const std::vector< double > &energy)
Definition: fisx_elements.cpp:2146
Definition: fisx_element.cpp:34
const double & getAtomicMass(const std::string &name) const
Definition: fisx_elements.cpp:1860
void setMaterialComposition(const std::string &materialName, const std::map< std::string, double > &composition)
Definition: fisx_elements.cpp:1224
void setShellNonradiativeTransitionsFile(const std::string &mainShellName, const std::string &fileName)
Definition: fisx_elements.cpp:426
Class handling the physical properties.
Definition: fisx_elements.h:60
std::map< std::string, std::vector< double > > getInitialPhotoelectricVacancyDistribution(const std::string &elementName, const std::vector< double > &energies) const
Definition: fisx_elements.cpp:1529
static bool stringToDouble(const std::string &str, double &number)
Definition: fisx_elements.cpp:1918
void updateCache(const std::string &elementName, const std::vector< double > &energy)
Definition: fisx_elements.cpp:2160
Definition: fisx_epdl97.h:38
std::vector< std::map< std::string, std::map< std::string, double > > > getExcitationFactors(const std::string &element, const std::vector< double > &energy, const std::vector< double > &weights=std::vector< double >()) const
Definition: fisx_elements.cpp:1504
std::vector< std::pair< std::string, double > > getPeakFamilies(const std::string &name, const double &energy) const
Definition: fisx_elements.cpp:1895
void setShellRadiativeTransitionsFile(const std::string &mainShellName, const std::string &fileName)
Definition: fisx_elements.cpp:522
static std::string toString(const double &number)
Definition: fisx_elements.cpp:1931
Material getMaterialCopy(const std::string &materialName)
Definition: fisx_elements.cpp:1267
Element getElementCopy(const std::string &elementName)
Definition: fisx_elements.cpp:296
int getColumn(const std::string &name) const
Definition: fisx_elements.cpp:1890
int getRow(const std::string &name) const
Definition: fisx_elements.cpp:1885
void setShellConstantsFile(const std::string &mainShellName, const std::string &fileName)
Definition: fisx_elements.cpp:321
bool isElementNameDefined(const std::string &elementName) const
Definition: fisx_elements.cpp:255
int getCacheSize(const std::string &elementName) const
Definition: fisx_elements.cpp:2318
std::vector< std::string > getElementNames()
Definition: fisx_elements.cpp:268
Definition: fisx_element.h:40
const std::map< std::string, double > & getRadiativeTransitions(const std::string &elementName, const std::string &subshell) const
Definition: fisx_elements.cpp:1950
std::map< std::string, std::vector< double > > getMassAttenuationCoefficients(const std::string &elementName) const
Definition: fisx_elements.cpp:984
Elements(std::string dataDirectory="")
Definition: fisx_elements.cpp:70
void updateEscapeCache(const std::map< std::string, double > &composition, const std::vector< double > &energy, const double &energyThreshold=0.010, const double &intensityThreshold=1.0e-7, const int &nThreshold=4, const double &alphaIn=90., const double &thickness=0.0)
Definition: fisx_elements.cpp:2261
void clearCache(const std::string &elementName)
Definition: fisx_elements.cpp:2189
void addElement(const Element &elementInstance)
Definition: fisx_elements.cpp:304
std::string getLongName(const std::string &name) const
Definition: fisx_elements.cpp:1880
std::map< std::string, double > getComposition(const std::string &name) const
Definition: fisx_elements.cpp:1320
std::map< std::string, double > parseFormula(const std::string &formula) const
Definition: fisx_elements.cpp:1566
std::vector< std::string > getMaterialNames()
Definition: fisx_elements.cpp:1253
void setMassAttenuationCoefficientsFile(const std::string &fileName)
Definition: fisx_elements.cpp:619
const std::map< std::string, double > & getNonradiativeTransitions(const std::string &elementName, const std::string &subshell) const
Definition: fisx_elements.cpp:1944
void removeMaterials()
Definition: fisx_elements.cpp:1315
std::map< std::string, double > getShellConstants(const std::string &elementName, const std::string &subshell) const
Definition: fisx_elements.cpp:1956
void removeMaterial(const std::string &name)
Definition: fisx_elements.cpp:2080
std::map< std::string, std::map< std::string, double > > getEscape(const std::map< std::string, double > &composition, const double &energy, const double &energyThreshold=0.010, const double &intensityThreshold=1.0e-7, const int &nThreshold=4, const double &alphaIn=90., const double &thickness=0.0) const
Definition: fisx_elements.cpp:1964
const int & getAtomicNumber(const std::string &name) const
Definition: fisx_elements.cpp:1865
const std::string & getShellRadiativeTransitionsFile(const std::string &mainShellName) const
Definition: fisx_elements.cpp:1798
const Element & getElement(const std::string &elementName) const
Definition: fisx_elements.cpp:282
const int isCacheEnabled(const std::string &elementName) const
Definition: fisx_elements.cpp:2304
std::map< std::string, double > getEmittedXRayLines(const std::string &elementName, const double &energy=1000.) const
Definition: fisx_elements.cpp:1939
double getDensity(const std::string &name) const
Definition: fisx_elements.cpp:1875