Public Member Functions | Private Member Functions | Private Attributes | List of all members
lar_content::CheatingNeutrinoDaughterVerticesAlgorithm Class Reference

CheatingNeutrinoDaughterVerticesAlgorithm::Algorithm class. More...

#include <CheatingNeutrinoDaughterVerticesAlgorithm.h>

Inheritance diagram for lar_content::CheatingNeutrinoDaughterVerticesAlgorithm:

Public Member Functions

 CheatingNeutrinoDaughterVerticesAlgorithm ()
 Default constructor. More...
 

Private Member Functions

pandora::StatusCode Run ()
 
void GetMCPrimaryMap (LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
 Get the mapping from mc particle to primary, only required if collapsed mc particle hierarchy specified. More...
 
void ProcessRecoNeutrinos (const pandora::PfoList &neutrinoPfos, const LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
 Process the list of reconstructed neutrinos. More...
 
void ProcessDaughterPfo (const pandora::ParticleFlowObject *const pDaughterPfo, const LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
 Process a daughter pfo. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Attributes

bool m_collapseToPrimaryMCParticles
 Whether to collapse mc particle hierarchies to primary particles. More...
 
std::string m_mcParticleListName
 The mc particle list name, required if want to collapse mc particle hierarchy. More...
 
std::string m_neutrinoListName
 The input list of pfo list names. More...
 
std::string m_vertexListName
 The name of the output cosmic-ray vertex list. More...
 

Detailed Description

CheatingNeutrinoDaughterVerticesAlgorithm::Algorithm class.

Definition at line 21 of file CheatingNeutrinoDaughterVerticesAlgorithm.h.

Constructor & Destructor Documentation

lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::CheatingNeutrinoDaughterVerticesAlgorithm ( )

Default constructor.

Definition at line 20 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

21 {
22 }
bool m_collapseToPrimaryMCParticles
Whether to collapse mc particle hierarchies to primary particles.

Member Function Documentation

void lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::GetMCPrimaryMap ( LArMCParticleHelper::MCRelationMap mcPrimaryMap) const
private

Get the mapping from mc particle to primary, only required if collapsed mc particle hierarchy specified.

Parameters
mcPrimaryMapto receive the mapping from mc particle to primary

Definition at line 52 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

53 {
55  {
56  const MCParticleList *pMCParticleList(nullptr);
57  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetList(*this, m_mcParticleListName, pMCParticleList));
58 
59  LArMCParticleHelper::GetMCPrimaryMap(pMCParticleList, mcPrimaryMap);
60  }
61 }
std::string m_mcParticleListName
The mc particle list name, required if want to collapse mc particle hierarchy.
static void GetMCPrimaryMap(const pandora::MCParticleList *const pMCParticleList, MCRelationMap &mcPrimaryMap)
Get mapping from individual mc particles (in a provided list) and their primary parent mc particles...
bool m_collapseToPrimaryMCParticles
Whether to collapse mc particle hierarchies to primary particles.
void lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::ProcessDaughterPfo ( const pandora::ParticleFlowObject *const  pDaughterPfo,
const LArMCParticleHelper::MCRelationMap mcPrimaryMap 
) const
private

Process a daughter pfo.

Parameters
pDaughterPfothe address of a daughter pfo
mcPrimaryMapthe mapping from mc particle to primary, only required if collapsed mc particle hierarchy specified

Definition at line 92 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

94 {
95  const MCParticle *pMCParticle(LArMCParticleHelper::GetMainMCParticle(pDaughterPfo));
96 
98  {
99  LArMCParticleHelper::MCRelationMap::const_iterator primaryIter = mcPrimaryMap.find(pMCParticle);
100 
101  if (mcPrimaryMap.end() == primaryIter)
102  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
103 
104  pMCParticle = primaryIter->second;
105  }
106 
107  const VertexList *pVertexList(nullptr);
108  std::string vertexListName;
109  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::CreateTemporaryListAndSetCurrent(*this, pVertexList, vertexListName));
110 
111  PandoraContentApi::Vertex::Parameters parameters;
112  parameters.m_position = pMCParticle->GetVertex();
113  parameters.m_vertexLabel = VERTEX_INTERACTION;
114  parameters.m_vertexType = VERTEX_3D;
115 
116  const Vertex *pVertex(nullptr);
117  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Vertex::Create(*this, parameters, pVertex));
118 
119  if (!pVertexList->empty())
120  {
121  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::SaveList<Vertex>(*this, m_vertexListName));
122  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::AddToPfo<Vertex>(*this, pDaughterPfo, pVertex));
123  }
124 }
std::string m_vertexListName
The name of the output cosmic-ray vertex list.
std::string string
Definition: nybbler.cc:12
intermediate_table::const_iterator const_iterator
static const pandora::MCParticle * GetMainMCParticle(const pandora::ParticleFlowObject *const pPfo)
Find the mc particle making the largest contribution to 2D clusters in a specified pfo...
bool m_collapseToPrimaryMCParticles
Whether to collapse mc particle hierarchies to primary particles.
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
Definition: ModuleGraph.h:25
std::list< Vertex > VertexList
Definition: DCEL.h:182
void lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::ProcessRecoNeutrinos ( const pandora::PfoList &  neutrinoPfos,
const LArMCParticleHelper::MCRelationMap mcPrimaryMap 
) const
private

