14 m_feature_extractors.push_back(getFeatureExtractor(input_var.name));
20 std::vector<const xAOD::TauTrack*> out = tau->
allTracks();
27 std::vector<const xAOD::TauTrack*> classified_tracks;
28 std::copy_if(out.begin(), out.end(), std::back_inserter(classified_tracks),
30 return !track->flag(xAOD::TauJetParameters::unclassified);
33 out = std::move(classified_tracks);
40 return lhs->pt() > rhs->pt();
45 throw std::runtime_error(
"Unsupported sorting order");
48 if (
static_cast<size_t>(out.size()) >
m_config.max_n_constituents) {
49 out.resize(
m_config.max_n_constituents, out[0]);
55 std::vector<int64_t> features_dim = {
static_cast<int64_t
>(tau_trks.size()),
static_cast<int64_t
>(
m_feature_extractors.size())};
56 std::vector<float> features;
58 for (
const auto* trk : tau_trks) {
60 features.push_back(extractor(*trk, *tau));
63 return Inputs{std::move(features), std::move(features_dim)};
68 std::vector<const xAOD::TauTrack*> sorted_tau_trks =
getTauTracks(tau);
69 std::vector<const xAOD::IParticle*> i_sorted_tau_trks(sorted_tau_trks.begin(), sorted_tau_trks.end());
71 return std::make_tuple(
getFeatures(tau, sorted_tau_trks), i_sorted_tau_trks);
78 }
catch (
const std::out_of_range &e) {
79 throw std::runtime_error(
"Variable '" + var_name +
"' not defined");
83 bool success = func_as_ref(tau, trk, out);
85 throw std::runtime_error(
"Error in track variable calculation");
109 out = std::log10(track.pt());
129 out = std::log10(std::max(tau.
pt(), 1e-6));
139 out = std::log10(std::abs(track.d0TJVA()) + 1e-6);
144 out = std::log10(std::abs(track.z0sinthetaTJVA()) + 1e-6);
149 out = track.z0sinthetaTJVA();
154 out = track.z0sinthetaSigTJVA();
159 out = track.d0TJVA();
164 out = track.d0SigTJVA();
169 out = track.eta() - tau.
eta();
175 out = std::abs(tlvSeedJet.Eta() - track.eta());
180 out = track.p4().DeltaPhi(tau.
p4());
186 out = tlvSeedJet.DeltaPhi(track.p4());
191 uint8_t inner_pixel_hits;
193 out = inner_pixel_hits;
213 uint8_t inner_pixel_hits, inner_pixel_exp;
216 out = inner_pixel_exp ? inner_pixel_hits : 1.;
217 return success1 && success2;
221 uint8_t pixel_hits, pixel_dead;
224 out = pixel_hits + pixel_dead;
225 return success1 && success2;
229 uint8_t sct_hits, sct_dead;
232 out = sct_hits + sct_dead;
233 return success1 && success2;
251 out = acc_eProbabilityNN(track);
256 auto atrack = track.track();
266 out = acc_chargedScoreRNN(track);
272 out = acc_isolationScoreRNN(track);
278 out = acc_conversionScoreRNN(track);
284 out = acc_fakeScoreRNN(track);
353 uint8_t pix_hit = 0;uint8_t pix_dead = 0;uint8_t sct_hit = 0;uint8_t sct_dead = 0;
358 out = pix_hit + pix_dead + sct_hit + sct_dead;
359 return success1 && success2 && success3 && success4;
391 out = track.track()->d0();
397 out = track.track()->qOverP();
402 out = track.track()->theta();
407 out = track.track()->z0() + track.track()->vz() - tau.
vertex()->
z();
412 out = track.track()->charge();
Scalar theta() const
theta method
std::function< bool(const xAOD::TauJet &, const xAOD::TauTrack &, float &)> FeatureFuncAsReference_t
std::vector< const xAOD::TauTrack * > getTauTracks(const xAOD::TauJet *tau) const
const std::string & getName() const override
std::function< float(const xAOD::TauTrack &, const xAOD::TauJet &)> FeatureFunc_t
const FTagDataDependencyNames & getDependencies() const override
std::tuple< Inputs, std::vector< const xAOD::IParticle * > > getData(const xAOD::IParticle &p) const override
ConstituentLoaderTauTrack(const ConstituentsInputConfig &cfg)
const std::set< std::string > & getUsedRemap() const override
const ConstituentsType & getType() const override
std::vector< FeatureFunc_t > m_feature_extractors
Inputs getFeatures(const xAOD::TauJet *tau, const std::vector< const xAOD::TauTrack * > &tau_trks) const
FeatureFunc_t getFeatureExtractor(const std::string &var_name) const
static const std::unordered_map< std::string, FeatureFuncAsReference_t > m_func_map
ConstituentsInputConfig m_config
std::set< std::string > m_used_remap
IConstituentsLoader(const ConstituentsInputConfig &cfg)
FTagDataDependencyNames m_deps
Helper class to provide constant type-safe access to aux data.
Class providing the definition of the 4-vector interface.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
virtual double pt() const
The transverse momentum ( ) of the particle.
const Vertex * vertex() const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
virtual double eta() const
The pseudorapidity ( ) of the particle.
float z() const
Returns the z position.
This file contains "getter" functions used for accessing tagger inputs from the EDM.
std::function< float(const xAOD::CaloVertexedTopoCluster &, const xAOD::TauJet &)> FeatureFunc_t
std::function< bool(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &, float &)> FeatureFuncAsReference_t
std::pair< std::vector< float >, std::vector< int64_t > > Inputs
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nInnermostPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool nSiHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool expectNextToInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool isolationScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, float &out)
bool numberOfTRTHighThresholdHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityHT_noTRT(const xAOD::TauJet &, const xAOD::TauTrack &, float &out)
bool numberOfInnermostPixelLayerHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityHT(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0sinthetaTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, float &out)
bool numberOfPixelHoles(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfTRTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool qOverP(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool expectInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool z0sinthetaSigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool conversionScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfContribPixelLayers(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool fakeScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool chargedScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0_old(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0TJVA(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool charge(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0SigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nPixelHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0sinThetaTJVA_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityNNorHT(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
TauTrack_v1 TauTrack
Definition of the current version.
TauJet_v3 TauJet
Definition of the current "tau version".
setBGCode setTAP setLVL2ErrorBits bool
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].