13 m_feature_extractors.push_back(getFeatureExtractor(input_var.name));
20 const std::vector<const xAOD::TrackMeasurementValidation*> hits =
getParticleHits(p);
21 return std::make_tuple(
getFeatures(p, hits), std::vector<const xAOD::IParticle*>{} );
29 std::vector<const xAOD::TrackMeasurementValidation*> hits;
31 if(el.isValid()) hits.push_back(*el);
34 if(hits.size() ==
m_config.max_n_constituents)
break;
54 Eigen::Vector3d bhat(0, 0, 1);
56 const TLorentzVector p4 = p.p4();
57 Eigen::Vector3d jhat = Eigen::Vector3d(p4.X(), p4.Y(), p4.Z()).normalized();
59 Eigen::Vector3d ahat = bhat.cross(jhat).normalized();
63 m << jhat, ahat, bhat;
71 std::vector<int64_t> features_dim = {
static_cast<int64_t
>(hits.size()),
static_cast<int64_t
>(
m_feature_extractors.size())};
75 std::vector<float> features;
79 features.push_back(extractor(p, *hit, jav_inv));
83 return Inputs{std::move(features), std::move(features_dim)};
91 }
catch (
const std::out_of_range &e) {
92 throw std::runtime_error(
"Variable '" + var_name +
"' not defined");
107 return jab_inv(0, 0)*acc_localX(hit) + jab_inv(0, 1)*acc_localY(hit) + jab_inv(0, 2)*acc_localZ(hit);
116 return jab_inv(1, 0)*acc_localX(hit) + jab_inv(1, 1)*acc_localY(hit) + jab_inv(1, 2)*acc_localZ(hit);
125 return jab_inv(2, 0)*acc_localX(hit) + jab_inv(2, 1)*acc_localY(hit) + jab_inv(2, 2)*acc_localZ(hit);
131 return acc_layer(hit);
ElementLink implementation for ROOT usage.
std::vector< FeatureFunc_t > m_feature_extractors
std::tuple< Inputs, std::vector< const xAOD::IParticle * > > getData(const xAOD::IParticle &p) const override
std::function< float(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &, const Eigen::Matrix3d &)> FeatureFunc_t
FeatureFunc_t getFeatureExtractor(const std::string &var_name) const
const Inputs getFeatures(const xAOD::IParticle &p, const std::vector< const xAOD::TrackMeasurementValidation * > &hits) const
ConstituentLoaderTauHit(const ConstituentsInputConfig &cfg, const std::string &hits_key)
static const std::unordered_map< std::string, FeatureFunc_t > m_func_map
const std::vector< const xAOD::TrackMeasurementValidation * > getParticleHits(const xAOD::IParticle &p) const
const std::string m_hits_key
const Eigen::Matrix3d getJABInvMatrix(const xAOD::IParticle &p) const
ConstituentsInputConfig m_config
IConstituentsLoader(const ConstituentsInputConfig &cfg)
SG::ConstAccessor< T, ALLOC > ConstAccessor
Helper class to provide constant type-safe access to aux data.
Class providing the definition of the 4-vector interface.
This file contains "getter" functions used for accessing tagger inputs from the EDM.
std::pair< std::vector< float >, std::vector< int64_t > > Inputs
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
float layer(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &)
float b(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
TrackMeasurementValidation_v1 TrackMeasurementValidation
Reference the current persistent version: