1 #ifndef _LDFFinderKG_PowerLawLDF_h_
2 #define _LDFFinderKG_PowerLawLDF_h_
9 #include <utl/AugerUnits.h>
12 namespace LDFFinderKG {
20 Value(
const double r,
const std::vector<double>&
shape)
25 const double beta = shape[0];
31 return std::pow(relR, beta + gamma*std::log(relR));
33 const double gf = gamma*std::log(nearCore);
43 const double beta = shape[0];
44 const double gamma = shape[1];
46 const double nearCore = kNearRadius /
rRef;
47 const double relR = r /
rRef;
48 if (relR > nearCore) {
49 const double tgl = 2 * gamma * std::log(relR);
50 return Value(r, shape) * (
51 (beta-1)*beta + 2*gamma + tgl*(tgl + 2*beta - 1)
55 const double bgl = beta + gamma * std::log(nearCore);
60 ShapeModel(
const double cosTheta,
const double showerSize)
63 const double lgSize = std::log10(showerSize);
72 std::vector<double>
shape(2);
73 double& beta = shape[0];
74 double& gamma = shape[1];
76 beta = a0 + a1*lgSize + secTheta*(b0 + b1*lgSize + secTheta*(c0 + c1*lgSize));
78 gamma = 0.05*std::sin(8*(cosTheta - 0.6)) - 0.5;
87 const double lgS = std::log10(showerSize);
return fBetaUncertaintyModelVector *[0] exp(fBetaUncertaintyModelVector[1]*lgS)
constexpr T Sqr(const T &x)
const double fReferenceDistance
std::vector< double > fShapeModelVector
unsigned int GetNShapeParameters() const
double pow(const double x, const unsigned int i)
virtual double Value(const double r, const std::vector< double > &shape) const =0
virtual double SecondDerivative(const double r, const std::vector< double > &shape) const =0
std::vector< double > fBetaUncertaintyModelVector
PowerLawLDF(const double refDistance)
virtual std::vector< double > ShapeModel(const double cosTheta, double showerSize) const =0
virtual double BetaUncertainty(const double showerSize) const =0