Garfield++ 4.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.
 
size_t 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 1822 of file PhotoAbsCS.cpp.

1824 : qatom(fqatom), W(fW), F(fF) {
1825 qatom_ps.push_back(qatom);
1826 atom.push_back(fatom);
1827 if (W == 0.0) W = coef_I_to_W * atom[0]->get_I_min();
1828}
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 1830 of file PhotoAbsCS.cpp.

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

◆ 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 1850 of file PhotoAbsCS.cpp.

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

◆ ~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 1876 of file PhotoAbsCS.cpp.

1876 {
1877 mfunname("double MolecPhotoAbsCS::get_ACS(double energy) const");
1878 const long q = qatom_ps.size();
1879 double s = 0.0;
1880 for (long n = 0; n < q; n++) s += qatom_ps[n] * atom[n]->get_ACS(energy);
1881 return s;
1882}
#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 1894 of file PhotoAbsCS.cpp.

1894 {
1895 mfunname("double MolecPhotoAbsCS::get_ICS(double energy) const");
1896 const long q = qatom_ps.size();
1897 double s = 0.0;
1898 for (long n = 0; n < q; n++) s += qatom_ps[n] * atom[n]->get_ICS(energy);
1899 return s;
1900}
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 1884 of file PhotoAbsCS.cpp.

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

◆ get_integral_ICS()

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

Integral photo-ionization cross-section.

Definition at line 1902 of file PhotoAbsCS.cpp.

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

◆ 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()

size_t Heed::MolecPhotoAbsCS::get_total_Z ( ) const

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

Definition at line 1912 of file PhotoAbsCS.cpp.

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

◆ 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 1922 of file PhotoAbsCS.cpp.

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

Referenced by Heed::operator<<().


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