ATLAS Offline Software
Loading...
Searching...
No Matches
DerivationFramework::TruthPVCollectionMaker Class Reference

#include <TruthPVCollectionMaker.h>

Inheritance diagram for DerivationFramework::TruthPVCollectionMaker:
Collaboration diagram for DerivationFramework::TruthPVCollectionMaker:

Public Member Functions

virtual StatusCode initialize () override final
virtual StatusCode addBranches (const EventContext &ctx) const override final

Private Attributes

SG::ReadHandleKey< xAOD::TruthEventContainerm_eventsKey {this, "EventsKey", "TruthEvents"}
 Input event collection (navigates to the vertices)
SG::WriteHandleKey< xAOD::TruthVertexContainerm_outVtxKey {this, "NewCollectionName", ""}
 Output collection name.

Detailed Description

Definition at line 18 of file TruthPVCollectionMaker.h.

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::TruthPVCollectionMaker::addBranches ( const EventContext & ctx) const
finaloverridevirtual

Definition at line 34 of file TruthPVCollectionMaker.cxx.

35{
36 // Retrieve truth collections
37 SG::ReadHandle<xAOD::TruthEventContainer> importedTruthEvents{m_eventsKey, ctx};
38 if (!importedTruthEvents.isValid()) {
39 ATH_MSG_ERROR("No TruthEvent collection with name " << m_eventsKey.fullKey() << " found in StoreGate!");
40 return StatusCode::FAILURE;
41 }
42
43 // Create the new vertex containers
44 SG::WriteHandle<xAOD::TruthVertexContainer> writeHandleVtx{m_outVtxKey, ctx};
45 ATH_CHECK(writeHandleVtx.record(std::make_unique<xAOD::TruthVertexContainer>(),
46 std::make_unique<xAOD::TruthVertexAuxContainer>()));
47 xAOD::TruthVertexContainer* newVertexCollection = writeHandleVtx.ptr();
48 ATH_MSG_DEBUG( "Recorded new TruthVertexContainer with key: " << m_outVtxKey.fullKey());
49
50 // Go through the events, add one vertex for each event
51 for (const auto * event : *importedTruthEvents){
52 // Just in case there is a place-holder
53 if (!event) continue;
54 // Try with the signal process vertex
55 const xAOD::TruthVertex* old_vert(event->signalProcessVertex());
56 // If that's not there, grab the first vertex
57 if (!old_vert && event->nTruthVertices()>0){
58 old_vert = event->truthVertex(0);
59 }
60 if (old_vert){
61 // Hit -- copy it!
62 // Make a new vertex and add it to the container
63 xAOD::TruthVertex* xTruthVertex = new xAOD::TruthVertex();
64 newVertexCollection->push_back( xTruthVertex );
65 // Set properties
66 xTruthVertex->setStatus(HepMC::status(old_vert));
67 xTruthVertex->setUid(HepMC::uniqueID(old_vert));
68 xTruthVertex->setX(old_vert->x());
69 xTruthVertex->setY(old_vert->y());
70 xTruthVertex->setZ(old_vert->z());
71 xTruthVertex->setT(old_vert->t());
72 } else {
73 ATH_MSG_WARNING("No signal vertex or vertices associated to an input event!");
74 }
75 }
76 return StatusCode::SUCCESS;
77}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::WriteHandleKey< xAOD::TruthVertexContainer > m_outVtxKey
Output collection name.
SG::ReadHandleKey< xAOD::TruthEventContainer > m_eventsKey
Input event collection (navigates to the vertices)
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.
pointer_type ptr()
Dereference the pointer.
void setStatus(int value)
Set the vertex status.
void setZ(float value)
Set the vertex's longitudinal distance from the origin.
void setUid(int value)
Set the vertex unique ID.
void setT(float value)
Set the vertex time.
void setX(float value)
Set the x displacement of the vertex.
void setY(float value)
Set the y displacement of the vertex.
int uniqueID(const T &p)
int status(const T &p)
TruthVertex_v1 TruthVertex
Typedef to implementation.
Definition TruthVertex.h:15
TruthVertexContainer_v1 TruthVertexContainer
Declare the latest version of the truth vertex container.

◆ initialize()

StatusCode DerivationFramework::TruthPVCollectionMaker::initialize ( )
finaloverridevirtual

Definition at line 19 of file TruthPVCollectionMaker.cxx.

20{
21 ATH_MSG_VERBOSE("initialize() ...");
22
23 // Check configuration, print errors, warning, and information for the user
24 ATH_CHECK(m_eventsKey.initialize());
25 ATH_MSG_INFO("Using " << m_eventsKey.fullKey() << " as the source collections for new truth collections");
26 ATH_CHECK(m_outVtxKey.initialize());
27 ATH_MSG_INFO("New truth vertex collection key: " << m_outVtxKey.fullKey() );
28
29 return StatusCode::SUCCESS;
30}
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)

Member Data Documentation

◆ m_eventsKey

SG::ReadHandleKey<xAOD::TruthEventContainer> DerivationFramework::TruthPVCollectionMaker::m_eventsKey {this, "EventsKey", "TruthEvents"}
private

Input event collection (navigates to the vertices)

Definition at line 27 of file TruthPVCollectionMaker.h.

27{this, "EventsKey", "TruthEvents"};

◆ m_outVtxKey

SG::WriteHandleKey<xAOD::TruthVertexContainer> DerivationFramework::TruthPVCollectionMaker::m_outVtxKey {this, "NewCollectionName", ""}
private

Output collection name.

Definition at line 28 of file TruthPVCollectionMaker.h.

28{this, "NewCollectionName", ""};

The documentation for this class was generated from the following files: