7 #include "AthLinks/ElementLink.h" 
   22 class Pt final : 
public MiniEvaluator {
 
   31 class Eta final: 
public MiniEvaluator {
 
   40 class M 
final: 
public MiniEvaluator {
 
   49 class D0 final: 
public MiniEvaluator {
 
   58 class ErrD0 
final: 
public MiniEvaluator {
 
   63     return std::sqrt(trk.definingParametersCovMatrix()(0, 0));
 
   67 class Z0 final : 
public MiniEvaluator {
 
   76 class ErrZ0 
final : 
public MiniEvaluator {
 
   81     return std::sqrt(trk.definingParametersCovMatrix()(1, 1));
 
   85 class Phi final : 
public MiniEvaluator {
 
   94 class ErrPhi 
final : 
public MiniEvaluator {
 
   99     return std::sqrt(trk.definingParametersCovMatrix()(2, 2));
 
  112 class ErrTheta 
final : 
public MiniEvaluator {
 
  114   ErrTheta() = 
default;
 
  117     return std::sqrt(trk.definingParametersCovMatrix()(3, 3));
 
  121 class QOverP 
final : 
public MiniEvaluator {
 
  130 class ErrQOverP 
final : 
public MiniEvaluator {
 
  132   ErrQOverP() = 
default;
 
  135     return std::sqrt(trk.definingParametersCovMatrix()(4, 4));
 
  139 class ChiSq 
final : 
public MiniEvaluator {
 
  144     return trk.chiSquared();
 
  148 class RedChiSq 
final : 
public MiniEvaluator {
 
  150   RedChiSq() = 
default;
 
  153     return (trk.chiSquared() / trk.numberDoF());
 
  166 class DZ 
final : 
public MiniEvaluator {
 
  171     return (trk.z0() + trk.vz() - vx.z());
 
  175 class ErrDZ 
final : 
public MiniEvaluator {
 
  180     return std::sqrt(trk.definingParametersCovMatrix()(1, 1) + vx.covariancePosition()(2, 2));
 
  184 class DZSinTheta 
final : 
public MiniEvaluator {
 
  186   DZSinTheta() = 
default;
 
  189     return (trk.z0() + trk.vz() - vx.z()) * 
std::sin(trk.theta());
 
  193 class ErrDZSinTheta 
final : 
public MiniEvaluator {
 
  195   ErrDZSinTheta() = 
default;
 
  198     float dz         = (trk.z0() + trk.vz() - vx.z());
 
  199     float sinTheta   = 
std::sin(trk.theta());
 
  200     float cosTheta   = 
std::cos(trk.theta());
 
  201     float errSqDZ    = trk.definingParametersCovMatrix()(1, 1) + vx.covariancePosition()(2, 2);
 
  202     float errSqTheta = trk.definingParametersCovMatrix()(3, 3);
 
  203     float covZ0Theta = trk.definingParametersCovMatrix()(1, 3);
 
  204     return std::sqrt(errSqDZ * 
std::pow(sinTheta, 2) + 
std::pow(dz * cosTheta, 2) * errSqTheta + 2 * sinTheta * dz * cosTheta * covZ0Theta);
 
  209   std::vector<const xAOD::TrackParticle*> outTrks;
 
  210   for (
const auto& trkLink : inTrks) {
 
  211     if (trkLink.isValid()) {
 
  220   for (
const auto& ele : 
vec) {
 
  229 class FitWeight 
final : 
public MiniEvaluator {
 
  231   FitWeight() = 
default;
 
  234     std::vector<const xAOD::TrackParticle*> fitTrks = toVector(vx.trackParticleLinks());
 
  236     int pos = inVector(&trk, fitTrks);
 
  244 class VxX 
final : 
public MiniEvaluator {
 
  253 class ErrVxX 
final : 
public MiniEvaluator {
 
  258     return std::sqrt(vx.covariancePosition()(0, 0));
 
  262 class VxY 
final : 
public MiniEvaluator {
 
  271 class ErrVxY 
final : 
public MiniEvaluator {
 
  276     return std::sqrt(vx.covariancePosition()(1, 1));
 
  280 class VxZ 
final : 
public MiniEvaluator {
 
  289 class ErrVxZ 
final : 
public MiniEvaluator {
 
  294     return std::sqrt(vx.covariancePosition()(2, 2));
 
  309     if (
name == kv.first) {
 
  310       throw std::runtime_error(
"ERROR in CP::MVAInputEvaluator::add : input name is already present in map: " + 
name);
 
  346     case Input::ErrPhi: {
 
  354     case Input::ErrTheta: {
 
  358     case Input::QOverP: {
 
  362     case Input::ErrQOverP: {
 
  370     case Input::RedChiSq: {
 
  386     case Input::DZSinTheta: {
 
  390     case Input::ErrDZSinTheta: {
 
  394     case Input::FitWeight: {
 
  402     case Input::ErrVxX: {
 
  410     case Input::ErrVxY: {
 
  418     case Input::ErrVxZ: {
 
  423       throw std::runtime_error(
"ERROR in CP::MVAInputEvaluator::add : unknown input enum: " + 
std::to_string(
type));
 
  431     add(kv.first, kv.second);
 
  438     input[kv.first] = kv.second->eval(trk, vx, 
evt);