Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
Heed::MolecPhotoAbsCS Class Reference

#include <PhotoAbsCS.h>

Public Member Functions

int get_qatom () const
 Total number of atoms of all sorts in the molecule.
 
int get_qatom_ps (const int n) const
 Number of atoms of a particular sort in the molecule.
 
const AtomPhotoAbsCSget_atom (const int n)
 
double get_ACS (double energy) const
 Photo-absorption cross-section [Mbarn] at a given energy [MeV].
 
double get_integral_ACS (double energy1, double energy2) const
 Integral photo-absorption cross-section.
 
double get_ICS (double energy) const
 Photo-ionization cross-section [Mbarn] at a given energy [MeV].
 
double get_integral_ICS (double energy1, double energy2) const
 Integral photo-ionization cross-section.
 
int get_total_Z () const
 Sum up the atomic numbers of all atoms in the molecule.
 
double get_W () const
 Retrieve W value [MeV].
 
double get_F () const
 Retrieve Fano factor.
 
 MolecPhotoAbsCS ()=default
 Default constructor.
 
 MolecPhotoAbsCS (const AtomPhotoAbsCS *fatom, int fqatom, double fW=0.0, double fF=standard_factor_Fano)
 
 MolecPhotoAbsCS (const AtomPhotoAbsCS *fatom1, int fqatom_ps1, const AtomPhotoAbsCS *fatom2, int fqatom_ps2, double fW=0.0, double fF=standard_factor_Fano)
 
 MolecPhotoAbsCS (const AtomPhotoAbsCS *fatom1, int fqatom_ps1, const AtomPhotoAbsCS *fatom2, int fqatom_ps2, const AtomPhotoAbsCS *fatom3, int fqatom_ps3, double fW=0.0, double fF=standard_factor_Fano)
 
 ~MolecPhotoAbsCS ()
 Destructor.
 
void print (std::ostream &file, int l) const
 

Detailed Description

Molecular photoabsorption cross-section. Molecules refer to atoms by passive pointers. If atom is changed, its image for molecule is also changed.

Definition at line 591 of file PhotoAbsCS.h.

Constructor & Destructor Documentation

◆ MolecPhotoAbsCS() [1/4]

Heed::MolecPhotoAbsCS::MolecPhotoAbsCS ( )
default

Default constructor.

◆ MolecPhotoAbsCS() [2/4]

Heed::MolecPhotoAbsCS::MolecPhotoAbsCS ( const AtomPhotoAbsCS fatom,
int  fqatom,
double  fW = 0.0,
double  fF = standard_factor_Fano 
)

Constructor for one sort of atoms. If fW == 0.0, the program assigns it as 2 * mean(I_min).

Definition at line 1825 of file PhotoAbsCS.cpp.

1827 : qatom(fqatom), W(fW), F(fF) {
1828 qatom_ps.push_back(qatom);
1829 atom.push_back(fatom);
1830 if (W == 0.0) W = coef_I_to_W * atom[0]->get_I_min();
1831}
constexpr double coef_I_to_W
Definition: PhotoAbsCS.h:585

◆ MolecPhotoAbsCS() [3/4]

Heed::MolecPhotoAbsCS::MolecPhotoAbsCS ( const AtomPhotoAbsCS fatom1,
int  fqatom_ps1,
const AtomPhotoAbsCS fatom2,
int  fqatom_ps2,
double  fW = 0.0,
double  fF = standard_factor_Fano 
)

Constructor for two sorts of atoms. If fW == 0.0, the program assigns it as 2 * mean(I_min).

Definition at line 1833 of file PhotoAbsCS.cpp.

