CheatingCosmicRayRemovalAlgorithm.cc
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArCheating/CheatingCosmicRayRemovalAlgorithm.cc
3  *
4  * @brief Implementation of the cheating cosmic ray removal algorithm class.
5  *
6  * $Log: $
7  */
8 
9 #include "Helpers/MCParticleHelper.h"
10 #include "Pandora/AlgorithmHeaders.h"
11 
13 
15 
16 using namespace pandora;
17 
18 namespace lar_content
19 {
20 
21 StatusCode CheatingCosmicRayRemovalAlgorithm::Run()
22 {
23  const MCParticleList *pMCParticleList(nullptr);
24  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetList(*this, m_mcParticleListName, pMCParticleList));
25 
26  const CaloHitList *pCaloHitList(nullptr);
27  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetList(*this, m_inputCaloHitListName, pCaloHitList));
28 
29  CaloHitList outputCaloHitList;
30 
31  for (const CaloHit *pCaloHit : *pCaloHitList)
32  {
33  try
34  {
35  const MCParticle *const pMCParticle(MCParticleHelper::GetMainMCParticle(pCaloHit));
36  if (!LArMCParticleHelper::IsCosmicRay(LArMCParticleHelper::GetParentMCParticle(pMCParticle)))
37  outputCaloHitList.push_back(pCaloHit);
38  }
39  catch (const StatusCodeException &)
40  {
41  std::cout << "CheatingCosmicRayRemovalAlgorithm::Run - Unable to determine MCParticle origin for an input CaloHit, which will be skipped."
42  << std::endl;
43  continue;
44  }
45  }
46 
47  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::SaveList(*this, outputCaloHitList, m_outputCaloHitListName));
48  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ReplaceCurrentList<CaloHit>(*this, m_outputCaloHitListName));
49 
50  return STATUS_CODE_SUCCESS;
51 }
52 
53 //------------------------------------------------------------------------------------------------------------------------------------------
54 
55 StatusCode CheatingCosmicRayRemovalAlgorithm::ReadSettings(const TiXmlHandle xmlHandle)
56 {
57  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "InputCaloHitListName", m_inputCaloHitListName));
58  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "MCParticleListName", m_mcParticleListName));
59  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "OutputCaloHitListName", m_outputCaloHitListName));
60 
61  return STATUS_CODE_SUCCESS;
62 }
63 
64 } // namespace lar_content
Header file for the cheating cosmic ray removal algorithm class.
Header file for the lar monte carlo particle helper helper class.
QTextStream & endl(QTextStream &s)