12 const std::string &decName_negLogSigma2):
21 throw std::runtime_error(
"DipzLikelihood::checkedRatio dividing by 0");
28 const std::string &decName)
const
32 if (!(ip->getAttribute(decName, momentValue))) {
33 throw std::runtime_error(
"Impossible to retrieve decorator \'" +
34 decName +
"\' for jet hypo");
44 double sigma_squared =
47 double muoversigmasq =
50 return acml + muoversigmasq;
55 double sigma_squared =
60 return acml + oneoversigmasq;
69 double dipz_negLogSigmaSq =
72 double sigma_squared = std::exp(-1 * dipz_negLogSigmaSq);
75 -0.5 * std::log(2.0 *
M_PI)
76 + 0.5 * dipz_negLogSigmaSq
77 -
checkedRatio(std::pow(zhat - dipz_mu, 2), (2.0 * sigma_squared) );
79 return acml + logterm;
86 auto zhat_num = std::accumulate(ips.begin(),
89 [
this](
double sum,
const pHypoJet& jp) {
90 return this->calcNum(sum, jp);});
92 auto zhat_den = std::accumulate(ips.begin(),
95 [
this](
double sum,
const pHypoJet& jp) {
96 return this->calcDenom(sum, jp);});
101 std::accumulate(ips.begin(),
104 [&zhat,
this](
double sum,
const pHypoJet& jp) {
105 return this->calcLogTerm(sum, jp, zhat);});
112 const std::string &decName_negLogSigma2):
std::vector< pHypoJet > HypoJetVector
std::shared_ptr< const HypoJet::IJet > pHypoJet
bool operator()(const HypoJetVector &, const HypoJetVector &)
DipzLikelihood m_likelihoodCalculator
DipzLikelihoodCmp(const std::string &decName_z, const std::string &decName_negLogSigma2)
double checkedRatio(double num, double den) const
const std::string m_decName_z
double calcNum(double acmlt, const pHypoJet &ip) const
double operator()(const HypoJetVector &) const
double calcLogTerm(double acmlt, const pHypoJet &ip, double zhat) const
const std::string m_decName_negLogSigma2
double calcDenom(double acmlt, const pHypoJet &ip) const
DipzLikelihood(const std::string &decName_z, const std::string &decName_negLogSigma2)
double getDipzMLPLDecValue(const pHypoJet &ip, const std::string &decName) const