APRILContent
Algorithm of Particle Reconstruction for ILC - implementation with PandoraSDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations
PerfectClusteringAlgorithm.h
Go to the documentation of this file.
1 
10 #ifndef PERFECTCLUSTERINGALGORITHM_H
11 #define PERFECTCLUSTERINGALGORITHM_H 1
12 
13 #include "Pandora/Algorithm.h"
14 
15 namespace april_content
16 {
17 
21 class PerfectClusteringAlgorithm : public pandora::Algorithm
22 {
23 public:
27  class Factory : public pandora::AlgorithmFactory
28  {
29  public:
30  pandora::Algorithm *CreateAlgorithm() const;
31  };
32 
37 
38 protected:
39  virtual bool SelectMCParticlesForClustering(const pandora::MCParticle *const pMCParticle) const;
40 
41 private:
42  pandora::StatusCode Run();
43  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
44 
45  typedef std::map<const pandora::MCParticle*, pandora::CaloHitList*> MCParticleToHitListMap;
46 
53  void SimpleMCParticleCollection(const pandora::CaloHit *const pCaloHit, MCParticleToHitListMap &mcParticleToHitListMap) const;
54 
61  void FullMCParticleCollection(const pandora::CaloHit *const pCaloHit, MCParticleToHitListMap &mcParticleToHitListMap) const;
62 
70  void AddToHitListMap(const pandora::CaloHit *const pCaloHitToAdd, const pandora::MCParticle *const pMCParticle, MCParticleToHitListMap &mcParticleToHitListMap) const;
71 
77  void CreateClusters(const MCParticleToHitListMap &mcParticleToHitListMap) const;
78 
79  pandora::IntVector m_particleIdList;
84 };
85 
86 //------------------------------------------------------------------------------------------------------------------------------------------
87 
88 inline pandora::Algorithm *PerfectClusteringAlgorithm::Factory::CreateAlgorithm() const
89 {
90  return new PerfectClusteringAlgorithm();
91 }
92 
93 }
94 
95 #endif // PERFECTCLUSTERINGALGORITHM_H
void FullMCParticleCollection(const pandora::CaloHit *const pCaloHit, MCParticleToHitListMap &mcParticleToHitListMap) const
Full mc particle collection, using map of mc particles to hit weights; fragment calo hits where neces...
Definition: PerfectClusteringAlgorithm.cc:103
void AddToHitListMap(const pandora::CaloHit *const pCaloHitToAdd, const pandora::MCParticle *const pMCParticle, MCParticleToHitListMap &mcParticleToHitListMap) const
Add a calo hit to the mc particle to hit list map.
Definition: PerfectClusteringAlgorithm.cc:150
void CreateClusters(const MCParticleToHitListMap &mcParticleToHitListMap) const
Create clusters based on information in the mc particle to hit list map.
Definition: PerfectClusteringAlgorithm.cc:169
float m_minWeightFraction
The minimum mc particle calo hit weight for clustering consideration.
Definition: PerfectClusteringAlgorithm.h:83
PerfectClusteringAlgorithm class.
Definition: PerfectClusteringAlgorithm.h:21
bool m_shouldUseOnlyECalHits
Whether to only use ecal hits in the clustering algorithm.
Definition: PerfectClusteringAlgorithm.h:80
bool m_shouldUseIsolatedHits
Whether to use isolated hits in the clustering algorithm.
Definition: PerfectClusteringAlgorithm.h:81
void SimpleMCParticleCollection(const pandora::CaloHit *const pCaloHit, MCParticleToHitListMap &mcParticleToHitListMap) const
Simple mc particle collection, using main mc particle associated with each calo hit.
Definition: PerfectClusteringAlgorithm.cc:91
pandora::IntVector m_particleIdList
list of particle ids of MCPFOs to be selected
Definition: PerfectClusteringAlgorithm.h:79
PerfectClusteringAlgorithm()
Default constructor.
Definition: PerfectClusteringAlgorithm.cc:20
bool m_simpleMCParticleCollection
Whether to use simple mc particle collection mechanism, or full mechanism.
Definition: PerfectClusteringAlgorithm.h:82
Factory class for instantiating algorithm.
Definition: PerfectClusteringAlgorithm.h:27