Process the list of reconstructed neutrinos.

Parameters
neutrinoPfosthe list of neutrino pfos
mcPrimaryMapthe mapping from mc particle to primary, only required if collapsed mc particle hierarchy specified

Definition at line 65 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

66 {
67  for (const ParticleFlowObject *const pNeutrinoPfo : neutrinoPfos)
68  {
69  PfoList daughterPfos;
70  LArPfoHelper::GetAllDownstreamPfos(pNeutrinoPfo, daughterPfos);
71 
72  PfoList::iterator neutrinoIter(std::find(daughterPfos.begin(), daughterPfos.end(), pNeutrinoPfo));
73 
74  if (daughterPfos.end() != neutrinoIter)
75  daughterPfos.erase(neutrinoIter);
76 
77  for (const ParticleFlowObject *const pDaughterPfo : daughterPfos)
78  {
79  try
80  {
81  this->ProcessDaughterPfo(pDaughterPfo, mcPrimaryMap);
82  }
83  catch (const StatusCodeException &)
84  {
85  }
86  }
87  }
88 }
intermediate_table::iterator iterator
void ProcessDaughterPfo(const pandora::ParticleFlowObject *const pDaughterPfo, const LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
Process a daughter pfo.
static void GetAllDownstreamPfos(const pandora::PfoList &inputPfoList, pandora::PfoList &outputPfoList)
Get a flat list of all pfos, recursively, of all daughters associated with those pfos in an input lis...
StatusCode lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
private

Definition at line 128 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

129 {
130  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
131  XmlHelper::ReadValue(xmlHandle, "CollapseToPrimaryMCParticles", m_collapseToPrimaryMCParticles));
132 
134  {
135  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "MCParticleListName", m_mcParticleListName));
136  }
137 
138  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "NeutrinoPfoListName", m_neutrinoListName));
139 
140  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "OutputVertexListName", m_vertexListName));
141 
142  return STATUS_CODE_SUCCESS;
143 }
std::string m_mcParticleListName
The mc particle list name, required if want to collapse mc particle hierarchy.
std::string m_vertexListName
The name of the output cosmic-ray vertex list.
bool m_collapseToPrimaryMCParticles
Whether to collapse mc particle hierarchies to primary particles.
StatusCode lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::Run ( )
private

Definition at line 26 of file CheatingNeutrinoDaughterVerticesAlgorithm.cc.

27 {
28  const PfoList *pPfoList(nullptr);
29  PANDORA_THROW_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*this, m_neutrinoListName, pPfoList));
30 
31  if (!pPfoList)
32  {
33  if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
34  std::cout << "CheatingNeutrinoDaughterVerticesAlgorithm: pfo list unavailable." << std::endl;
35 
36  return STATUS_CODE_SUCCESS;
37  }
38 
40  this->GetMCPrimaryMap(mcPrimaryMap);
41 
42  PfoList neutrinoPfos;
43  LArPfoHelper::GetRecoNeutrinos(pPfoList, neutrinoPfos);
44 
45  this->ProcessRecoNeutrinos(neutrinoPfos, mcPrimaryMap);
46 
47  return STATUS_CODE_SUCCESS;
48 }
static void GetRecoNeutrinos(const pandora::PfoList *const pPfoList, pandora::PfoList &recoNeutrinos)
Get neutrino pfos from an input pfo list.
void GetMCPrimaryMap(LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
Get the mapping from mc particle to primary, only required if collapsed mc particle hierarchy specifi...
void ProcessRecoNeutrinos(const pandora::PfoList &neutrinoPfos, const LArMCParticleHelper::MCRelationMap &mcPrimaryMap) const
Process the list of reconstructed neutrinos.
std::unordered_map< const pandora::MCParticle *, const pandora::MCParticle * > MCRelationMap
QTextStream & endl(QTextStream &s)

Member Data Documentation

bool lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::m_collapseToPrimaryMCParticles
private

Whether to collapse mc particle hierarchies to primary particles.

Definition at line 57 of file CheatingNeutrinoDaughterVerticesAlgorithm.h.

std::string lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::m_mcParticleListName
private

The mc particle list name, required if want to collapse mc particle hierarchy.

Definition at line 58 of file CheatingNeutrinoDaughterVerticesAlgorithm.h.

std::string lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::m_neutrinoListName
private

The input list of pfo list names.

Definition at line 60 of file CheatingNeutrinoDaughterVerticesAlgorithm.h.

std::string lar_content::CheatingNeutrinoDaughterVerticesAlgorithm::m_vertexListName
private

The name of the output cosmic-ray vertex list.

Definition at line 61 of file CheatingNeutrinoDaughterVerticesAlgorithm.h.


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