30 std::cout <<
"----> Running Algorithm Tool: " << this->
GetInstanceName() <<
", " << this->
GetType() << std::endl;
40 for (
const auto &mapEntry : mcParticleToSliceMap)
41 mcParticleVector.push_back(mapEntry.first);
44 for (
const MCParticle *
const pMCParticle : mcParticleVector)
46 const Slice &slice(mcParticleToSliceMap.at(pMCParticle));
49 sliceList.push_back(slice);
58 for (
const auto &mapEntry : caloHitListNames)
63 for (
const CaloHit *
const pCaloHit : *pCaloHitList)
66 for (
const auto &weightMapEntry : pCaloHit->GetMCParticleWeightMap())
67 mcParticleVector.push_back(weightMapEntry.first);
70 for (
const MCParticle *
const pMCParticle : mcParticleVector)
74 if (mcParticleToSliceMap.count(pParentMCParticle))
77 if (!mcParticleToSliceMap.insert(MCParticleToSliceMap::value_type(pParentMCParticle,
Slice())).second)
95 for (
const CaloHit *
const pCaloHit : *pCaloHitList)
102 MCParticleToSliceMap::iterator mapIter = mcParticleToSliceMap.find(pParentMCParticle);
104 if (mcParticleToSliceMap.end() == mapIter)
107 Slice &slice(mapIter->second);
109 caloHitList.push_back(pCaloHit);
113 if (STATUS_CODE_FAILURE == statusCodeException.
GetStatusCode())
114 throw statusCodeException;
123 return STATUS_CODE_SUCCESS;
Header file for the lar monte carlo particle helper helper class.
#define PANDORA_THROW_RESULT_IF(StatusCode1, Operator, Command)
static pandora::StatusCode GetList(const pandora::Algorithm &algorithm, const std::string &listName, const T *&pT)
Get a named list.
static const pandora::PandoraSettings * GetSettings(const pandora::Algorithm &algorithm)
Get the pandora settings instance.
void FillSlices(const pandora::Algorithm *const pAlgorithm, const pandora::HitType hitType, const SlicingAlgorithm::HitTypeToNameMap &caloHitListNames, MCParticleToSliceMap &mcParticleToSliceMap) const
Fill slices using hits from a specified view.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void RunSlicing(const pandora::Algorithm *const pAlgorithm, const SlicingAlgorithm::HitTypeToNameMap &caloHitListNames, const SlicingAlgorithm::HitTypeToNameMap &clusterListNames, SlicingAlgorithm::SliceList &sliceList)
Run the slicing tool.
std::unordered_map< const pandora::MCParticle *, SlicingAlgorithm::Slice > MCParticleToSliceMap
void InitializeMCParticleToSliceMap(const pandora::Algorithm *const pAlgorithm, const SlicingAlgorithm::HitTypeToNameMap &caloHitListNames, MCParticleToSliceMap &mcParticleToSliceMap) const
Initialize the map from parent mc particles to slice objects.
static bool SortByMomentum(const pandora::MCParticle *const pLhs, const pandora::MCParticle *const pRhs)
Sort mc particles by their momentum.
static const pandora::MCParticle * GetParentMCParticle(const pandora::MCParticle *const pMCParticle)
Get the parent mc particle.
pandora::CaloHitList m_caloHitListW
The w calo hit list.
std::map< pandora::HitType, std::string > HitTypeToNameMap
pandora::CaloHitList m_caloHitListU
The u calo hit list.
std::vector< Slice > SliceList
pandora::CaloHitList m_caloHitListV
The v calo hit list.
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
static const MCParticle * GetMainMCParticle(const T *const pT)
Find the mc particle making the largest contribution to a specified calo hit, track or cluster.
bool ShouldDisplayAlgorithmInfo() const
Whether to display algorithm information during processing.
const std::string & GetType() const
Get the type.
const std::string & GetInstanceName() const
Get the instance name.
StatusCodeException class.
StatusCode GetStatusCode() const
Get status code.
SlicingAlgorithm::SliceList SliceList
SlicingAlgorithm::HitTypeToNameMap HitTypeToNameMap
SlicingAlgorithm::Slice Slice
HitType
Calorimeter hit type enum.
MANAGED_CONTAINER< const CaloHit * > CaloHitList
std::vector< const MCParticle * > MCParticleVector
StatusCode
The StatusCode enum.