1836 : qatom(fqatom_ps1 + fqatom_ps2), W(fW), F(fF) {
1837 qatom_ps.push_back(fqatom_ps1);
1838 qatom_ps.push_back(fqatom_ps2);
1839 atom.push_back(fatom1);
1840 atom.push_back(fatom2);
1841 if (W != 0.0) return;
1842#ifdef CALC_W_USING_CHARGES
1843 W = coef_I_to_W * (qatom_ps[0] * atom[0]->get_Z() * atom[0]->get_I_min() +
1844 qatom_ps[1] * atom[1]->get_Z() * atom[1]->get_I_min()) /
1845 (qatom_ps[0] * atom[0]->get_Z() + qatom_ps[1] * atom[1]->get_Z());
1846#else
1847 W = coef_I_to_W * (qatom_ps[0] * atom[0]->get_I_min() +
1848 qatom_ps[1] * atom[1]->get_I_min()) /
1849 qatom;
1850#endif
1851}

◆ MolecPhotoAbsCS() [4/4]

Heed::MolecPhotoAbsCS::MolecPhotoAbsCS ( const AtomPhotoAbsCS fatom1,
int  fqatom_ps1,
const AtomPhotoAbsCS fatom2,
int  fqatom_ps2,
const AtomPhotoAbsCS fatom3,
int  fqatom_ps3,
double  fW = 0.0,
double  fF = standard_factor_Fano 
)

Constructor for three sorts of atoms. If fW == 0.0, the program assigns it as 2 * mean(I_min).

Definition at line 1853 of file PhotoAbsCS.cpp.

1857 : qatom(fqatom_ps1 + fqatom_ps2 + fqatom_ps3), W(fW), F(fF) {
1858 qatom_ps.push_back(fqatom_ps1);
1859 qatom_ps.push_back(fqatom_ps2);
1860 qatom_ps.push_back(fqatom_ps3);
1861 atom.push_back(fatom1);
1862 atom.push_back(fatom2);
1863 atom.push_back(fatom3);
1864 if (W != 0.0) return;
1865#ifdef CALC_W_USING_CHARGES
1866 W = coef_I_to_W * (qatom_ps[0] * atom[0]->get_Z() * atom[0]->get_I_min() +
1867 qatom_ps[1] * atom[1]->get_Z() * atom[1]->get_I_min() +
1868 qatom_ps[2] * atom[2]->get_Z() * atom[2]->get_I_min()) /
1869 (qatom_ps[0] * atom[0]->get_Z() + qatom_ps[1] * atom[1]->get_Z() +
1870 qatom_ps[2] * atom[2]->get_Z());
1871#else
1872 W = coef_I_to_W *
1873 (qatom_ps[0] * atom[0]->get_I_min() + qatom_ps[1] * atom[1]->get_I_min() +
1874 qatom_ps[2] * atom[2]->get_I_min()) /
1875 qatom;
1876#endif
1877}

◆ ~MolecPhotoAbsCS()

Heed::MolecPhotoAbsCS::~MolecPhotoAbsCS ( )
inline

Destructor.

Definition at line 635 of file PhotoAbsCS.h.

635{}

Member Function Documentation

◆ get_ACS()

double Heed::MolecPhotoAbsCS::get_ACS ( double  energy) const

Photo-absorption cross-section [Mbarn] at a given energy [MeV].

Definition at line 1879 of file PhotoAbsCS.cpp.

1879 {
1880 mfunname("double MolecPhotoAbsCS::get_ACS(double energy) const");
1881 const long q = qatom_ps.size();
1882 double s = 0.0;
1883 for (long n = 0; n < q; n++) s += qatom_ps[n] * atom[n]->get_ACS(energy);
1884 return s;
1885}
#define mfunname(string)
Definition: FunNameStack.h:45
double get_ACS(double energy) const
Photo-absorption cross-section [Mbarn] at a given energy [MeV].

Referenced by get_ACS().

◆ get_atom()

const AtomPhotoAbsCS * Heed::MolecPhotoAbsCS::get_atom ( const int  n)
inline

Definition at line 597 of file PhotoAbsCS.h.

597 {
598 return atom[n];
599 }

◆ get_F()

double Heed::MolecPhotoAbsCS::get_F ( ) const
inline

Retrieve Fano factor.

Definition at line 615 of file PhotoAbsCS.h.

615{ return F; }

◆ get_ICS()

double Heed::MolecPhotoAbsCS::get_ICS ( double  energy) const

Photo-ionization cross-section [Mbarn] at a given energy [MeV].

