6#include "AthLinks/ElementLink.h"
11#include "GaudiKernel/MsgStream.h"
12#include "GaudiKernel/DataSvc.h"
13#include "GaudiKernel/PhysicalConstants.h"
32 return StatusCode::SUCCESS;
40 ATH_MSG_WARNING(
"xAOD Muon Truth Particles are already available in the event");
41 return StatusCode::SUCCESS;
46 ATH_CHECK(xTruthParticleContainerMuon.
record(std::make_unique<xAOD::TruthParticleContainer>(), std::make_unique<xAOD::TruthParticleAuxContainer>()));
51 if (!xTruthEventContainer.
isValid()) {
52 ATH_MSG_ERROR(
"Could not retrieve xAOD::TruthEventContainer with key:" <<
54 return StatusCode::FAILURE;
58 for (itr = xTruthEventContainer->begin(); itr!=xTruthEventContainer->end(); ++itr) {
60 std::vector<int> uniqueID_list;
63 unsigned int nPart = (*itr)->nTruthParticles();
64 for (
unsigned int iPart = 0; iPart < nPart; ++iPart) {
73 if (uniqueID_list.size() > 0){
74 found = (std::find(uniqueID_list.begin(), uniqueID_list.end(), my_uniqueID) != uniqueID_list.end());
79 uniqueID_list.push_back(my_uniqueID);
86 xTruthParticleContainerMuon->push_back( xTruthParticle );
88 *xTruthParticle=*theParticle;
91 ATH_MSG_INFO(
"Found "<< zero_uniqueID <<
" uniqueID-zero partciles and " << dup_uniqueID <<
" duplicates");
94 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Helpers for checking error return status codes and reporting errors.
ATLAS-specific HepMC functions.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
virtual bool isValid() override final
Can the handle be successfully dereferenced?
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
virtual StatusCode initialize()
Function initialising the algorithm.
xAODTruthParticleSlimmerMuon(const std::string &name, ISvcLocator *svcLoc)
Regular algorithm constructor.
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_xaodTruthParticleContainerNameMuon
The key for the output xAOD truth containers.
virtual StatusCode execute()
Function executing the algorithm.
SG::ReadHandleKey< xAOD::TruthEventContainer > m_xaodTruthEventContainerName
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
constexpr int UNDEFINED_ID
bool isStable(const T &p)
Identify if the particle is stable, i.e. has not decayed.
TruthParticle_v1 TruthParticle
Typedef to implementation.