#include <PdfDiagonalizer.h>
Definition at line 11 of file PdfDiagonalizer.h.
PdfDiagonalizer::PdfDiagonalizer |
( |
const char * |
name, |
|
|
RooWorkspace * |
w, |
|
|
RooFitResult & |
result |
|
) |
| |
Definition at line 13 of file PdfDiagonalizer.cc.
References Clusterizer1DCommons::add(), eigenVars_, i, j, n, parameters_, replacements_, mathSSE::sqrt(), and makeHLTPrescaleTable::values.
19 TMatrixDSym cov(
result.covarianceMatrix());
20 TMatrixDSymEigen eigen(cov);
22 const TMatrixD& vectors = eigen.GetEigenVectors();
23 const TVectorD&
values = eigen.GetEigenValues();
28 for (
int i = 0;
i <
n; ++
i) {
29 snprintf(buff,
sizeof(buff),
"%s_eig%d[-5,5]",
name,
i);
34 if (
w->var(
"_one_") == 0)
w->factory(
"_one_[1]");
35 eigvVarsPlusOne.add(*
w->var(
"_one_"));
39 for (
int i = 0;
i <
n; ++
i) {
41 for (
int j = 0;
j <
n; ++
j) {
42 snprintf(buff,
sizeof(buff),
"%s_eigCoeff_%d_%d[%g]",
name,
i,
j, vectors(
i,
j)*
sqrt(
values(
j)));
43 coeffs.add(*
w->factory(buff));
45 snprintf(buff,
sizeof(buff),
"%s_eigBase_%d[%g]",
name,
i, (dynamic_cast<RooAbsReal*>(
parameters_.at(
i)))->getVal());
46 coeffs.add(*
w->factory(buff));
47 snprintf(buff,
sizeof(buff),
"%s_eigLin_%d",
name,
i);
48 RooAddition *
add =
new RooAddition(buff,buff,coeffs,eigvVarsPlusOne);
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
RooAbsPdf * PdfDiagonalizer::diagonalize |
( |
RooAbsPdf & |
pdf | ) |
|
const RooArgList& PdfDiagonalizer::diagonalParams |
( |
| ) |
|
|
inline |
const RooArgList& PdfDiagonalizer::originalParams |
( |
| ) |
|
|
inline |
RooArgList PdfDiagonalizer::eigenVars_ |
|
private |
std::string PdfDiagonalizer::name_ |
|
private |
RooArgList PdfDiagonalizer::parameters_ |
|
private |
RooArgList PdfDiagonalizer::replacements_ |
|
private |