Garfield++ v1r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HeedDeltaElectronCS.h
Go to the documentation of this file.
1#ifndef HEEDDELTAELECTRONCS_H
2#define HEEDDELTAELECTRONCS_H
7
8/*
9Cross sections and various parameters necessary for passing delta-electron.
10
112003, I. Smirnov
12*/
13
14#define USE_MEAN_COEF // new variant, means that used mean(1-cos(theta))
15// for low angle scattering. It seems to be more straightforwad and
16// may be very slightly more precise,
17// than the old variant
18// that is use of sqrt( mean ( square (1-cos(theta)) ) )
19
20namespace Heed {
21
22const long q_angular_mesh = 50;
23
24class HeedDeltaElectronCS : public RegPassivePtr {
25 public:
26
35
36 DynLinArr<double> eLoss; // MeV/cm, energy losses according to
37 // very advanced formula with Bethe-Bloh and density effect as in GEANT3
38 // corresponded to centers of intervals of the common mesh
39
40 double mlambda; // minimum mean lengt of range
41 // multiplied by density. sm*gr/sm**3 = gr/sm**2
42 DynLinArr<double> lambda; // path length (cm)
43 // for sruth == 2 mean free path
44 // index - energy of general mesh
45 int sruth; // sign of use
46 // 0 - usial multiple scatering formula
47 // 1 - Rutherford cross-section
48 // 2 - ? precise theory?
49 double mthetac; // minimum threshold turn angle
50 // For Rutherford:
51 // The interactions with less angle will not take
52 // into account. The actual threshold angle can be
53 // larger. The second restriction is going
54 // from restriction of atomic shell.
55 // The third one is from mlamBdel.
56 // For usial multiple scatering:
57 // Assuming that sigma = mTetacBdel
58 // the paht lengt is calculating.
59 // If mlamBdel/density is less then the last is using.
60 DynLinArr<double> rthetac; // restiction due to atomic shell
61 DynLinArr<double> thetac; // threshold turn angle
63 DynLinArr<int> sisfera; // sign that scattering is sferical
64 DynLinArr<double> msig; // something related to gauss scattering
65 // perhaps the width, but it is not clear now!
66 //DynLinArr< double > anhde; // angular mesh
67 DynLinArr<double> angular_mesh_c; // angular mesh, centers
68 //angles in degrees
69
71 // cross section for material per one av. atom, in cm^2/rad
72 //// cross section for material per one av. atom, in MeV**-2/rad
73 // first index - energy mesh
74 // second index - angular mesh
75
76 //DynLinArr< double > mean_free_path; // index - energy mesh
77 //DynLinArr< DynLinArr< double > > ismat;
79 //angles in degrees
80
82 DynLinArr<double> low_lambda; // path length for low angle scatterings
83// this is without multiplication used for coef_low_sigma
84// (cm)
85
86// introduce new name mean_... in order to avoid errors at replacement
87#ifdef USE_MEAN_COEF
89#else
90 DynLinArr<double> coef_low_sigma;
91// index - energy, but (attention!) for mesh defined in ElElasticScat
92// this is sigma of cos(theta) - 1.0, supposing that center is 1.0
93#endif
94 // this is changed inside
95 double get_sigma(double energy, double nscat) const;
96 // copy of similar thing from ElElasticScatLowSigma
97
100 ElElasticScatLowSigma* feesls, PairProd* fpairprod,
101 int fsruth = 2, double fmlambda = 0.001 * 4.0e-3,
102 double fmthetac = 0.1);
103
104 virtual void print(std::ostream& file, int l) const;
105};
106
108 public:
112};
113std::ostream& operator<<(std::ostream& file, const HeedDeltaElectronCSType& f);
114
115}
116
117#endif
HeedDeltaElectronCSType(HeedDeltaElectronCS *md)
PassivePtr< HeedDeltaElectronCS > hdecs
DynLinArr< DynLinArr< double > > smat
PassivePtr< ElElasticScat > ees
DynLinArr< double > momentum
virtual void print(std::ostream &file, int l) const
DynLinArr< double > angular_mesh_c
DynLinArr< double > rthetac
double get_sigma(double energy, double nscat) const
PassivePtr< HeedMatterDef > hmd
DynLinArr< double > momentum2
DynLinArr< double > SinThetac12
DynLinArr< double > thetac
DynLinArr< double > lambda
DynLinArr< double > mean_coef_low_sigma
PassivePtr< PairProd > pairprod
DynLinArr< PointsRan > angular_points_ran
DynLinArr< double > CosThetac12
PassivePtr< ElElasticScatLowSigma > eesls
DynLinArr< PointsRan > low_angular_points_ran
DynLinArr< double > low_lambda
Definition: BGMesh.cpp:3
const long q_angular_mesh
std::ostream & operator<<(std::ostream &file, const BGMesh &bgm)
Definition: BGMesh.cpp:22