1#ifndef AMPGEN_FITFRACTION_H
2#define AMPGEN_FITFRACTION_H
40 template <
class pdf_type>
44 std::vector<size_t>
i;
45 std::vector<size_t>
j;
46 fcalc(
const std::string&
name,
const std::vector<size_t>&
i) :
48 fcalc(
const std::string&
name,
const std::vector<size_t>&
i,
const std::vector<size_t>&
j) :
58 const std::vector<size_t>&
normSet,
66 else pdf->transferParameters();
67 std::vector<double> rv;
81 sum += (*pdf)[i].coefficient * std::conj( (*
pdf)[j].coefficient ) * ( j >= i ?
pdf->norm(i, j) : std::conj(
pdf->norm(j,i)) );
84 return std::real(sum);
86 real_t getVal(
const size_t& index,
const bool& getImaginaryPart =
false)
const {
90 sum += (*pdf)[i].coefficient * std::conj( (*
pdf)[j].coefficient ) * ( j >= i ?
pdf->norm(i, j) : std::conj(
pdf->norm(j,i)) );
93 return (getImaginaryPart ? std::imag(sum) : std::real(sum) ) /
norm();
97 auto values = (*this)();
99 std::vector<FitFraction> fractions;
101 fractions.emplace_back(
calculators[i].name, values[i],errors[i]);
102 std::sort(fractions.begin(), fractions.end());
103 std::reverse(fractions.begin(), fractions.end());
104 fractions.emplace_back(
"Sum_"+name, *values.rbegin(), *errors.rbegin() );
Deals with final state configuration of events, specifically dealing with the ordering of particles i...
FitFraction(const std::string &name, const double &frac, const double &err)
FitFraction(const std::string &line)
void setFracErr(const double &f, const double &e)
Propagates uncertainties on functors using either a MinuitParameterSet (thus assuming a diagonal cova...
std::vector< double > getVectorError(const std::function< std::vector< double >(void)> &fcn, size_t RANK) const
Describes a particle, its decay process and subsequent decay products, which are also Particles.
std::complex< real_t > complex_t
Expression operator<(const Expression &A, const Expression &B)
std::ostream & operator<<(std::ostream &os, const CompiledExpressionBase &expression)
Expression operator==(const Expression &A, const Expression &B)
Expression operator>(const Expression &A, const Expression &B)
fcalc(const std::string &name, const std::vector< size_t > &i, const std::vector< size_t > &j)
fcalc(const std::string &name, const std::vector< size_t > &i)
FitFractionCalculator(pdf_type *pdf, const std::vector< size_t > &normSet, const bool &recalculateIntegrals=false)
void emplace_back(ARGS &&... args)
std::vector< fcalc > calculators
real_t getVal(const size_t &index, const bool &getImaginaryPart=false) const
bool recalculateIntegrals
std::vector< size_t > normSet
std::vector< double > operator()()
std::vector< FitFraction > operator()(const std::string &name, const LinearErrorPropagator &linProp)