Definition at line 1897 of file PhotoAbsCS.cpp.

1897 {
1898 mfunname("double MolecPhotoAbsCS::get_ICS(double energy) const");
1899 const long q = qatom_ps.size();
1900 double s = 0.0;
1901 for (long n = 0; n < q; n++) s += qatom_ps[n] * atom[n]->get_ICS(energy);
1902 return s;
1903}
double get_ICS(double energy) const
Photo-ionization cross-section [Mbarn] at a given energy [MeV].

Referenced by get_ICS().

◆ get_integral_ACS()

double Heed::MolecPhotoAbsCS::get_integral_ACS ( double  energy1,
double  energy2 
) const

Integral photo-absorption cross-section.

Definition at line 1887 of file PhotoAbsCS.cpp.

1887 {
1888 mfunname("double MolecPhotoAbsCS::get_integral_ACS(double e1, double e2)");
1889 const long q = qatom_ps.size();
1890 double s = 0.0;
1891 for (long n = 0; n < q; n++) {
1892 s += qatom_ps[n] * atom[n]->get_integral_ACS(en1, en2);
1893 }
1894 return s;
1895}

◆ get_integral_ICS()

double Heed::MolecPhotoAbsCS::get_integral_ICS ( double  energy1,
double  energy2 
) const

Integral photo-ionization cross-section.

Definition at line 1905 of file PhotoAbsCS.cpp.

1905 {
1906 mfunname("double MolecPhotoAbsCS::get_integral_ICS(double e1, double e2)");
1907 const long q = qatom_ps.size();
1908 double s = 0.0;
1909 for (long n = 0; n < q; n++) {
1910 s += qatom_ps[n] * atom[n]->get_integral_ICS(en1, en2);
1911 }
1912 return s;
1913}

◆ get_qatom()

int Heed::MolecPhotoAbsCS::get_qatom ( ) const
inline

Total number of atoms of all sorts in the molecule.

Definition at line 594 of file PhotoAbsCS.h.

594{ return qatom; }

◆ get_qatom_ps()

int Heed::MolecPhotoAbsCS::get_qatom_ps ( const int  n) const
inline

Number of atoms of a particular sort in the molecule.

Definition at line 596 of file PhotoAbsCS.h.

596{ return qatom_ps[n]; }

◆ get_total_Z()

int Heed::MolecPhotoAbsCS::get_total_Z ( ) const

Sum up the atomic numbers of all atoms in the molecule.

Definition at line 1915 of file PhotoAbsCS.cpp.

1915 {
1916 mfunname("int MolecPhotoAbsCS::get_total_Z() const");
1917 const long q = qatom_ps.size();
1918 int s = 0;
1919 for (long n = 0; n < q; n++) {
1920 s += qatom_ps[n] * atom[n]->get_Z();
1921 }
1922 return s;
1923}

◆ get_W()

double Heed::MolecPhotoAbsCS::get_W ( ) const
inline

Retrieve W value [MeV].

Definition at line 613 of file PhotoAbsCS.h.

613{ return W; }

◆ print()

void Heed::MolecPhotoAbsCS::print ( std::ostream &  file,
int  l 
) const

Definition at line 1925 of file PhotoAbsCS.cpp.

1925 {
1926 Ifile << "MolecPhotoAbsCS (l=" << l << "):\n";
1927 Iprintn(file, qatom);
1928 Iprintn(file, W);
1929 Iprintn(file, F);
1930 const long q = qatom_ps.size();
1931 Ifile << "number of sorts of atoms is " << q << '\n';
1932 indn.n += 2;
1933 for (long n = 0; n < q; n++) {
1934 Ifile << "n=" << n << " qatom_ps[n]=" << qatom_ps[n] << " atom:\n";
1935 atom[n]->print(file, l);
1936 }
1937 indn.n -= 2;
1938}
indentation indn
Definition: prstream.cpp:15
#define Ifile
Definition: prstream.h:196
#define Iprintn(file, name)
Definition: prstream.h:205

Referenced by Heed::operator<<().


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