Garfield++ v1r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
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