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

#include <Reco_V0Finder.h>

Inheritance diagram for DerivationFramework::Reco_V0Finder:
Collaboration diagram for DerivationFramework::Reco_V0Finder:

Public Member Functions

 Reco_V0Finder (const std::string &t, const std::string &n, const IInterface *p)
StatusCode initialize () override
virtual StatusCode addBranches (const EventContext &ctx) const override

Private Attributes

std::vector< std::string > m_CollectionsToCheck
ToolHandle< InDet::InDetV0FinderToolm_v0FinderTool
SG::ReadHandleKey< xAOD::EventInfom_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
SG::ReadHandleKey< xAOD::VertexContainerm_vertexKey
SG::WriteHandleKey< xAOD::VertexContainerm_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container" }
SG::WriteHandleKey< xAOD::VertexContainerm_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container" }
SG::WriteHandleKey< xAOD::VertexContainerm_laKey
SG::WriteHandleKey< xAOD::VertexContainerm_lbKey
ToolHandle< InDet::V0MainDecoratorm_v0DecoTool {this, "Decorator", "InDet::V0MainDecorator"}

Detailed Description

Definition at line 22 of file Reco_V0Finder.h.

Constructor & Destructor Documentation

◆ Reco_V0Finder()

DerivationFramework::Reco_V0Finder::Reco_V0Finder ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 14 of file Reco_V0Finder.cxx.

16 :
17 base_class(t,n,p),
18 m_v0FinderTool("InDet::V0FinderTool", this)
19 {
20
21 // Declare user-defined properties
22 declareProperty("CheckVertexContainers", m_CollectionsToCheck);
23 declareProperty("V0FinderTool", m_v0FinderTool);
24 }
std::vector< std::string > m_CollectionsToCheck
ToolHandle< InDet::InDetV0FinderTool > m_v0FinderTool

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::Reco_V0Finder::addBranches ( const EventContext & ctx) const
overridevirtual

Definition at line 50 of file Reco_V0Finder.cxx.

51 {
52
53 bool callV0Finder = false;
54 // Jpsi container and its auxilliary store
55 for(const auto &str : m_CollectionsToCheck){
56 const xAOD::VertexContainer* vertContainer = nullptr;
57 ATH_CHECK( evtStore()->retrieve(vertContainer, str) );
58 if(vertContainer->size() == 0) {
59 ATH_MSG_DEBUG("Container VertexContainer (" << str << ") is empty");
60 }else{
61 callV0Finder = true;
62 ATH_MSG_DEBUG("Container VertexContainer (" << str << ") has events N= " << vertContainer->size());
63 break;//No point checking other containers
64 }
65 }
66
67 // InDetV0 container and its auxilliary store
68 //---- Recording section: write the results to StoreGate ---//
69 SG::WriteHandle<xAOD::VertexContainer> h_V0( m_v0Key, ctx );
70 if ( h_V0.record(std::make_unique<xAOD::VertexContainer>() ,std::make_unique<xAOD::VertexAuxContainer>()).isFailure()){
71 ATH_MSG_ERROR("Storegate record of v0Container failed.");
72 return StatusCode::FAILURE;
73 }
74
75 SG::WriteHandle<xAOD::VertexContainer> h_Ks( m_ksKey, ctx );
76 if ( h_Ks.record(std::make_unique<xAOD::VertexContainer>() ,std::make_unique<xAOD::VertexAuxContainer>()).isFailure()){
77 ATH_MSG_ERROR("Storegate record of ksContainer failed.");
78 return StatusCode::FAILURE;
79 }
80
81 SG::WriteHandle<xAOD::VertexContainer> h_La( m_laKey, ctx );
82 if( h_La.record(std::make_unique<xAOD::VertexContainer>() ,std::make_unique<xAOD::VertexAuxContainer>()).isFailure()){
83 ATH_MSG_ERROR("Storegate record of laContainer failed.");
84 return StatusCode::FAILURE;
85
86 }
87 SG::WriteHandle<xAOD::VertexContainer> h_Lb( m_lbKey, ctx );
88 if(h_Lb.record(std::make_unique<xAOD::VertexContainer>() ,std::make_unique<xAOD::VertexAuxContainer>()).isFailure()){
89 ATH_MSG_ERROR("Storegate record of lbContainer failed.");
90 return StatusCode::FAILURE;
91 }
92
93 xAOD::VertexContainer* v0Container(h_V0.ptr());
94 xAOD::VertexContainer* ksContainer(h_Ks.ptr());
95 xAOD::VertexContainer* laContainer(h_La.ptr());
96 xAOD::VertexContainer* lbContainer(h_Lb.ptr());
97 // Call V0Finder
98 if (callV0Finder) {
99 const xAOD::Vertex * primaryVertex(0);
100 SG::ReadHandle<xAOD::VertexContainer> importedVxContainer( m_vertexKey, ctx );
101 ATH_CHECK(importedVxContainer.isValid());
102
103 if (importedVxContainer->size()==0){
104 ATH_MSG_WARNING("You have no primary vertices: " << importedVxContainer->size());
105 } else {
106 primaryVertex = (*importedVxContainer)[0];
107 }
108 ATH_CHECK( m_v0FinderTool->performSearch(h_V0.ptr(),
109 h_Ks.ptr(),
110 h_La.ptr(),
111 h_Lb.ptr(),
112 primaryVertex, importedVxContainer.cptr(), ctx));
113
114 ATH_MSG_DEBUG("Reco_V0Finder v0Container->size() " << v0Container->size());
115 ATH_MSG_DEBUG("Reco_V0Finder ksContainer->size() " << ksContainer->size());
116 ATH_MSG_DEBUG("Reco_V0Finder laContainer->size() " << laContainer->size());
117 ATH_MSG_DEBUG("Reco_V0Finder lbContainer->size() " << lbContainer->size());
118
119
120 SG::ReadHandle<xAOD::EventInfo> evt(m_eventInfo_key, ctx);
121 if(v0Container->size() > 500){
122 ATH_MSG_WARNING("Event Run: " << evt->runNumber() << " Event: " << evt->eventNumber() << " v0Container container size " << v0Container->size());
123 }
124 if(ksContainer->size() > 500){
125 ATH_MSG_WARNING("Event Run: " << evt->runNumber() << " Event: " << evt->eventNumber() << " ksContainer container size " << ksContainer->size());
126 }
127 if(laContainer->size() > 500){
128 ATH_MSG_WARNING("Event Run: " << evt->runNumber() << " Event: " << evt->eventNumber() << " laContainer container size " << laContainer->size());
129 }
130 ATH_CHECK(m_v0DecoTool->decorateV0(h_V0.ptr(), ctx));
131 ATH_CHECK(m_v0DecoTool->decorateks(h_Ks.ptr() ,ctx));
132 ATH_CHECK(m_v0DecoTool->decoratela(h_La.ptr(), ctx));
133 ATH_CHECK(m_v0DecoTool->decoratelb(h_Lb.ptr(), ctx));
134 }
135
136 return StatusCode::SUCCESS;
137 }
#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)
size_type size() const noexcept
Returns the number of elements in the collection.
SG::WriteHandleKey< xAOD::VertexContainer > m_v0Key
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo_key
ToolHandle< InDet::V0MainDecorator > m_v0DecoTool
SG::WriteHandleKey< xAOD::VertexContainer > m_ksKey
SG::WriteHandleKey< xAOD::VertexContainer > m_lbKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
SG::WriteHandleKey< xAOD::VertexContainer > m_laKey
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ initialize()

