1 #ifndef __JMATH__JMATHLIB3D__
2 #define __JMATH__JMATHLIB3D__
14 namespace JPP {
using namespace JMATH; }
51 template<
class ...Args>
65 double getValue(
const double x,
const double y,
const double z)
const
67 return static_cast<const JF1_t&
>(*this).getValue(x);
83 static_cast<JF1_t&
>(gradient) = static_cast<const JF1_t&>(*this).
getGradient(x);
123 template<
class ...Args>
137 double getValue(
const double x,
const double y,
const double z)
const
139 return static_cast<const JF1_t&
>(*this).getValue(y);
155 static_cast<JF1_t&
>(gradient) = static_cast<const JF1_t&>(*this).
getGradient(y);
165 template<
class JF1_t>
195 template<
class ...Args>
209 double getValue(
const double x,
const double y,
const double z)
const
211 return static_cast<const JF1_t&
>(*this).getValue(z);
227 static_cast<JF1_t&
>(gradient) = static_cast<const JF1_t&>(*this).
getGradient(z);
266 template<
int ID_t,
bool normalise = false>
268 public JMathlib< JGauss3D<ID_t, normalise> >,
269 public JGauss<ID_t, normalise>
288 const double sigma) :
289 JGauss<ID_t, normalise>(mean, sigma)
301 double getValue(
const double x,
const double y,
const double z)
const
305 return (static_cast<const JGauss_t&>(*this).getValue(x) *
306 static_cast<const JGauss_t&
>(*this).getValue(y) *
307 static_cast<const JGauss_t&
>(*this).getValue(z));
325 static_cast<JGauss_t&
>(
gradient) =
JGauss_t(static_cast<const JGauss_t&>(*this).getGradient(x)).
mul(static_cast<const JGauss_t&>(*this).getValue(y) *
static_cast<const JGauss_t&
>(*this).getValue(z));
326 static_cast<JGauss_t&
>(
gradient) +=
JGauss_t(static_cast<const JGauss_t&>(*this).getGradient(y)).
mul(static_cast<const JGauss_t&>(*this).getValue(x) *
static_cast<const JGauss_t&
>(*this).getValue(z));
327 static_cast<JGauss_t&
>(
gradient) +=
JGauss_t(static_cast<const JGauss_t&>(*this).getGradient(z)).
mul(static_cast<const JGauss_t&>(*this).getValue(x) *
static_cast<const JGauss_t&
>(*this).getValue(y));
JMake3Y(const Args &...args)
Constructor.
double getValue(const double x, const double y, const double z) const
Function value.
double getValue(const double x, const double y, const double z) const
Function value.
JMake3Z(const JF1_t &f1)
Constructor.
const JGauss3D & getGradient(const double x, const double y, const double z) const
Get gradient.
const JMake3X & getGradient(const double x, const double y, const double z) const
Get gradient.
JMake3Z(const Args &...args)
Constructor.
JMake3X(const JF1_t &f1)
Constructor.
JMake3X(const Args &...args)
Constructor.
const JMake3Z & getGradient(const double x, const double y, const double z) const
Get gradient.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
Make 3D function of z from 1D function.
JMake3Y(const JF1_t &f1)
Constructor.
JGauss_t & mul(const double factor)
Scale gauss.
forward declaration for fixed power of function.
JGauss3D()
Default constructor.
JGauss3D(const double mean, const double sigma)
Constructor.
JGauss_t()
Default constructor.
const JMake3Y & getGradient(const double x, const double y, const double z) const
Get gradient.
Make 3D function of y from 1D function.
JMake3Z()
Default constructor.
then usage $script[energy[distance[z of PMT]]] fi case set_variable z
double getValue(const double x, const double y, const double z) const
Function value.
double getValue(const double x, const double y, const double z) const
Function value.
3D correlated Gauss function.
JMake3X()
Default constructor.
JMake3Y()
Default constructor.
Make 3D function of x from 1D function.