30 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
31 double& ey,
double& ez,
double& v,
Medium*& medium,
33 void ElectricField(
const double x,
const double y,
const double z,
double& ex,
34 double& ey,
double& ez,
Medium*& medium,
int& status);
37 void MagneticField(
const double x,
const double y,
const double z,
double& bx,
38 double& by,
double& bz,
int& status);
41 void WeightingField(
const double x,
const double y,
const double z,
42 double& wx,
double& wy,
double& wz,
43 const std::string label);
46 const std::string label);
49 bool GetMedium(
const double x,
const double y,
const double z,
54 bool SetArea(
const double xmin,
const double ymin,
const double zmin,
55 const double xmax,
const double ymax,
const double zmax);
57 bool GetArea(
double& xmin,
double& ymin,
double& zmin,
double& xmax,
58 double& ymax,
double& zmax);
60 bool IsInArea(
const double x,
const double y,
const double z);
62 bool IsWireCrossed(
const double x0,
const double y0,
const double z0,
63 const double x1,
const double y1,
const double z1,
64 double& xc,
double& yc,
double& zc);
66 bool IsInTrapRadius(
double x0,
double y0,
double z0,
double& xw,
double& yw,
76 void AddSignal(
const double& q,
const double& t,
const double& dt,
77 const double& x,
const double& y,
const double& z,
78 const double& vx,
const double& vy,
const double& vz);
80 const double z0,
const double x1,
const double y1,
83 void SetTimeWindow(
const double tstart,
const double tstep,
const int nsteps);
89 double GetSignal(
const std::string label,
const int bin);
91 double GetIonSignal(
const std::string label,
const int bin);
95 std::vector<double> values);
112 std::string m_className;
119 std::vector<component> m_components;
127 std::vector<double> signal;
128 std::vector<double> electronsignal;
129 std::vector<double> ionsignal;
132 std::vector<electrode> m_electrodes;
136 double m_tStart, m_tStep;
138 static double m_signalConversion;
141 bool m_hasTransferFunction;
142 double (*m_fTransfer)(
double t);
143 std::vector<double> m_transferFunctionTimes;
144 std::vector<double> m_transferFunctionValues;
147 bool m_hasNoiseFunction;
148 double (*m_fNoise)(
double t);
150 int m_nThresholdCrossings;
151 struct thresholdCrossing {
155 std::vector<thresholdCrossing> m_thresholdCrossings;
156 double m_thresholdLevel;
160 double m_xMinUser, m_yMinUser, m_zMinUser;
161 double m_xMaxUser, m_yMaxUser, m_zMaxUser;
167 bool GetBoundingBox(
double& xmin,
double& ymin,
double& zmin,
double& xmax,
168 double& ymax,
double& zmax);
170 double InterpolateTransferFunctionTable(
double t);
void MagneticField(const double x, const double y, const double z, double &bx, double &by, double &bz, int &status)
bool GetVoltageRange(double &vmin, double &vmax)
bool ComputeThresholdCrossings(const double thr, const std::string label, int &n)
void AddElectrode(ComponentBase *comp, std::string label)
bool GetThresholdCrossing(const int i, double &time, double &level, bool &rise)
double GetTransferFunction(const double t)
void AddSignal(const double &q, const double &t, const double &dt, const double &x, const double &y, const double &z, const double &vx, const double &vy, const double &vz)
double WeightingPotential(const double x, const double y, const double z, const std::string label)
void WeightingField(const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string label)
int GetNumberOfComponents()
double GetInducedCharge(const std::string label)
void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&medium, int &status)
int GetNumberOfElectrodes()
void SetNoiseFunction(double(*f)(double t))
bool IsInArea(const double x, const double y, const double z)
bool IsInTrapRadius(double x0, double y0, double z0, double &xw, double &yw, double &rw)
bool GetMedium(const double x, const double y, const double z, Medium *&medium)
double GetElectronSignal(const std::string label, const int bin)
void SetTransferFunction(double(*f)(double t))
bool IsWireCrossed(const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc)
void AddComponent(ComponentBase *comp)
void SetTimeWindow(const double tstart, const double tstep, const int nsteps)
int GetNumberOfThresholdCrossings()
void AddInducedCharge(const double q, const double x0, const double y0, const double z0, const double x1, const double y1, const double z1)
double GetIonSignal(const std::string label, const int bin)
void GetTimeWindow(double &tstart, double &tstep, int &nsteps)
double GetSignal(const std::string label, const int bin)
bool GetArea(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax)