3 namespace GeFiCa {
class Points;
class FieldLine;
class Grid;
class Detector; }
12 std::vector<double>
C1;
13 std::vector<double>
C2;
14 std::vector<double>
C3;
15 std::vector<double>
Vp;
16 std::vector<double>
Et;
17 std::vector<double>
E1;
18 std::vector<double>
E2;
19 std::vector<double>
E3;
26 size_t GetN() {
return C1.size(); }
56 std::vector<double>
Src;
65 Grid(
size_t n1=0,
size_t n2=0,
size_t n3=0);
73 virtual void SetupWith(
Detector &detector);
77 void SuccessiveOverRelax();
82 void SolveAnalytically();
86 double GetV(
double c1,
double c2=0,
double c3=0)
const 87 {
return GetData(
Vp,c1,c2,c3); }
88 double GetE(
double c1,
double c2=0,
double c3=0)
const 89 {
return GetData(
Et,c1,c2,c3); }
90 double GetE1(
double c1,
double c2=0,
double c3=0)
const 91 {
return GetData(
E1,c1,c2,c3); }
92 double GetE2(
double c1,
double c2=0,
double c3=0)
const 93 {
return GetData(
E2,c1,c2,c3); }
94 double GetE3(
double c1,
double c2=0,
double c3=0)
const 95 {
return GetData(
E3,c1,c2,c3); }
110 TTree* GetTree(
bool createNew=
false);
118 Grid& operator*=(
double scale);
126 virtual FieldLine* GetFieldLineFrom(
double c1,
double c2,
bool positive=
true);
127 virtual FieldLine* GetFieldLineFrom(
double c1,
double c2,
double c3,
bool positive=
true);
140 size_t GetIdxOfPointToTheRightOf(
double c1,
141 size_t begin,
size_t end)
const;
142 size_t GetIdxOfPointToTheRightOf(
double c1,
double c2,
143 size_t begin,
size_t end)
const;
144 size_t GetIdxOfPointToTheRightOf(
double c1,
double c2,
double c3,
145 size_t begin,
size_t end)
const;
149 virtual double GetData(
const std::vector<double> &data,
150 double c1,
double c2,
double c3)
const;
154 size_t GetIdxOfMaxV();
158 size_t GetIdxOfMinV();
162 virtual void CalculateE();
166 double twopoint(
double dataset[2],
double tarlocationset,
double pointxset[2])
const;
170 double threepoint(
double dataset[3],
double tarlocationset[2],
double pointxset[3],
double pointyset[3])
const;
174 double fourpoint(
double dataset[4],
double tarlocationset[2],
double pointxset[4],
double pointyset[4])
const;
std::vector< double > dC1m
step length to previous point alone C1
size_t Iterations
number of iterations of SOR performed
double GetE1(double c1, double c2=0, double c3=0) const
std::vector< double > E3
projection of Et on C3
Data structure of a electric field grid.
double GetE2(double c1, double c2=0, double c3=0) const
std::vector< bool > fIsFixed
true if field values are fixed
double Tolerance
SOR stops when error<Tolerance.
double GetE(double c1, double c2=0, double c3=0) const
double GetV(double c1, double c2=0, double c3=0) const
Get potential at (c1,c2,c3) by interpolation.
std::vector< double > E1
projection of Et on C1
size_t N2
number of points along the 2nd coordinate
std::vector< double > dC3p
step length to next point alone C3
std::vector< double > Src
-(net impurity concentration)x|Qe|/epsilon
TTree * fTree
! ROOT tree to visualize fields
size_t N1
number of points along the 1st coordinate
std::vector< double > C2
the 2nd coordinates of the points
virtual void OverRelaxAt(size_t idx)
Over relax potential Vp[.
Detector & crystal properties.
std::vector< double > dC1p
step length to next point alone C1
A group of discrete points.
size_t GetN()
total number of points
std::vector< double > dC2m
step length to previous point along C2
size_t MaxIterations
maximal iterations of SOR to be performed
double GetE3(double c1, double c2=0, double c3=0) const
std::vector< bool > fIsDepleted
true if a grid point is depleted
Detector * fDetector
! Pointer to associated detector object
std::vector< double > dC2p
step length to next point along C2
Electric field line data.
size_t N3
number of points along the 3rd coordinate
std::vector< double > Vp
potential at each point
std::vector< double > dC3m
step length to previous point alone C3
The only namespace in GeFiCa.
std::vector< double > Et
total electric field strength
std::vector< double > E2
projection of Et on C2
std::vector< double > C1
the 1st coordinates of the points
std::vector< double > C3
the 3rd coordinates of the points
double RelaxationFactor
within (0,2), used to speed up convergence