19 const std::string& quality ) {
20 std::string decoName =
"LinkedElectron_" + quality;
27 const std::string& quality ) {
28 std::string decoName =
"LinkedMuon_" + quality;
35 const int requiredNtracks,
36 const std::string&
type,
37 const std::string& quality ) {
38 std::string decoName =
"LinkedTau" +
type +
39 std::to_string( requiredNtracks ) +
"_" + quality;
46 const std::string& quality ) {
47 std::string decoName =
"LinkedJet_" + quality;
54 const std::string& quality ) {
56 if( not
jet )
return -999.;
62 float vs = std::sin( std::atan2(
unit.y(),
unit.x() ) - track.phi() ) * track.d0();
63 float signD0 = vs>=0. ? 1. : -1.;
64 return signD0 * std::fabs( track.d0() );
71 track,
"truthParticleLink" );
72 return ( truth ==
nullptr );
79 float prob = truthMatchProbabilityAcc.
withDefault( track, -1 );
80 if( std::isnan(prob) )
return -1;
86 const float truthProbCut ) {
88 if( std::isnan(prob) )
return nullptr;
89 if( prob <= truthProbCut )
return nullptr;
92 track,
"truthParticleLink" );
95 template <
typename PARTICLE >
96 unsigned int getEtaBin (
const PARTICLE& p,
const std::vector<float>& etaBins) {
97 float absEta = std::abs(p.eta());
98 absEta = std::clamp(absEta, etaBins.front(), etaBins.back());
99 const auto pVal = std::lower_bound(etaBins.begin(), etaBins.end(), absEta);
100 const unsigned int bin = std::distance(etaBins.begin(), pVal) - 1;
109 std::vector< const xAOD::TrackParticle* >& vtxTracks,
110 std::vector< float >& vtxTrackWeights,
111 const std::vector< const xAOD::TrackParticle* >& selTracks,
114 bool success(
true );
118 vtxTrackWeights.clear();
129 if( not( nTracks == elVec.size() and nTracks == wVec.size() ) )
return false;
132 for(
size_t it=0 ; it<nTracks ; it++ ) {
134 if( not elVec[ it ].
isValid() ) {
140 float thisTrkW = wVec[ it ];
144 std::find( selTracks.begin(), selTracks.end(), thisTrk ) == selTracks.end() )
continue;
147 vtxTracks.push_back( thisTrk );
148 vtxTrackWeights.push_back( thisTrkW );
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Helper class to provide constant type-safe access to aux data.
Utility methods to access offline object decorations.
Utility methods to access track/truth particles parmeters in a consitent way in this package.
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Type for the associated track particles.
VxType::VertexType vertexType() const
The type of the vertex.
const std::vector< float > & trackWeights() const
Get all the track weights.
Eigen::Matrix< double, 3, 1 > Vector3D
float getD0TrackInJet(const xAOD::TrackParticle &track, const std::string &quality)
recompute d0 projecting in jet direction w.r.t. origin
unsigned int getEtaBin(const PARTICLE &p, const std::vector< float > &etaBins)
const xAOD::Jet * getLinkedJet(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedJet
const xAOD::Muon * getLinkedMuon(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedMuon
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
container_t::const_value_type getLinkedObject(const xAOD::TrackParticle &track, const std::string &decoName)
Templated method to retrieve object linked to a track.
template unsigned int getEtaBin< xAOD::TruthParticle >(const xAOD::TruthParticle &truth, const std::vector< float > &etaBins)
bool getVertexTracksAndWeights(const xAOD::Vertex &vtx, std::vector< const xAOD::TrackParticle * > &vtxTracks, std::vector< float > &vtxTrackWeights, const std::vector< const xAOD::TrackParticle * > &selTracks, bool useSelected)
getVertexTracksAndWeights
const xAOD::Electron * getLinkedElectron(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedElectron
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
bool isUnlinkedTruth(const xAOD::TrackParticle &track)
isUnlinkedTruth
template unsigned int getEtaBin< xAOD::TrackParticle >(const xAOD::TrackParticle &track, const std::vector< float > &etaBins)
const xAOD::TauJet * getLinkedTau(const xAOD::TrackParticle &track, const int requiredNtracks, const std::string &type, const std::string &quality)
getLinkedTau
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Jet_v1 Jet
Definition of the current "jet version".
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
TauJet_v3 TauJet
Definition of the current "tau version".
TruthParticle_v1 TruthParticle
Typedef to implementation.
Muon_v1 Muon
Reference the current persistent version:
Electron_v1 Electron
Definition of the current "egamma version".