Garfield++ v2r0
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>

+ Inheritance diagram for Heed::MolecPhotoAbsCS:

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 PassivePtr< const AtomPhotoAbsCSget_atom (const int n)
 
virtual double get_ACS (double energy) const
 Photo-absorption cross-section [Mbarn] at a given energy [MeV].
 
virtual double get_integral_ACS (double energy1, double energy2) const
 Integral photo-absorption cross-section.
 
virtual double get_ICS (double energy) const
 Photo-ionization cross-section [Mbarn] at a given energy [MeV].
 
virtual 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 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)
 
virtual ~MolecPhotoAbsCS ()
 Destructor.
 
virtual void print (std::ostream &file, int l) const
 
- Public Member Functions inherited from Heed::RegPassivePtr
 RegPassivePtr (void)
 
 RegPassivePtr (char fs_ban_del, char fs_ban_sub, char fs_ban_cop=0)
 
 RegPassivePtr (const RegPassivePtr &f)
 
RegPassivePtroperator= (const RegPassivePtr &f)
 
CountPP_ns::CountPassivePtrbook (void) const
 
void clear_pointers (void) const
 
virtual RegPassivePtrcopy () const
 
virtual ~RegPassivePtr ()
 
virtual void print (std::ostream &file, int l=1) const
 
void set_s_ban_del (char fs_ban_del)
 
char get_s_ban_del (void) const
 
void set_s_ban_sub (char fs_ban_sub)
 
char get_s_ban_sub (void) const
 
void set_s_ban_cop (char fs_ban_cop)
 
char get_s_ban_cop (void) const
 
void set_s_allow_del_at_zero_count (char fs_allow_del_at_zero_count)
 
char get_s_allow_del_at_zero_count (void) const
 
long get_total_number_of_references (void) const
 

Additional Inherited Members

- Static Public Member Functions inherited from Heed::RegPassivePtr
static void set_s_ban_del_ignore (char fs_ban_del_ignore)
 
static char get_s_ban_del_ignore (void)
 
static void set_s_print_adr_cpp (char fs_print_adr_cpp)
 
static char get_s_print_adr_cpp (void)
 

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 590 of file PhotoAbsCS.h.

Constructor & Destructor Documentation

◆ MolecPhotoAbsCS() [1/4]

Heed::MolecPhotoAbsCS::MolecPhotoAbsCS ( )
inline

Default constructor.

Definition at line 617 of file PhotoAbsCS.h.

617: qatom(0) {}

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

1830 : qatom(fqatom), W(fW), F(fF) {
1831 qatom_ps.push_back(qatom);
1832 atom.push_back(PassivePtr<const AtomPhotoAbsCS>(&fatom));
1833 if (W == 0.0) W = coef_I_to_W * atom[0]->get_I_min();
1834}
const double coef_I_to_W
Definition: PhotoAbsCS.h:584

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

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

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

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

◆ ~MolecPhotoAbsCS()

virtual Heed::MolecPhotoAbsCS::~MolecPhotoAbsCS ( )
inlinevirtual

Destructor.

Definition at line 634 of file PhotoAbsCS.h.

634{}

Member Function Documentation

◆ get_ACS()

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

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

Definition at line 1882 of file PhotoAbsCS.cpp.

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

Referenced by get_ACS().

◆ get_atom()

const PassivePtr< const AtomPhotoAbsCS > Heed::MolecPhotoAbsCS::get_atom ( const int  n)
inline

Definition at line 596 of file PhotoAbsCS.h.

596 {
597 return atom[n];
598 }

◆ get_F()

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

Retrieve Fano factor.

Definition at line 614 of file PhotoAbsCS.h.

614{ return F; }

Referenced by Heed::HeedMatterDef::HeedMatterDef().

◆ get_ICS()

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

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

Definition at line 1900 of file PhotoAbsCS.cpp.

1900 {
1901 mfunname("double MolecPhotoAbsCS::get_ICS(double energy) const");
1902 const long q = qatom_ps.size();
1903 double s = 0.0;
1904 for (long n = 0; n < q; n++) s += qatom_ps[n] * atom[n]->get_ICS(energy);
1905 return s;
1906}
virtual 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
virtual

Integral photo-absorption cross-section.

Definition at line 1890 of file PhotoAbsCS.cpp.

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

◆ get_integral_ICS()

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

Integral photo-ionization cross-section.

Definition at line 1908 of file PhotoAbsCS.cpp.

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

◆ get_qatom()

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

Total number of atoms of all sorts in the molecule.

Definition at line 593 of file PhotoAbsCS.h.

593{ return qatom; }

Referenced by Heed::HeedMatterDef::HeedMatterDef().

◆ 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 595 of file PhotoAbsCS.h.

595{ 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 1918 of file PhotoAbsCS.cpp.

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

Referenced by Heed::HeedMatterDef::HeedMatterDef().

◆ get_W()

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

Retrieve W value [MeV].

Definition at line 612 of file PhotoAbsCS.h.

612{ return W; }

Referenced by Heed::HeedMatterDef::HeedMatterDef().

◆ print()

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

Reimplemented from Heed::RegPassivePtr.

Definition at line 1928 of file PhotoAbsCS.cpp.

1928 {
1929 Ifile << "MolecPhotoAbsCS (l=" << l << "):\n";
1930 Iprintn(file, qatom);
1931 Iprintn(file, W);
1932 Iprintn(file, F);
1933 const long q = qatom_ps.size();
1934 Ifile << "number of sorts of atoms is " << q << '\n';
1935 indn.n += 2;
1936 for (long n = 0; n < q; n++) {
1937 Ifile << "n=" << n << " qatom_ps[n]=" << qatom_ps[n] << " atom:\n";
1938 atom[n]->print(file, l);
1939 }
1940 indn.n -= 2;
1941}
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: