20#include "GaudiKernel/EventContext.h"
30 ISvcLocator* pSvcLocator)
47 return StatusCode::SUCCESS;
51 return StatusCode::SUCCESS;
63 std::pair<xAOD::VertexContainer*, xAOD::VertexAuxContainer*> verticesPair =
66 if (!verticesPair.first || !verticesPair.second){
68 return StatusCode::SUCCESS;
73 ATH_CHECK(vertices.
record(std::unique_ptr<xAOD::VertexContainer>(verticesPair.first),
74 std::unique_ptr<xAOD::VertexAuxContainer>(verticesPair.second)));
76 ATH_MSG_DEBUG(
"New conversion container size: " << vertices->size());
82 while (itVtx != itVtxEnd){
86 for (
unsigned int i = 0; i < vertex->nTrackParticles(); ++i){
93 accPx(*vertex) = momentum.x();
94 accPy(*vertex) = momentum.y();
95 accPz(*vertex) = momentum.z();
105 itVtx = vertices->erase(itVtx);
106 itVtxEnd = vertices->end();
110 float etaAtCalo = -9999.;
111 float phiAtCalo = -9999.;
114 ctx, vertex, &etaAtCalo, &phiAtCalo)) {
120 accetaAtCalo(*vertex) = etaAtCalo;
121 accphiAtCalo(*vertex) = phiAtCalo;
127 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
An algorithm that can be simultaneously executed in multiple threads.
DataModel_detail::iterator< DataVector > iterator
ToolHandle< IEMExtrapolationTools > m_EMExtrapolationTool
EMExtrapolationTool.
virtual StatusCode finalize() override final
SG::WriteHandleKey< xAOD::VertexContainer > m_outputConversionContainerKey
conversion container output name
virtual StatusCode execute(const EventContext &ctx) const override final
EMVertexBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< float > m_minPtCut_SingleTrack
ToolHandle< InDet::IVertexFinder > m_vertexFinderTool
Tool to find vertices (creates double-track conversions)
virtual StatusCode initialize() override final
Gaudi::Property< float > m_maxRadius
Maximum radius accepted for conversion vertices.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inputTrackParticleContainerKey
TrackParticle container input name.
Gaudi::Property< float > m_minPtCut_DoubleTrack
Minimum Pt, less than that TRT track are pileup for double/single track conversion.
SG::Accessor< T, ALLOC > Accessor
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
Eigen::Matrix< double, 3, 1 > Vector3D
xAOD::EgammaParameters::ConversionType conversionType(const xAOD::Photon *ph)
return the photon conversion type (see EgammaEnums)
@ doubleTRT
two tracks, none with Si hits (TRT only)
@ singleTRT
one track only, no Si hits (TRT only)
Vertex_v1 Vertex
Define the latest version of the vertex class.