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::PhotoAbsCS Class Referenceabstract

#include <PhotoAbsCS.h>

+ Inheritance diagram for Heed::PhotoAbsCS:

Public Member Functions

 PhotoAbsCS ()
 Default constructor.
 
 PhotoAbsCS (const std::string &fname, int fZ, double fthreshold)
 Constructor.
 
virtual ~PhotoAbsCS ()
 Destructor.
 
const std::string & get_name () const
 Name of this shell or atom.
 
int get_number () const
 Number of this shell.
 
int get_Z () const
 
double get_threshold () const
 Return the threshold energy.
 
virtual double get_CS (double energy) const =0
 Retrieve cross-section [Mb] at a given energy [MeV].
 
virtual double get_integral_CS (double energy1, double energy2) const =0
 Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
 
virtual void scale (double fact)=0
 Multiply by some factor. Can be useful for debugging and other purposes.
 
virtual void print (std::ostream &file, int l) const
 
virtual PhotoAbsCScopy () const =0
 

Protected Attributes

std::string name
 
int number = 0
 
int Z
 
double threshold
 

Detailed Description

Photoabsorption cross-section base class.

The literature data on photoabsorption cross section are fragmentar and not always consistent. This class hierarchy is designed to gather them in a consistent library. The principle is ordinary: definition of an abstract class which defines the interface available for the rest of program, and definition of derived classes with this or that realization. To the contrary with wcpplib/matter, there is no any global "database" and no formal ban to duplicate these definitions. So these are simple classes determining photoabsorption cross sections for atomic shells, for atoms, and for molecules. Also the atomic relaxation cascades are defined. The system requires some memory for keeping data, and some disk files with input information. It takes some time for initializations, so it is not intended to be used in a loop. In the fortran version of HEED, the equivalent data structure kept in a common block was depending on energy mesh. But in this C++ version it was found possible to avoid this dependence. The data are kept and handled as is, without unnecessary conversions. This improves precision of handling energies near ionization thresholds.

2004, I. Smirnov

Definition at line 46 of file PhotoAbsCS.h.

Constructor & Destructor Documentation

◆ PhotoAbsCS() [1/2]

Heed::PhotoAbsCS::PhotoAbsCS ( )

Default constructor.

Definition at line 79 of file PhotoAbsCS.cpp.

79: name(""), number(-1), Z(0), threshold(0.0) {}
double threshold
Definition: PhotoAbsCS.h:79
std::string name
Definition: PhotoAbsCS.h:76

◆ PhotoAbsCS() [2/2]

Heed::PhotoAbsCS::PhotoAbsCS ( const std::string &  fname,
int  fZ,
double  fthreshold 
)

Constructor.

Definition at line 81 of file PhotoAbsCS.cpp.

82 : name(fname), number(-1), Z(fZ), threshold(fthreshold) {
83
84 // Try to get the (shell) number from the name.
85 std::istringstream ss(name);
86 int i = -100;
87 ss >> i;
88 if (i >= 1 && i <= 50) number = i;
89}

◆ ~PhotoAbsCS()

virtual Heed::PhotoAbsCS::~PhotoAbsCS ( )
inlinevirtual

Destructor.

Definition at line 53 of file PhotoAbsCS.h.

53{}

Member Function Documentation

◆ copy()

virtual PhotoAbsCS * Heed::PhotoAbsCS::copy ( ) const
pure virtual

◆ get_CS()

virtual double Heed::PhotoAbsCS::get_CS ( double  energy) const
pure virtual

Retrieve cross-section [Mb] at a given energy [MeV].

Implemented in Heed::AveragePhotoAbsCS, Heed::HydrogenPhotoAbsCS, Heed::SimpleTablePhotoAbsCS, and Heed::PhenoPhotoAbsCS.

◆ get_integral_CS()

virtual double Heed::PhotoAbsCS::get_integral_CS ( double  energy1,
double  energy2 
) const
pure virtual

Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].

Implemented in Heed::AveragePhotoAbsCS, Heed::HydrogenPhotoAbsCS, Heed::SimpleTablePhotoAbsCS, and Heed::PhenoPhotoAbsCS.

◆ get_name()

const std::string & Heed::PhotoAbsCS::get_name ( ) const
inline

Name of this shell or atom.

Definition at line 56 of file PhotoAbsCS.h.

56{ return name; }

◆ get_number()

int Heed::PhotoAbsCS::get_number ( ) const
inline

Number of this shell.

Definition at line 58 of file PhotoAbsCS.h.

58{ return number; }

◆ get_threshold()

double Heed::PhotoAbsCS::get_threshold ( ) const
inline

Return the threshold energy.

Definition at line 64 of file PhotoAbsCS.h.

64{ return threshold; }

Referenced by Heed::SimpleTablePhotoAbsCS::SimpleTablePhotoAbsCS().

◆ get_Z()

int Heed::PhotoAbsCS::get_Z ( ) const
inline

Charge or number of electrons at this shell or in this atom (in principle the integral of CS should satisfy the Thomas-Reiche-Kuhn sum rule).

Definition at line 62 of file PhotoAbsCS.h.

62{ return Z; }

◆ print()

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

Reimplemented in Heed::AveragePhotoAbsCS, Heed::HydrogenPhotoAbsCS, Heed::SimpleTablePhotoAbsCS, and Heed::PhenoPhotoAbsCS.

Definition at line 91 of file PhotoAbsCS.cpp.

91 {
92 if (l <= 0) return;
93 Ifile << "PhotoAbsCS: name=" << name << " Z = " << Z
94 << " threshold = " << threshold << std::endl;
95}
#define Ifile
Definition: prstream.h:196

◆ scale()

virtual void Heed::PhotoAbsCS::scale ( double  fact)
pure virtual

Multiply by some factor. Can be useful for debugging and other purposes.

Implemented in Heed::AveragePhotoAbsCS, Heed::HydrogenPhotoAbsCS, Heed::SimpleTablePhotoAbsCS, and Heed::PhenoPhotoAbsCS.

Member Data Documentation

◆ name

◆ number

int Heed::PhotoAbsCS::number = 0
protected

◆ threshold

◆ Z


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