Skip to content
Snippets Groups Projects
Commit eaecaf83 authored by Marcin Wandas's avatar Marcin Wandas
Browse files

Make executeVertexFinder() const in TauVertexFinder

parent 3086b337
No related branches found
No related tags found
No related merge requests found
......@@ -43,7 +43,7 @@ StatusCode TauVertexFinder::finalize() {
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
StatusCode TauVertexFinder::executeVertexFinder(xAOD::TauJet& pTau,
const xAOD::VertexContainer* vertexContainer,
const xAOD::TrackParticleContainer* trackContainer) {
const xAOD::TrackParticleContainer* trackContainer) const {
const xAOD::VertexContainer * vxContainer = 0;
......@@ -117,13 +117,13 @@ ElementLink<xAOD::VertexContainer>
TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
const xAOD::VertexContainer& vertices,
const xAOD::TrackParticleContainer * trackContainer,
float& maxJVF)
float& maxJVF) const
{
const xAOD::Jet* pJetSeed = (*pTau.jetLink());
std::vector<const xAOD::TrackParticle*> tracksForTJVA;
const double dDeltaRMax(0.2);
m_matchedVertexOnline.clear();
std::vector<const xAOD::Vertex*> matchedVertexOnline;
// the implementation follows closely the example given in modifyJet(...) in https://svnweb.cern.ch/trac/atlasoff/browser/Reconstruction/Jet/JetMomentTools/trunk/Root/JetVertexFractionTool.cxx#15
const xAOD::TrackParticleContainer* trackParticleCont = 0;
......@@ -180,7 +180,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
ATH_MSG_DEBUG("Creating online TJVA");
ATH_MSG_DEBUG("Building online track-vertex association trk size="<< tracksForTJVA.size()
<< " vtx size="<< vertices.size());
m_matchedVertexOnline.resize(tracksForTJVA.size(), 0 );
matchedVertexOnline.resize(tracksForTJVA.size(), 0 );
for (size_t iTrack = 0; iTrack < tracksForTJVA.size(); ++iTrack)
{
......@@ -221,7 +221,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
// If we matched a vertex, then associate that vertex to the track
if (foundMatch)
m_matchedVertexOnline[ iTrack ] = vertices.at(matchedIndex);
matchedVertexOnline[ iTrack ] = vertices.at(matchedIndex);
}
} else {
......@@ -243,7 +243,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
for (const xAOD::Vertex* vert : vertices) {
float jvf = 0;
if(!inTrigger()) jvf = getJetVertexFraction(vert,tracksForTJVA,tva);
else jvf = getJetVertexFraction(vert,tracksForTJVA);
else jvf = getJetVertexFraction(vert,tracksForTJVA,matchedVertexOnline);
if (jvf > maxJVF) {
maxJVF = jvf;
max_vert = vert;
......@@ -278,13 +278,15 @@ float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex, const st
return sumTrackAll!=0 ? sumTrackPV/sumTrackAll : 0;
}
// for online ATR-15665: reimplementation needed for online because the tva doesn't work. The size of the track collection from TE is not the same as the max track index
float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks) const
float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex,
const std::vector<const xAOD::TrackParticle*>& tracks,
const std::vector<const xAOD::Vertex*>& matchedVertexOnline) const
{
float sumTrackPV = 0;
float sumTrackAll = 0;
for (size_t iTrack = 0; iTrack < tracks.size(); ++iTrack)
{
const xAOD::Vertex* ptvtx = m_matchedVertexOnline[iTrack];
const xAOD::Vertex* ptvtx = matchedVertexOnline[iTrack];
if (ptvtx != nullptr) { // C++11 feature
if (ptvtx->index() == vertex->index()) sumTrackPV += tracks.at(iTrack)->pt();
}
......
......@@ -39,22 +39,32 @@ public:
//-------------------------------------------------------------
//! Algorithm functions
//-------------------------------------------------------------
virtual StatusCode initialize() override;
virtual StatusCode executeVertexFinder(xAOD::TauJet& pTau,
const xAOD::VertexContainer* vertexContainer = nullptr,
const xAOD::TrackParticleContainer* trackContainer = nullptr) override;
virtual StatusCode finalize() override;
StatusCode initialize() override;
StatusCode executeVertexFinder(xAOD::TauJet& pTau,
const xAOD::VertexContainer* vertexContainer = nullptr,
const xAOD::TrackParticleContainer* trackContainer = nullptr) override
{
return static_cast<const TauVertexFinder*>(this)->executeVertexFinder(pTau, vertexContainer, trackContainer);
}
StatusCode executeVertexFinder(xAOD::TauJet& pTau,
const xAOD::VertexContainer* vertexContainer = nullptr,
const xAOD::TrackParticleContainer* trackContainer = nullptr) const;
StatusCode finalize() override;
private:
ElementLink<xAOD::VertexContainer>
getPV_TJVA(const xAOD::TauJet& tauJet,
const xAOD::VertexContainer& vertices,
const xAOD::TrackParticleContainer* trackContainer,
float& maxJVF);
float& maxJVF) const;
float getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks, const jet::TrackVertexAssociation* tva) const;
// for online ATR-15665
float getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks) const;
float getJetVertexFraction(const xAOD::Vertex* vertex,
const std::vector<const xAOD::TrackParticle*>& tracks,
const std::vector<const xAOD::Vertex*>& matchedVertexOnline) const;
private:
......@@ -69,9 +79,6 @@ private:
SG::ReadHandleKey<xAOD::VertexContainer> m_vertexInputContainer{this,"Key_vertexInputContainer", "PrimaryVertices", "input vertex container key"};
SG::ReadHandleKey<xAOD::TrackParticleContainer> m_trackPartInputContainer{this,"Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"};
SG::ReadHandleKey<jet::TrackVertexAssociation> m_jetTrackVtxAssoc{this, "Key_JetTrackVtxAssoc_forTaus", "JetTrackVtxAssoc_forTaus", "input TVA for taus"};
std::vector<const xAOD::Vertex*> m_matchedVertexOnline;
};
#endif // not TAUREC_TAUVERTEXFINDER_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment