Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
PandoraSettings.cc
Go to the documentation of this file.
1
9#include "Helpers/XmlHelper.h"
10
12
13namespace pandora
14{
15
17 m_isMonitoringEnabled(false),
18 m_shouldDisplayAlgorithmInfo(false),
19 m_singleHitTypeClusteringMode(false),
20 m_shouldCollapseMCParticlesToPfoTarget(false),
21 m_useSingleMCParticleAssociation(false),
22 m_electromagneticEnergyResolution(0.2f),
23 m_hadronicEnergyResolution(0.6f),
24 m_mcPfoSelectionRadius(500.f),
25 m_mcPfoSelectionMomentum(0.01f),
26 m_mcPfoSelectionLowEnergyNPCutOff(1.2f),
27 m_gapTolerance(0.f),
28 m_pPandora(pPandora)
29{
30}
31
32//------------------------------------------------------------------------------------------------------------------------------------------
33
37
38//------------------------------------------------------------------------------------------------------------------------------------------
39
41{
42 try
43 {
44 PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraSettings::ReadGlobalSettings(pXmlHandle));
45
46 return STATUS_CODE_SUCCESS;
47 }
48 catch (StatusCodeException &statusCodeException)
49 {
50 std::cout << "Failed to initialize pandora settings: " << statusCodeException.ToString() << std::endl;
51 return statusCodeException.GetStatusCode();
52 }
53}
54
55//------------------------------------------------------------------------------------------------------------------------------------------
56
58{
60 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
61 "IsMonitoringEnabled", m_isMonitoringEnabled));
62
64 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
65 "ShouldDisplayAlgorithmInfo", m_shouldDisplayAlgorithmInfo));
66
68 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
69 "SingleHitTypeClusteringMode", m_singleHitTypeClusteringMode));
70
72 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
73 "ShouldCollapseMCParticlesToPfoTarget", m_shouldCollapseMCParticlesToPfoTarget));
74
76 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
77 "UseSingleMCParticleAssociation", m_useSingleMCParticleAssociation));
78
80 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
81 "ElectromagneticEnergyResolution", m_electromagneticEnergyResolution));
82
83 if (m_electromagneticEnergyResolution < std::numeric_limits<float>::epsilon())
84 return STATUS_CODE_INVALID_PARAMETER;
85
87 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
88 "HadronicEnergyResolution", m_hadronicEnergyResolution));
89
90 if (m_hadronicEnergyResolution < std::numeric_limits<float>::epsilon())
91 return STATUS_CODE_INVALID_PARAMETER;
92
94 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
95 "MCPfoSelectionRadius", m_mcPfoSelectionRadius));
96
98 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
99 "MCPfoSelectionMomentum", m_mcPfoSelectionMomentum));
100
102 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(*pXmlHandle,
103 "MCPfoSelectionProtonNeutronEnergyCutOff", m_mcPfoSelectionLowEnergyNPCutOff));
104
105 return STATUS_CODE_SUCCESS;
106}
107
108} // namespace pandora
Header file for the pandora settings class.
#define PANDORA_THROW_RESULT_IF(StatusCode1, Operator, Command)
Definition StatusCodes.h:43
#define PANDORA_RETURN_RESULT_IF_AND_IF(StatusCode1, StatusCode2, Operator, Command)
Definition StatusCodes.h:31
Header file for the xml helper class.
Pandora class.
Definition Pandora.h:40
bool m_shouldCollapseMCParticlesToPfoTarget
Whether to collapse mc particle decay chains down to just the pfo target.
float m_hadronicEnergyResolution
Hadronic energy resolution, X, such that sigmaE = ( X * E / sqrt(E) )
StatusCode Initialize(const TiXmlHandle *const pXmlHandle)
Initialize pandora settings.
StatusCode ReadGlobalSettings(const TiXmlHandle *const pXmlHandle)
Read global pandora settings.
bool m_isMonitoringEnabled
Whether monitoring is enabled.
bool m_shouldDisplayAlgorithmInfo
Whether to display algorithm information during processing.
float m_mcPfoSelectionLowEnergyNPCutOff
Low energy cut-off for selection of protons/neutrons as MCPFOs.
PandoraSettings(const Pandora *const pPandora)
Constructor.
float m_mcPfoSelectionRadius
Radius used to select pfo target from a mc decay chain, units mm.
bool m_useSingleMCParticleAssociation
Whether to allow only single mc particle association to objects (largest weight)
float m_electromagneticEnergyResolution
Electromagnetic energy resolution, X, such that sigmaE = ( X * E / sqrt(E) )
bool m_singleHitTypeClusteringMode
Whether to allow only single hit types in individual clusters.
float m_mcPfoSelectionMomentum
Momentum magnitude used to select pfo target from a mc decay chain, units GeV/c.
StatusCodeException class.
std::string ToString() const
Get status code as a string.
StatusCode GetStatusCode() const
Get status code.
static StatusCode ReadValue(const TiXmlHandle &xmlHandle, const std::string &xmlElementName, T &t)
Read a value from an xml element.
Definition XmlHelper.h:136
StatusCode
The StatusCode enum.