LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
MultiPandoraApi.h
Go to the documentation of this file.
1 
8 #ifndef MULTI_PANDORA_API_H
9 #define MULTI_PANDORA_API_H 1
10 
11 #include <unordered_map>
12 #include <vector>
13 
14 namespace pandora
15 {
16 class Pandora;
17 class ParticleFlowObject;
18 } // namespace pandora
19 
21 
22 typedef std::vector<const pandora::Pandora *> PandoraInstanceList;
23 typedef std::unordered_map<const pandora::Pandora *, PandoraInstanceList> PandoraInstanceMap;
24 
25 //------------------------------------------------------------------------------------------------------------------------------------------
26 
31 {
32 public:
38  static const PandoraInstanceMap &GetPandoraInstanceMap();
39 
48  static const pandora::Pandora *GetPandoraInstance(const pandora::Pandora *const pPrimaryPandora, const unsigned int volumeId);
49 
57  static const PandoraInstanceList &GetDaughterPandoraInstanceList(const pandora::Pandora *const pPrimaryPandora);
58 
66  static const pandora::Pandora *GetPrimaryPandoraInstance(const pandora::Pandora *const pDaughterPandora);
67 
75  static unsigned int GetVolumeId(const pandora::Pandora *const pPandora);
76 
84  static void AddPrimaryPandoraInstance(const pandora::Pandora *const pPrimaryPandora);
85 
92  static void AddDaughterPandoraInstance(const pandora::Pandora *const pPrimaryPandora, const pandora::Pandora *const pDaughterPandora);
93 
99  static void DeletePandoraInstances(const pandora::Pandora *const pPrimaryPandora);
100 
107  static void SetVolumeId(const pandora::Pandora *const pPandora, const unsigned int volumeId);
108 
109 private:
111 };
112 
113 #endif // #ifndef MULTI_PANDORA_API_H
MultiPandoraApi class.
std::vector< const pandora::Pandora * > PandoraInstanceList
std::unordered_map< const pandora::Pandora *, PandoraInstanceList > PandoraInstanceMap
MultiPandoraApiImpl class.
static MultiPandoraApiImpl m_multiPandoraApiImpl
The multi pandora api implementation.