1 #ifndef _LDFFinderKG_NKGLDF_h_
2 #define _LDFFinderKG_NKGLDF_h_
9 #include <utl/AugerUnits.h>
12 namespace ScintillatorLDFFinderKG {
17 NKGLDF(
const double refDistance) :
VLDF(refDistance, 18, 2) { }
20 NKGLDF(
const double refDistance,
const unsigned int shapeSize) :
VLDF(refDistance, shapeSize, 2) { }
24 Value(
const double r,
const std::vector<double>&
shape)
28 const double beta = shape[0];
34 std::pow((k700 + r)/(rRef + k700), beta+gamma);
41 const double beta = shape[0];
42 const double gamma = shape[1];
46 *
std::pow((r+k700)/(k700+rRef),beta+gamma)/rRef)
55 const double beta = shape[0];
56 const double gamma = shape[1];
62 return Value(r, shape) * (
64 (tbg - 1)*(2*k700*beta*r + tbg*
r2)
69 ShapeModel(
const double cosTheta,
const double showerSize)
72 const double lgSRef = std::log10(showerSize);
97 std::vector<double>
shape(2);
98 double& beta = shape[0];
99 double& gamma = shape[1];
103 (b0 + b1*lgSRef) * secTheta +
107 (fa0 + fa1 * lgSRef) / (std::exp((fs0 + fs1 * lgSRef) *
108 (cos2Theta - (fp0 + fp1 * lgSRef))) + 1) +
109 fb *
std::pow(cos2Theta, fet) / (std::exp((lgSRef - fps) * fss) + 1) -
118 const double lgS = std::log10(showerSize);
const double fReferenceDistance
constexpr T Sqr(const T &x)
virtual std::vector< double > ShapeModel(const double cosTheta, double showerSize) const =0
return fBetaUncertaintyModelVector *[0] exp(fBetaUncertaintyModelVector[1]*lgS)
double pow(const double x, const unsigned int i)
virtual double BetaUncertainty(const double showerSize) const =0
std::vector< double > fShapeModelVector
virtual double FirstDerivative(const double r, const std::vector< double > &shape) const =0
NKGLDF(const double refDistance)
unsigned int GetNShapeParameters() const
NKGLDF(const double refDistance, const unsigned int shapeSize)
std::vector< double > fBetaUncertaintyModelVector
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