Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:15:19

0001 /**
0002  *  @file   PandoraSDK/include/Managers/VertexManager.h
0003  * 
0004  *  @brief  Header file for the vertex manager class.
0005  * 
0006  *  $Log: $
0007  */
0008 #ifndef PANDORA_VERTEX_MANAGER_H
0009 #define PANDORA_VERTEX_MANAGER_H 1
0010 
0011 #include "Managers/AlgorithmObjectManager.h"
0012 
0013 #include "Pandora/ObjectCreation.h"
0014 #include "Pandora/PandoraInternal.h"
0015 
0016 namespace pandora
0017 {
0018 
0019 /**
0020  *    @brief VertexManager class
0021  */
0022 class VertexManager : public AlgorithmObjectManager<Vertex>
0023 {
0024 public:
0025     /**
0026      *  @brief  Constructor
0027      * 
0028      *  @param  pPandora address of the associated pandora object
0029      */
0030     VertexManager(const Pandora *const pPandora);
0031 
0032     /**
0033      *  @brief  Destructor
0034      */
0035     ~VertexManager();
0036 
0037 private:
0038     /**
0039      *  @brief  Create a vertex
0040      * 
0041      *  @param  parameters the vertex parameters
0042      *  @param  pVertex to receive the address of the vertex created
0043      *  @param  factory the factory that performs the object allocation
0044      */
0045     StatusCode Create(const object_creation::Vertex::Parameters &parameters, const Vertex *&pVertex,
0046         const ObjectFactory<object_creation::Vertex::Parameters, object_creation::Vertex::Object> &factory);
0047 
0048     /**
0049      *  @brief  Alter the metadata information stored in a vertex
0050      * 
0051      *  @param  pVertex address of the vertex to modify
0052      *  @param  metaData the metadata (only populated metadata fields will be propagated to the object)
0053      */
0054     StatusCode AlterMetadata(const Vertex *const pVertex, const object_creation::Vertex::Metadata &metadata) const;
0055 
0056     /**
0057      *  @brief  Is a vertex, or a list of vertices, available to add to a particle flow object
0058      * 
0059      *  @param  pT address of the object or object list
0060      * 
0061      *  @return boolean
0062      */
0063     template <typename T>
0064     bool IsAvailable(const T *const pT) const;
0065 
0066     /**
0067      *  @brief  Set availability of a vertex, or a list of vertices, to be added to a particle flow object
0068      * 
0069      *  @param  pT the address of the object or object list
0070      *  @param  isAvailable the availability
0071      */
0072     template <typename T>
0073     void SetAvailability(const T *const pT, bool isAvailable) const;
0074 
0075     friend class PandoraContentApiImpl;
0076     friend class PandoraImpl;
0077 };
0078 
0079 } // namespace pandora
0080 
0081 #endif // #ifndef PANDORA_VERTEX_MANAGER_H