13 m_tree.addBranch(std::make_shared<MuonVal::EventHashBranch>(
m_tree.tree()));
23 return StatusCode::SUCCESS;
28 return StatusCode::SUCCESS;
32 const EventContext& ctx{Gaudi::Hive::currentContext()};
40 std::vector<const xAOD::TruthVertex*> bsmVertices{};
41 for (
const auto* vertex : *truthVertices) {
43 bsmVertices.push_back(vertex);
48 for (
const auto* particle : *truthMuons) {
50 for(
uint i_vertex=0; i_vertex<bsmVertices.size(); ++i_vertex) {
51 const auto* bsmVertex = bsmVertices[i_vertex];
61 return StatusCode::FAILURE;
63 return StatusCode::SUCCESS;
72 if (vertex->nIncomingParticles() != 1)
75 if (vertex->nOutgoingParticles() < 2)
94 std::string indent(indentLevel * 2,
' ');
95 ATH_MSG_VERBOSE(indent <<
"Particle: PDG ID = " << particle->pdgId() <<
", pT = " << particle->pt()
96 <<
", eta = " << particle->eta() <<
", phi = " << particle->phi() <<
", charge = " << particle->charge());
97 for (
size_t i=0; i<particle->nChildren(); ++i) {
98 const auto* child = particle->child(i);
104 if (!particle->prodVtx()) {
107 if (particle->prodVtx() == vertex)
return true;
109 for (
size_t i=0; i<particle->prodVtx()->nIncomingParticles(); ++i) {
110 const auto* parent = particle->prodVtx()->incomingParticle(i);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_ALWAYS(x)
Handle class for reading from StoreGate.
MuonVal::ThreeVectorBranch m_truthMuonVertexPosition
void printChildren(const xAOD::TruthParticle *particle, int indentLevel) const
MuonVal::MuonTesterTree m_tree
SG::ReadHandleKey< xAOD::TruthVertexContainer > m_truthVertexKey
virtual StatusCode initialize() override final
virtual StatusCode execute() override final
MuonVal::MatrixBranch< uint16_t > & m_truthMuonVertexMuonLinks
std::shared_ptr< MuonVal::IParticleFourMomBranch > m_truthMuonP4
Gaudi::Property< std::vector< int > > m_pdgIdsToKeepVertex
virtual StatusCode finalize() override final
bool selectDecayVertex(const xAOD::TruthVertex *vertex) const
bool isFromVertexOfInterest(const xAOD::TruthParticle *particle, const xAOD::TruthVertex *vertex) const
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthMuonsKey
int pdgId() const
PDG ID code.
Eigen::Matrix< double, 3, 1 > Vector3D
This header ties the generic definitions in this package.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
TruthVertex_v1 TruthVertex
Typedef to implementation.
TruthVertexContainer_v1 TruthVertexContainer
Declare the latest version of the truth vertex container.
TruthParticle_v1 TruthParticle
Typedef to implementation.
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.