Garfield++ 3.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
HeedMatterDef.h
Go to the documentation of this file.
1#ifndef HEEDMATTERDEF_H
2#define HEEDMATTERDEF_H
3
4#include <vector>
5
10
11namespace Heed {
12
13/// Definition of matter parameters necessary for HEED.
14/// This is photoabsorption cross section, dielectric constant
15/// and other parameters related to these.
16/// All the parameters depending on energy are kept in arrays
17/// associated with specific energy mesh, which should be defined.
18///
19/// The principle is ordinary: definition of just a class.
20/// To the contrary with wcpplib/matter, there is no any global "database"
21/// and no formal ban to duplicate these definitions
22/// (although there would not be sense in duplication).
23///
24// 2003, I. Smirnov
25
27 public:
28 MatterDef* matter = nullptr;
29 std::vector<const AtomPhotoAbsCS*> apacs;
30 // Each element of this array corresponds to component of matter
31 double eldens_cm_3 = 0.; ///< Electron density cm**-3
32 double eldens = 0.; ///< Electron density MeV**3
33 double xeldens = 0.; ///< Long. electron density MeV**2/cm (for x=1 cm).
34 double wpla = 0.; ///< Squared plasma energy;
35 double radiation_length = 0.; ///< Radiation Length.
36 double Rutherford_const = 0.; ///< Const for Rutherford cross section (1/cm3).
37 double W = 0.; ///< Mean work per pair production, MeV
38 double F = 0.; ///< Fano factor
40
41 // The physical definition of two previous arrays of values:
42 // mean values of cross sections for each energy interval.
43 std::vector<double> ACS; ///< Photoabsorption cross section per one atom(Mb).
44 std::vector<double> ICS; ///< Photoionization cross section per one atom(Mb).
45 /// Some plasma dielectric constant (not used, but just initialized for print)
46 // In order to take into account bounds,
47 // one has to multiply this by some integral.
48 std::vector<double> epsip;
49 /// Real part of dielectric constant (e_1 - 1).
50 std::vector<double> epsi1;
51 /// Imaginary part of dielectric constant.
52 std::vector<double> epsi2;
53 /// Minimum ionization potential.
54 /// It is used only for switching off the Cherenkov radiation below it.
55 double min_ioniz_pot = 0.;
56
57 /// Default constructor.
58 HeedMatterDef() = default;
59 /// Constructor.
60 /// If fW == 0.0, the program takes mean W from
61 /// molecules for gas or from atoms for matters.
62 /// If fF is input as 0.0, it is assigned to be mean for gas.
63 /// For matters this is the terminating error.
64 HeedMatterDef(EnergyMesh* fenergy_mesh, MatterDef* amatter,
65 const std::vector<AtomPhotoAbsCS*>& faapacs,
66 double fW = 0.0, double fF = standard_factor_Fano);
67 // Gas consists of molecules, molecules of atoms
68 // The order in which molecules appear in fampacs should correspond
69 // to that of agas.
70 // The order in which atoms appear in fampacs[n] should correspond to that
71 // of molecules in gas.
72 HeedMatterDef(EnergyMesh* fenergy_mesh, GasDef* agas,
73 const std::vector<MolecPhotoAbsCS*>& fampacs,
74 double fW = 0.0, double fF = standard_factor_Fano);
75 HeedMatterDef(EnergyMesh* fenergy_mesh, const std::string& gas_notation,
76 const std::vector<MolecPhotoAbsCS*>& fampacs,
77 double fW = 0.0, double fF = standard_factor_Fano);
78 // Replace permeability (epsi1 and epsi2) by the numbers
79 // calculated by another program and written to a file (only for debug)
80 void replace_epsi12(const std::string& file_name);
81 void print(std::ostream& file, int l) const;
82 HeedMatterDef* copy() const { return new HeedMatterDef(*this); }
83
84 /// Flag affecting mixtures of atoms with different ionization potentials.
85 /// If 1, all energy transfers what is absorbed even with the energy less than
86 /// the potential of ionization of single atom, but more than the minimal
87 /// potential of ionization of the mixture, should ionize.
88 /// This is emulation of Jesse effect in extreme case.
89 /// It is likely not realistic. So the recommended value is 0.
90 static constexpr int s_use_mixture_thresholds = 0;
91
92 private:
93 // Initialization after assignment of matter and apacs
94 void inite_HeedMatterDef();
95};
96}
97
98#endif
double eldens
Electron density MeV**3.
Definition: HeedMatterDef.h:32
double W
Mean work per pair production, MeV.
Definition: HeedMatterDef.h:37
double wpla
Squared plasma energy;.
Definition: HeedMatterDef.h:34
double xeldens
Long. electron density MeV**2/cm (for x=1 cm).
Definition: HeedMatterDef.h:33
std::vector< const AtomPhotoAbsCS * > apacs
Definition: HeedMatterDef.h:29
HeedMatterDef()=default
Default constructor.
double eldens_cm_3
Electron density cm**-3.
Definition: HeedMatterDef.h:31
std::vector< double > ACS
Photoabsorption cross section per one atom(Mb).
Definition: HeedMatterDef.h:43
std::vector< double > epsip
Some plasma dielectric constant (not used, but just initialized for print)
Definition: HeedMatterDef.h:48
HeedMatterDef * copy() const
Definition: HeedMatterDef.h:82
MatterDef * matter
Definition: HeedMatterDef.h:28
std::vector< double > epsi1
Real part of dielectric constant (e_1 - 1).
Definition: HeedMatterDef.h:50
double Rutherford_const
Const for Rutherford cross section (1/cm3).
Definition: HeedMatterDef.h:36
std::vector< double > ICS
Definition: HeedMatterDef.h:44
std::vector< double > epsi2
Imaginary part of dielectric constant.
Definition: HeedMatterDef.h:52
double F
Fano factor.
Definition: HeedMatterDef.h:38
double radiation_length
Radiation Length.
Definition: HeedMatterDef.h:35
void print(std::ostream &file, int l) const
EnergyMesh * energy_mesh
Definition: HeedMatterDef.h:39
void replace_epsi12(const std::string &file_name)
static constexpr int s_use_mixture_thresholds
Definition: HeedMatterDef.h:90
Definition: BGMesh.cpp:6
constexpr double standard_factor_Fano
Definition: PhotoAbsCS.h:575