Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
CaloHitManager.h
Go to the documentation of this file.
1
8#ifndef PANDORA_CALO_HIT_MANAGER_H
9#define PANDORA_CALO_HIT_MANAGER_H 1
10
12#include "Managers/Metadata.h"
13
16
17namespace pandora
18{
19
23class CaloHitManager : public InputObjectManager<CaloHit>
24{
25public:
31 CaloHitManager(const Pandora *const pPandora);
32
37
38private:
46 StatusCode Create(const object_creation::CaloHit::Parameters &parameters, const CaloHit *&pCaloHit,
48
55 StatusCode AlterMetadata(const CaloHit *const pCaloHit, const object_creation::CaloHit::Metadata &metadata) const;
56
64 template <typename T>
65 bool IsAvailable(const T *const pT) const;
66
73 template <typename T>
74 StatusCode SetAvailability(const T *const pT, bool isAvailable);
75
77
85 StatusCode CreateTemporaryListAndSetCurrent(const Algorithm *const pAlgorithm, const ClusterList &clusterList, std::string &temporaryListName);
86
91
98
103
113 StatusCode FragmentCaloHit(const CaloHit *const pOriginalCaloHit, const float fraction1, const CaloHit *&pDaughterCaloHit1,
115
124 StatusCode MergeCaloHitFragments(const CaloHit *const pFragmentCaloHit1, const CaloHit *const pFragmentCaloHit2,
126
135 bool CanFragmentCaloHit(const CaloHit *const pOriginalCaloHit, const float fraction1) const;
136
145 bool CanMergeCaloHitFragments(const CaloHit *const pFragmentCaloHit1, const CaloHit *const pFragmentCaloHit2) const;
146
154 StatusCode InitializeReclustering(const Algorithm *const pAlgorithm, const ClusterList &clusterList,
155 const std::string &originalReclusterListName);
156
163 StatusCode PrepareForClustering(const Algorithm *const pAlgorithm, const std::string &newReclusterListName);
164
171 StatusCode EndReclustering(const Algorithm *const pAlgorithm, const std::string &selectedReclusterListName);
172
178 StatusCode Update(const CaloHitMetadata &caloHitMetadata);
179
185 StatusCode Update(const CaloHitReplacement &caloHitReplacement);
186
193 StatusCode Update(CaloHitList *const pCaloHitList, const CaloHitReplacement &caloHitReplacement);
194
198
199 friend class PandoraApiImpl;
201 friend class PandoraImpl;
202};
203
204} // namespace pandora
205
206#endif // #ifndef PANDORA_CALO_HIT_MANAGER_H
Header file for the input object manager class.
Header file for metadata classes.
Header file for pandora object creation classes.
Header file defining relevant internal typedefs, sort and string conversion functions.
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
Definition Algorithm.h:21
CaloHit class.
Definition CaloHit.h:26
CaloHitManager class.
StatusCode PrepareForClustering(const Algorithm *const pAlgorithm, const std::string &newReclusterListName)
Prepare metadata to allow for construction of new recluster candidates.
StatusCode SetAvailability(const T *const pT, bool isAvailable)
Set availability of a calo hit, or a list of calo hits, to be added to a cluster.
StatusCode MatchCaloHitsToMCPfoTargets(const UidToMCParticleWeightMap &caloHitToPfoTargetsMap)
Match calo hits to their correct mc particles for particle flow.
ReclusterMetadata * m_pCurrentReclusterMetadata
Address of the current recluster metadata.
bool CanFragmentCaloHit(const CaloHit *const pOriginalCaloHit, const float fraction1) const
Whether a calo hit can be fragmented into two daughter calo hits with the specified energy division.
StatusCode RemoveAllMCParticleRelationships()
Remove all mc particle associations that have been registered with calo hits.
StatusCode CreateTemporaryListAndSetCurrent(const Algorithm *const pAlgorithm, const ClusterList &clusterList, std::string &temporaryListName)
Change the current calo hit list to the constituent hits of a cluster list.
bool CanMergeCaloHitFragments(const CaloHit *const pFragmentCaloHit1, const CaloHit *const pFragmentCaloHit2) const
Whether two candidate calo hit fragments can be merged.
StatusCode FragmentCaloHit(const CaloHit *const pOriginalCaloHit, const float fraction1, const CaloHit *&pDaughterCaloHit1, const CaloHit *&pDaughterCaloHit2, const ObjectFactory< object_creation::CaloHitFragment::Parameters, object_creation::CaloHitFragment::Object > &factory)
Fragment a calo hit into two daughter calo hits, with a specified energy division.
unsigned int m_nReclusteringProcesses
The number of reclustering algorithms currently in operation.
bool IsAvailable(const T *const pT) const
Is a calo hit, or a list of calo hits, available to add to a cluster.
StatusCode EndReclustering(const Algorithm *const pAlgorithm, const std::string &selectedReclusterListName)
End reclustering operations and update calo hit lists accordingly.
StatusCode AlterMetadata(const CaloHit *const pCaloHit, const object_creation::CaloHit::Metadata &metadata) const
Alter the metadata information stored in a calo hit.
StatusCode Create(const object_creation::CaloHit::Parameters &parameters, const CaloHit *&pCaloHit, const ObjectFactory< object_creation::CaloHit::Parameters, object_creation::CaloHit::Object > &factory)
Create calo hit.
ReclusterMetadataList m_reclusterMetadataList
The recluster metadata list.
StatusCode Update(const CaloHitMetadata &caloHitMetadata)
Update all calo hit lists to account for changes by daughter recluster processes.
StatusCode InitializeReclustering(const Algorithm *const pAlgorithm, const ClusterList &clusterList, const std::string &originalReclusterListName)
Initialize reclustering operations, preparing lists and metadata accordingly.
StatusCode MergeCaloHitFragments(const CaloHit *const pFragmentCaloHit1, const CaloHit *const pFragmentCaloHit2, const CaloHit *&pMergedCaloHit, const ObjectFactory< object_creation::CaloHitFragment::Parameters, object_creation::CaloHitFragment::Object > &factory)
Merge two calo hit fragments, originally from the same parent hit, to form a new calo hit.
StatusCode EraseAllContent()
Erase all calo hit manager content.
CaloHitMetadata class.
Definition Metadata.h:39
InputObjectManager class.
ObjectFactory class responsible for extended pandora object creation.
PandoraApiImpl class.
PandoraContentApiImpl class.
Pandora class.
Definition Pandora.h:40
PandoraImpl class.
Definition PandoraImpl.h:18
ReclusterMetadata class.
Definition Metadata.h:121
MANAGED_CONTAINER< const Cluster * > ClusterList
std::vector< ReclusterMetadata * > ReclusterMetadataList
Definition Metadata.h:176
MANAGED_CONTAINER< const CaloHit * > CaloHitList
StatusCode
The StatusCode enum.
std::unordered_map< Uid, MCParticleWeightMap > UidToMCParticleWeightMap
CaloHitReplacement class.
Definition Metadata.h:23