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