StatusCode DerivationFramework::Reco_V0Finder::initialize ( )
override

Definition at line 28 of file Reco_V0Finder.cxx.

29 {
30
31 ATH_MSG_DEBUG("in initialize()");
32 // get the V0Finder tool
33 ATH_CHECK( m_v0FinderTool.retrieve());
34 ATH_CHECK( m_v0DecoTool.retrieve());
35
36 ATH_CHECK(m_vertexKey.initialize());
37 ATH_CHECK(m_v0Key.initialize());
38 ATH_CHECK(m_ksKey.initialize());
39 ATH_CHECK(m_laKey.initialize());
40 ATH_CHECK(m_lbKey.initialize());
41 ATH_CHECK(m_eventInfo_key.initialize());
42
43 return StatusCode::SUCCESS;
44
45 }

Member Data Documentation

◆ m_CollectionsToCheck

std::vector<std::string> DerivationFramework::Reco_V0Finder::m_CollectionsToCheck
private

Definition at line 32 of file Reco_V0Finder.h.

◆ m_eventInfo_key

SG::ReadHandleKey<xAOD::EventInfo> DerivationFramework::Reco_V0Finder::m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
private

Definition at line 34 of file Reco_V0Finder.h.

34{this, "EventInfo", "EventInfo", "Input event information"};

◆ m_ksKey

SG::WriteHandleKey<xAOD::VertexContainer> DerivationFramework::Reco_V0Finder::m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container" }
private

Definition at line 39 of file Reco_V0Finder.h.

39{ this, "KshortContainerName", "KshortCandidates", "Ks container" };

◆ m_laKey

SG::WriteHandleKey<xAOD::VertexContainer> DerivationFramework::Reco_V0Finder::m_laKey
private
Initial value:
{ this, "LambdaContainerName", "LambdaCandidates",
"Lambda container" }

Definition at line 40 of file Reco_V0Finder.h.

40 { this, "LambdaContainerName", "LambdaCandidates",
41 "Lambda container" };

◆ m_lbKey

SG::WriteHandleKey<xAOD::VertexContainer> DerivationFramework::Reco_V0Finder::m_lbKey
private
Initial value:
{ this, "LambdabarContainerName", "LambdabarCandidates",
"Lambdabar container" }

Definition at line 42 of file Reco_V0Finder.h.

42 { this, "LambdabarContainerName", "LambdabarCandidates",
43 "Lambdabar container" };

◆ m_v0DecoTool

ToolHandle<InDet::V0MainDecorator> DerivationFramework::Reco_V0Finder::m_v0DecoTool {this, "Decorator", "InDet::V0MainDecorator"}
private

Definition at line 45 of file Reco_V0Finder.h.

45{this, "Decorator", "InDet::V0MainDecorator"};

◆ m_v0FinderTool

ToolHandle<InDet::InDetV0FinderTool> DerivationFramework::Reco_V0Finder::m_v0FinderTool
private

Definition at line 33 of file Reco_V0Finder.h.

◆ m_v0Key

SG::WriteHandleKey<xAOD::VertexContainer> DerivationFramework::Reco_V0Finder::m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container" }
private

Definition at line 38 of file Reco_V0Finder.h.

38{ this, "V0ContainerName", "V0Candidates", "V0 container" };

◆ m_vertexKey

SG::ReadHandleKey<xAOD::VertexContainer> DerivationFramework::Reco_V0Finder::m_vertexKey
private
Initial value:
{ this, "VxPrimaryCandidateName", "PrimaryVertices",
"key for retrieving vertices" }

Definition at line 35 of file Reco_V0Finder.h.

35 { this, "VxPrimaryCandidateName", "PrimaryVertices",
36 "key for retrieving vertices" };

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