diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h index 4b210fd05f60a9c0a932d48d32beb363692c0f81..054694ac30d3923283c6474fbb89e12ad0ad1394 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h @@ -83,28 +83,31 @@ #define INDETPRIVXFINDERTOOL_INDETADAPTIVEMULTIPRIVXFINDERTOOL_H #include "AthenaBaseComps/AthAlgTool.h" -#include "CxxUtils/checker_macros.h" -#include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include "InDetRecToolInterfaces/IVertexFinder.h" +#include "GaudiKernel/EventContext.h" #include "TrkParameters/TrackParameters.h" #include "TrkParticleBase/TrackParticleBaseCollection.h" #include "TrkTrack/TrackCollection.h" // type def ... -#include <utility> + +#include "BeamSpotConditionsData/BeamSpotData.h" +#include "InDetRecToolInterfaces/IVertexFinder.h" +#include "TrkVertexFitters/AdaptiveMultiVertexFitter.h" +#include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h" +#include "TrkVertexFitterInterfaces/IVertexAnalyticSeedFinder.h" +#include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h" /** * Forward declarations */ -#include "BeamSpotConditionsData/BeamSpotData.h" -#include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h" #include "xAODTracking/TrackParticleContainerFwd.h" #include "xAODTracking/TrackParticleFwd.h" #include "xAODTracking/VertexContainerFwd.h" #include "xAODTracking/VertexFwd.h" + +#include <utility> + class TrackToVtxLinkContainer; namespace Trk { -class IVertexAnalyticSeedFinder; -class AdaptiveMultiVertexFitter; class Track; class ITrackLink; class TrkQuality; @@ -112,7 +115,6 @@ class IVxCandidateXAODVertex; } namespace InDet { -class IInDetTrackSelectionTool; class InDetAdaptiveMultiPriVxFinderTool : public AthAlgTool @@ -123,7 +125,8 @@ public: InDetAdaptiveMultiPriVxFinderTool(const std::string& t, const std::string& n, const IInterface* p); - virtual ~InDetAdaptiveMultiPriVxFinderTool(); + + virtual ~InDetAdaptiveMultiPriVxFinderTool() = default; virtual StatusCode initialize() override; @@ -140,23 +143,51 @@ public: using IVertexFinder::findVertex; virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const TrackCollection* trackTES) const override; + findVertex(const EventContext& ctx, + const TrackCollection* trackTES) const override; virtual std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - findVertex(const xAOD::TrackParticleContainer* trackParticles) const override; + findVertex(const EventContext& ctx, + const xAOD::TrackParticleContainer* trackParticles) const override; virtual StatusCode finalize() override; private: std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> findVertex( + const EventContext& ctx, const std::vector<const Trk::ITrackLink*>& trackVector) const; void SGError(const std::string& errService); - virtual void printParameterSettings(); + void printParameterSettings(); + + ToolHandle<Trk::AdaptiveMultiVertexFitter> m_MultiVertexFitter{ + this, + "VertexFitterTool", + "Trk::AdaptiveMultiVertexFitter", + "Multi Vertex Fitter" + }; + ToolHandle<Trk::IVertexAnalyticSeedFinder> m_analyticSeedFinder{ + this, + "SeedFinder", + "Trk::TrackDensitySeedFinder", + " Seed Finder" + }; + ToolHandle<InDet::IInDetTrackSelectionTool> m_trkFilter{ + this, + "TrackSelector", + "InDet::InDetTrackSelection", + "Track Selection Tool" + }; - ToolHandle<Trk::AdaptiveMultiVertexFitter> m_MultiVertexFitter; - ToolHandle<Trk::IVertexAnalyticSeedFinder> m_analyticSeedFinder; - ToolHandle<InDet::IInDetTrackSelectionTool> m_trkFilter; + /* + * Impact parameter estimator used to calculate significance + */ + ToolHandle<Trk::ITrackToVertexIPEstimator> m_ipEstimator{ + this, + "IPEstimator", + "Trk::TrackToVertexIPEstimator", + "IP estimator" + }; SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey{ this, @@ -257,13 +288,6 @@ private: double m_minweight; - /* - * Impact parameter estimator used to calculate significance - */ - ToolHandle<Trk::ITrackToVertexIPEstimator> m_ipEstimator{ - "Trk::TrackToVertexIPEstimator" - }; - /* * Maximum amount of iterations allowed for vertex finding. * diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx index baab3314d2cd8b98af40233983f19cb2c91c3382..5701911d59a10ed1c35a92fe7bef6ba4e85656cc 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx @@ -21,27 +21,20 @@ (trial working point for high luminosities) ***************************************************************************/ +#include "InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h" #include "VxVertex/RecVertex.h" #include "VxVertex/Vertex.h" -#include "InDetPriVxFinderTool/InDetAdaptiveMultiPriVxFinderTool.h" #include "TrkTrack/Track.h" #include "TrkParameters/TrackParameters.h" -#include <map> -#include <vector> - #include "EventPrimitives/EventPrimitives.h" #include "EventPrimitives/EventPrimitivesHelpers.h" #include "GeoPrimitives/GeoPrimitives.h" -#include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h" - #include "VxMultiVertex/MvfFitInfo.h" #include "VxMultiVertex/MVFVxTrackAtVertex.h" #include "VxMultiVertex/TrackToVtxLink.h" #include "AthContainers/DataVector.h" #include "TrkEventPrimitives/ParamDefs.h" -#include "TrkVertexFitters/AdaptiveMultiVertexFitter.h" -#include "TrkVertexFitterInterfaces/IVertexAnalyticSeedFinder.h" #include "TrkTrack/LinkToTrack.h" #include "TrkLinks/LinkToXAODTrackParticle.h" @@ -53,66 +46,60 @@ #include "xAODTracking/TrackParticleAuxContainer.h" #include <cmath> +#include <map> +#include <vector> namespace InDet { - InDetAdaptiveMultiPriVxFinderTool::InDetAdaptiveMultiPriVxFinderTool(const std::string& t, const std::string& n, - const IInterface* p) - : AthAlgTool(t, n, p), - m_MultiVertexFitter("Trk::AdaptiveMultiVertexFitter"), - m_analyticSeedFinder("Trk::TrackDensitySeedFinder"), - m_trkFilter("InDet::InDetTrackSelection"), - m_useBeamConstraint(true), - m_TracksMaxZinterval(1.), - m_maxVertexChi2(18.42), - m_realMultiVertex(true), - m_useFastCompatibility(true), - m_selectiontype(0), - m_finalCutMaxVertexChi2(18.42), - m_cutVertexDependence(3.), - m_minweight(0.0001), - m_maxIterations(100), - m_addSingleTrackVertices(false), - m_do3dSplitting(false), - m_zBfieldApprox(0.60407), - m_maximumVertexContamination(0.5), - m_tracksMaxSignificance(5.), - m_useSeedConstraint(true) - { - declareInterface<IVertexFinder>(this);//by GP: changed from InDetMultiAdaptivePriVxFinderTool to IPriVxFinderTool - /* Retrieve StoreGate container and tool names from job options */ - declareProperty("SeedFinder", m_analyticSeedFinder); - declareProperty("VertexFitterTool", m_MultiVertexFitter); - declareProperty("TrackSelector", m_trkFilter); - - //finder options - declareProperty("TracksMaxZinterval", m_TracksMaxZinterval); - declareProperty("maxVertexChi2", m_maxVertexChi2); - declareProperty("finalCutMaxVertexChi2", m_finalCutMaxVertexChi2); - declareProperty("cutVertexDependence", m_cutVertexDependence); - declareProperty("MinWeight", m_minweight); - declareProperty("realMultiVertex", m_realMultiVertex); - declareProperty("useFastCompatibility", m_useFastCompatibility); - declareProperty("useBeamConstraint", m_useBeamConstraint); - declareProperty("addSingleTrackVertices", m_addSingleTrackVertices); - declareProperty("tracksMaxSignificance",m_tracksMaxSignificance); - declareProperty("m_useSeedConstraint",m_useSeedConstraint); - //********* signal vertex selection (for pile up) **** - declareProperty("selectiontype", m_selectiontype); - //==0 for sum p_t^2 - //==1 for NN - //==2 for min bias compatibility estimation (in the future) - declareProperty("maxIterations", m_maxIterations); - declareProperty("do3dSplitting", m_do3dSplitting); - declareProperty("zBfieldApprox", m_zBfieldApprox); - declareProperty("maximumVertexContamination", m_maximumVertexContamination); - declareProperty( "IPEstimator", m_ipEstimator ); +InDetAdaptiveMultiPriVxFinderTool::InDetAdaptiveMultiPriVxFinderTool( + const std::string& t, + const std::string& n, + const IInterface* p) + : AthAlgTool(t, n, p) + , m_useBeamConstraint(true) + , m_TracksMaxZinterval(1.) + , m_maxVertexChi2(18.42) + , m_realMultiVertex(true) + , m_useFastCompatibility(true) + , m_selectiontype(0) + , m_finalCutMaxVertexChi2(18.42) + , m_cutVertexDependence(3.) + , m_minweight(0.0001) + , m_maxIterations(100) + , m_addSingleTrackVertices(false) + , m_do3dSplitting(false) + , m_zBfieldApprox(0.60407) + , m_maximumVertexContamination(0.5) + , m_tracksMaxSignificance(5.) + , m_useSeedConstraint(true) +{ + declareInterface<IVertexFinder>( + this); // by GP: changed from InDetMultiAdaptivePriVxFinderTool to + // IPriVxFinderTool + // finder options + declareProperty("TracksMaxZinterval", m_TracksMaxZinterval); + declareProperty("maxVertexChi2", m_maxVertexChi2); + declareProperty("finalCutMaxVertexChi2", m_finalCutMaxVertexChi2); + declareProperty("cutVertexDependence", m_cutVertexDependence); + declareProperty("MinWeight", m_minweight); + declareProperty("realMultiVertex", m_realMultiVertex); + declareProperty("useFastCompatibility", m_useFastCompatibility); + declareProperty("useBeamConstraint", m_useBeamConstraint); + declareProperty("addSingleTrackVertices", m_addSingleTrackVertices); + declareProperty("tracksMaxSignificance", m_tracksMaxSignificance); + declareProperty("m_useSeedConstraint", m_useSeedConstraint); + //********* signal vertex selection (for pile up) **** + declareProperty("selectiontype", m_selectiontype); + //==0 for sum p_t^2 + //==1 for NN + //==2 for min bias compatibility estimation (in the future) + declareProperty("maxIterations", m_maxIterations); + declareProperty("do3dSplitting", m_do3dSplitting); + declareProperty("zBfieldApprox", m_zBfieldApprox); + declareProperty("maximumVertexContamination", m_maximumVertexContamination); } - InDetAdaptiveMultiPriVxFinderTool::~InDetAdaptiveMultiPriVxFinderTool() - {} - StatusCode InDetAdaptiveMultiPriVxFinderTool::initialize() { /* Get the right vertex fitting tool */ @@ -146,8 +133,12 @@ namespace InDet } //anonymous namespace std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - InDetAdaptiveMultiPriVxFinderTool::findVertex(const TrackCollection* trackTES) const{ - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + InDetAdaptiveMultiPriVxFinderTool::findVertex( + const EventContext& ctx, + const TrackCollection* trackTES) const + { + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle{ m_beamSpotKey, + ctx }; const Trk::RecVertex &beamposition(beamSpotHandle->beamVtx()); std::vector<const Trk::ITrackLink*> selectedTracks; @@ -174,7 +165,8 @@ namespace InDet ATH_MSG_DEBUG("Of " << trackTES->size() << " tracks " << selectedTracks.size() << " survived the preselection."); - std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(selectedTracks); + std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> + returnContainers = findVertex(ctx, selectedTracks); std::vector<const Trk::ITrackLink*>::iterator ibegin = selectedTracks.begin(); std::vector<const Trk::ITrackLink*>::iterator iend = selectedTracks.end(); @@ -189,11 +181,14 @@ namespace InDet return returnContainers; } - std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - InDetAdaptiveMultiPriVxFinderTool::findVertex(const xAOD::TrackParticleContainer* trackParticles) const { + InDetAdaptiveMultiPriVxFinderTool::findVertex( + const EventContext& ctx, + const xAOD::TrackParticleContainer* trackParticles) const + { std::vector<const Trk::ITrackLink*> selectedTracks; - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle{ m_beamSpotKey, + ctx }; xAOD::Vertex beamposition; beamposition.makePrivateStore(); beamposition.setPosition(beamSpotHandle->beamVtx().position()); @@ -227,7 +222,8 @@ namespace InDet ATH_MSG_DEBUG( "Of " << trackParticles->size() << " tracks " << selectedTracks.size() << " survived the preselection."); - std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> returnContainers = findVertex(selectedTracks); + std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> + returnContainers = findVertex(ctx, selectedTracks); std::vector<const Trk::ITrackLink*>::iterator ibegin = selectedTracks.begin(); std::vector<const Trk::ITrackLink*>::iterator iend = selectedTracks.end(); @@ -244,13 +240,17 @@ namespace InDet } std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> - InDetAdaptiveMultiPriVxFinderTool::findVertex(const std::vector<const Trk::ITrackLink*>& trackVector) const { - // TODO: put this in a better place + InDetAdaptiveMultiPriVxFinderTool::findVertex( + const EventContext& ctx, + const std::vector<const Trk::ITrackLink*>& trackVector) const + { // Prepare objects holding the decoration of xAOD::Vertex with MVF auxdata // For optimization of access speed - xAOD::Vertex::Decorator< Trk::MvfFitInfo* > MvfFitInfo("MvfFitInfo"); - xAOD::Vertex::Decorator< bool > isInitialized("isInitialized"); - xAOD::Vertex::Decorator< std::vector< Trk::VxTrackAtVertex* > > VTAV("VTAV"); + static const xAOD::Vertex::Decorator<Trk::MvfFitInfo*> MvfFitInfo( + "MvfFitInfo"); + static const xAOD::Vertex::Decorator<bool> isInitialized("isInitialized"); + static const xAOD::Vertex::Decorator<std::vector<Trk::VxTrackAtVertex*>> + VTAV("VTAV"); if (m_selectiontype == 1) { ATH_MSG_WARNING("Only Selection Type 0 supported for MT"); @@ -271,19 +271,15 @@ namespace InDet Amg::Vector3D actualVertex; - std::map<const Trk::ITrackLink*, Trk::TrackToVtxLink*> TrackLinkOf; - //create a map between ITrackLink* and TrackToVtxLink* std::vector<const Trk::ITrackLink*>::const_iterator trkbegin = origTracks.begin(); std::vector<const Trk::ITrackLink*>::const_iterator trkend = origTracks.end(); for (std::vector<const Trk::ITrackLink*>::const_iterator trkiter = trkbegin; trkiter != trkend; ++trkiter) { - Trk::TrackToVtxLink* newTrkToVtxLink(new Trk::TrackToVtxLink(new std::vector<xAOD::Vertex*>)); // makePrivateStore() - // is called for - // each vertex to - // add in iteration + Trk::TrackToVtxLink* newTrkToVtxLink(new Trk::TrackToVtxLink(new std::vector<xAOD::Vertex*>)); + // makePrivateStore() is called for each vertex to add in iteration TrackLinkOf[*trkiter] = newTrkToVtxLink; myTrackToVtxLinks.push_back(newTrkToVtxLink); } @@ -292,7 +288,8 @@ namespace InDet //prepare iterators for tracks only necessary for seeding std::vector<const Trk::ITrackLink*>::iterator seedtrkbegin = seedTracks.begin(); std::vector<const Trk::ITrackLink*>::iterator seedtrkend = seedTracks.end(); - SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle{ m_beamSpotKey, + ctx }; int iteration = 0; int nNoCompatibleTracks(0); @@ -358,8 +355,9 @@ namespace InDet //new xAOD::Vertex with this xAOD::Vertex* actualcandidate = new xAOD::Vertex; actualcandidate->makePrivateStore(); - actualcandidate->setVertexType(xAOD::VxType::NotSpecified); // to mimic the initialization present in the old EDM // constructor - // now add decorations! + actualcandidate->setVertexType(xAOD::VxType::NotSpecified); + // to mimic the initialization present in the old EDM + // constructor now add decorations! MvfFitInfo(*actualcandidate) = new Trk::MvfFitInfo(constraintVertex, new Amg::Vector3D(actualVertex), new Amg::Vector3D(actualVertex)); @@ -411,9 +409,12 @@ namespace InDet actualVertex = Amg::Vector3D(0., 0., newz); actualcandidate = new xAOD::Vertex(); actualcandidate->makePrivateStore(); - actualcandidate->setVertexType(xAOD::VxType::NotSpecified); // to mimic the initialization present in the old - // EDM constructor - // TODO: Think about where everything is deleted! Does Trk::MvfFitInfo destructor and do MVFVxTrackAtVertex + actualcandidate->setVertexType(xAOD::VxType::NotSpecified); + // to mimic the initialization present in the old + // EDM constructor + + // TODO: Think about where everything is deleted! Does Trk::MvfFitInfo + // destructor and do MVFVxTrackAtVertex // destructors get called when actualcandidate gets deleted? // now add decorations! MvfFitInfo(*actualcandidate) = new Trk::MvfFitInfo(new xAOD::Vertex(*constraintVertex), @@ -623,7 +624,6 @@ namespace InDet } } - /////////////// //now break the cycle if you didn't diminish the number of seeds... ATH_MSG_DEBUG("Remaining seeds: " << seedTracks.size() << " previous round " << seedtracknumber); @@ -731,27 +731,34 @@ namespace InDet ATH_MSG_DEBUG("Vertices deleted for contamination cut: " << nContamintationCut); ATH_MSG_DEBUG("Vertices deleted for proximity to previous: " << nWithin3sigma); - ATH_MSG_DEBUG("Primary vertex finding complete with " << iteration << - " iterations and " << myxAODVertices.size() << " vertices found."); - - //correction of a bug: you can estimate the probability of being - //the primary interaction vertex only after the whole multivertexfit - //is finished!!! (the first is influenced by the fit of the second and so - //on...) - std::vector<xAODVertex_pair>::iterator vtxBegin = myxAODVertices.begin(); - std::vector<xAODVertex_pair>::iterator vtxEnd = myxAODVertices.end(); - // To make sure that the right tracks are in the std::vector<Trk::VxTrackAtVertex> of each vertex - up until now, - // they are kept in the VTAV decoration - for (std::vector<xAODVertex_pair>::iterator vtxIter = vtxBegin; vtxIter != vtxEnd; ++vtxIter) { - xAOD::Vertex* cand = vtxIter->second; - std::vector<Trk::VxTrackAtVertex>* tracksOfVertex = &(cand->vxTrackAtVertex()); - tracksOfVertex->clear(); - std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkBegin = VTAV(*cand).begin(); - std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkEnd = VTAV(*cand).end(); - for (std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkIter = MVFtrkBegin; MVFtrkIter != MVFtrkEnd; - ++MVFtrkIter) { - tracksOfVertex->push_back(**MVFtrkIter); - } + ATH_MSG_DEBUG("Primary vertex finding complete with " + << iteration << " iterations and " << myxAODVertices.size() + << " vertices found."); + + // correction of a bug: you can estimate the probability of being + // the primary interaction vertex only after the whole multivertexfit + // is finished!!! (the first is influenced by the fit of the second and so + // on...) + std::vector<xAODVertex_pair>::iterator vtxBegin = myxAODVertices.begin(); + std::vector<xAODVertex_pair>::iterator vtxEnd = myxAODVertices.end(); + // To make sure that the right tracks are in the + // std::vector<Trk::VxTrackAtVertex> of each vertex - up until now, they are + // kept in the VTAV decoration + for (std::vector<xAODVertex_pair>::iterator vtxIter = vtxBegin; + vtxIter != vtxEnd; + ++vtxIter) { + xAOD::Vertex* cand = vtxIter->second; + std::vector<Trk::VxTrackAtVertex>* tracksOfVertex = + &(cand->vxTrackAtVertex()); + tracksOfVertex->clear(); + std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkBegin = + VTAV(*cand).begin(); + std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkEnd = VTAV(*cand).end(); + for (std::vector<Trk::VxTrackAtVertex*>::iterator MVFtrkIter = MVFtrkBegin; + MVFtrkIter != MVFtrkEnd; + ++MVFtrkIter) { + tracksOfVertex->push_back(**MVFtrkIter); + } } //before filling the container, you have to decide what is your most probable signal vertex for (std::vector<xAODVertex_pair>::iterator vtxIter = vtxBegin; vtxIter != vtxEnd; ++vtxIter) { @@ -876,7 +883,8 @@ namespace InDet // TODO: put this in a better place // Prepare objects holding the decoration of xAOD::Vertex with MVF auxdata // For optimization of access speed - xAOD::Vertex::Decorator< std::vector<Trk::VxTrackAtVertex*> > VTAV("VTAV"); + static const xAOD::Vertex::Decorator<std::vector<Trk::VxTrackAtVertex*>> + VTAV("VTAV"); std::vector<Trk::VxTrackAtVertex*>::iterator begintracks = VTAV(*mycand).begin(); std::vector<Trk::VxTrackAtVertex*>::iterator endtracks = VTAV(*mycand).end(); @@ -998,7 +1006,8 @@ namespace InDet { if ( ipas->sigmad0 > 0 && ipas->sigmaz0 > 0) { - significance = std::sqrt( std::pow(ipas->IPd0/ipas->sigmad0,2) + std::pow(ipas->IPz0/ipas->sigmaz0,2) ); + significance = std::sqrt(std::pow(ipas->IPd0 / ipas->sigmad0, 2) + + std::pow(ipas->IPz0 / ipas->sigmaz0, 2)); } delete ipas; } @@ -1010,8 +1019,8 @@ namespace InDet if (candidate == nullptr) return; // decorators - xAOD::Vertex::Decorator< Trk::MvfFitInfo* > MvfFitInfo("MvfFitInfo"); - xAOD::Vertex::Decorator< std::vector< Trk::VxTrackAtVertex* > > VTAV("VTAV"); + static const xAOD::Vertex::Decorator< Trk::MvfFitInfo* > MvfFitInfo("MvfFitInfo"); + static const xAOD::Vertex::Decorator< std::vector< Trk::VxTrackAtVertex* > > VTAV("VTAV"); if (VTAV.isAvailable(*candidate)) { for (auto tav : VTAV(*candidate)) { diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetIterativePriVxFinderTool.cxx b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetIterativePriVxFinderTool.cxx index ff11c0cc818724c7e0be1b4dfe288d4168390d5d..911eba162a5f8424d255496671b8c771833a7eb1 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetIterativePriVxFinderTool.cxx +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetIterativePriVxFinderTool.cxx @@ -94,7 +94,7 @@ namespace InDet } InDetIterativePriVxFinderTool::~InDetIterativePriVxFinderTool() -{} += default; StatusCode InDetIterativePriVxFinderTool::initialize() { diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetMultiPriVxFinderTool.cxx b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetMultiPriVxFinderTool.cxx index cc9217335afc78f4e474e81631e25b430816a081..17ba30ffc95a6cbe630c5b0f707240ca406947fb 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetMultiPriVxFinderTool.cxx +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetMultiPriVxFinderTool.cxx @@ -92,7 +92,7 @@ namespace InDet } InDetMultiPriVxFinderTool::~InDetMultiPriVxFinderTool() - {} + = default; StatusCode InDetMultiPriVxFinderTool::initialize() { diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetPriVxFinderTool.cxx b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetPriVxFinderTool.cxx index 2f26ea76e42fff47a4a6d3df5aaff82112591492..9ac1e16b78b51c75313606e41d317134d2ff3e4b 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetPriVxFinderTool.cxx +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetPriVxFinderTool.cxx @@ -91,7 +91,7 @@ namespace InDet } InDetPriVxFinderTool::~InDetPriVxFinderTool() - {} + = default; StatusCode InDetPriVxFinderTool::initialize() {