32 void SetRangeE(
const double emin,
const double emax,
const bool logscale);
34 void SetRangeB(
const double bmin,
const double bmax,
const bool logscale);
36 void SetRangeA(
const double amin,
const double amax,
const bool logscale);
40 void SetRangeY(
const double ymin,
const double ymax,
41 const bool logscale =
false);
48 void SetAngle(
const double angle) { m_angle = angle; }
87 Medium* m_medium =
nullptr;
90 double m_eMin = 100., m_eMax = 100000.;
91 double m_bMin = 0., m_bMax = 2.;
92 double m_aMin = 0., m_aMax = Pi;
96 bool m_autoRangeX =
true;
98 double m_yMin = 0., m_yMax = 1.;
100 bool m_autoRangeY =
true;
103 double m_efield = 1000.;
105 double m_bfield = 0.;
107 double m_angle = HalfPi;
110 std::vector<TF1> m_functions;
112 std::vector<TGraph*> m_graphs;
114 std::vector<std::pair<std::string, int> > m_labels;
117 void AddFunction(
const bool keep,
const Property type,
const char xaxis);
118 void GetAxisRangeX(
const std::vector<double>& efields,
119 const std::vector<double>& bfields,
120 const std::vector<double>& angles,
const char xaxis,
121 double& xmin,
double& max,
bool& logx)
const;
122 int GetColor(
const Property property)
const;
123 std::string GetLabelX(
const char xaxis)
const;
124 std::string GetLabelY(
const Property property)
const;
125 std::string GetLegend(
const Property property)
const;
Abstract base class for media.
Base class for visualization classes.
Plot transport coefficients as function of electric and magnetic field.
double EvaluateFunction(double *pos, double *par)
void SetRangeY(const double ymin, const double ymax, const bool logscale=false)
Set the range of the function (velocity etc.) to be plotted.
void SetAngle(const double angle)
Set the angle to use when plotting as function of E or B.
void SetRangeB(const double bmin, const double bmax, const bool logscale)
Set the limits of the magnetic field.
void PlotIonVelocity(const char xaxis, const bool same=false)
void PlotElectronTownsend(const char xaxis, const bool same=false)
void SetMedium(Medium *m)
Set the medium from which to retrieve the transport coefficients.
void PlotHoleVelocity(const char xaxis, const bool same=false)
void SetMagneticField(const double bfield)
Set the magnetic field to use when plotting as function of E or angle.
void PlotHoleDiffusion(const char xaxis, const bool same=false)
~ViewMedium()=default
Destructor.
void PlotElectronAttachment(const char xaxis, const bool same=false)
@ HoleTransverseDiffusion
@ HoleLongitudinalDiffusion
@ ElectronTransverseDiffusion
@ ElectronLongitudinalDiffusion
@ IonLongitudinalDiffusion
void PlotIonDiffusion(const char xaxis, const bool same=false)
void PlotElectronCrossSections()
void PlotElectronLorentzAngle(const char xaxis, const bool same=false)
void PlotElectronVelocity(const char xaxis, const bool same=false)
void EnableAutoRangeY(const bool on=true)
Choose the y-axis range based on the function's minima/maxima.
void SetRangeE(const double emin, const double emax, const bool logscale)
Set the limits of the electric field.
void SetElectricField(const double efield)
Set the electric field to use when plotting as function of B or angle.
void PlotHoleAttachment(const char xaxis, const bool same=false)
void SetRangeA(const double amin, const double amax, const bool logscale)
Set the limits of the angle between electric and magnetic field.
void EnableAutoRangeX(const bool on=true)
Try to choose the x-axis range based on the field grid.
void PlotElectronDiffusion(const char xaxis, const bool same=false)
void PlotHoleTownsend(const char xaxis, const bool same=false)