Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:20:10

0001 /**
0002  *  @file   PandoraSDK/include/Pandora/Pandora.h
0003  *
0004  *  @brief  Header file for the pandora class.
0005  *
0006  *  $Log: $
0007  */
0008 #ifndef PANDORA_MAIN_H
0009 #define PANDORA_MAIN_H 1
0010 
0011 #include "Pandora/PandoraInputTypes.h"
0012 #include "Pandora/StatusCodes.h"
0013 
0014 #include <string>
0015 
0016 namespace pandora
0017 {
0018 
0019 class AlgorithmManager;
0020 class CaloHitManager;
0021 class ClusterManager;
0022 class EnergyCorrectionsPlugin;
0023 class EventContext;
0024 class EventContextObject;
0025 class GeometryManager;
0026 class MCManager;
0027 class PandoraApiImpl;
0028 class PandoraContentApiImpl;
0029 class PandoraImpl;
0030 class PandoraSettings;
0031 class ParticleFlowObjectManager;
0032 class ParticleIdPlugin;
0033 class PluginManager;
0034 class TrackManager;
0035 class VertexManager;
0036 
0037 //------------------------------------------------------------------------------------------------------------------------------------------
0038 
0039 /**
0040  *    @brief Pandora class
0041  */
0042 class Pandora
0043 {
0044 public:
0045     /**
0046      *  @brief  Default constructor
0047      *
0048      *  @param  name descriptive name or label for the pandora instance
0049      */
0050     Pandora(const std::string &name = "");
0051 
0052     /**
0053      *  @brief  Destructor
0054      */
0055     ~Pandora();
0056 
0057     /**
0058      *  @brief  Get the pandora api impl
0059      *
0060      *  @return Address of the pandora api impl
0061      */
0062     const PandoraApiImpl *GetPandoraApiImpl() const;
0063 
0064     /**
0065      *  @brief  Get the pandora content api impl
0066      *
0067      *  @return Address of the pandora content api impl
0068      */
0069     const PandoraContentApiImpl *GetPandoraContentApiImpl() const;
0070 
0071     /**
0072      *  @brief  Get the pandora event instance
0073      *
0074      *  @param  key the key associated with the desired event context object
0075      * 
0076      *  @return the address of the pandora event instance
0077      */
0078     const EventContextObject *GetEventContextObject(const std::string &key) const;
0079 
0080     /**
0081      *  @brief  Get the pandora settings instance
0082      *
0083      *  @return the address of the pandora settings instance
0084      */
0085     const PandoraSettings *GetSettings() const;
0086 
0087     /**
0088      *  @brief  Get the pandora geometry instance
0089      *
0090      *  @return the address of the pandora geometry instance
0091      */
0092     const GeometryManager *GetGeometry() const;
0093 
0094     /**
0095      *  @brief  Get the pandora plugin instance, providing access to user registered functions and calculators
0096      *
0097      *  @return the address of the pandora plugin instance
0098      */
0099     const PluginManager *GetPlugins() const;
0100 
0101     /**
0102      *  @brief  Get the descriptive name or label for the pandora instance
0103      *
0104      *  @return the descriptive name or label for the pandora instance
0105      */
0106     const std::string &GetName() const;
0107 
0108     /**
0109      *  @brief  Get run number of the input data
0110      *
0111      *  @return the run number of the input data
0112      */
0113     unsigned int GetRun() const;
0114 
0115     /**
0116      *  @brief  Get subrun number of the input data
0117      *
0118      *  @return the subrun number of the input data
0119      */
0120     unsigned int GetSubrun() const;
0121 
0122     /**
0123      *  @brief  Get event number of the input data
0124      *
0125      *  @return the event number of the input data
0126      */
0127     unsigned int GetEvent() const;
0128 
0129 private:
0130     /**
0131      *  @brief  Prepare event, calculating properties of input objects for later use in algorithms
0132      */
0133     StatusCode PrepareEvent();
0134 
0135     /**
0136      *  @brief  Process event, calling event prepare event function, then running the algorithms
0137      */
0138     StatusCode ProcessEvent();
0139 
0140     /**
0141      *  @brief  Reset event, calling manager reset functions and any registered reset functions
0142      */
0143     StatusCode ResetEvent();
0144 
0145     /**
0146      *  @brief  Get event number of the input data
0147      *
0148      *  @param  the run number of the input data
0149      *  @param  the subrun number of the input data
0150      *  @param  the event number of the input data
0151      */
0152     StatusCode SetEventInformation(const unsigned int run, const unsigned int subrun, const unsigned int event);
0153 
0154     /**
0155      *  @brief  Adds an EventContextObject object to this event context.
0156      *
0157      *  @param  key the key to associate with the event context object
0158      *  @param  pObject the object to be stored
0159      */
0160     void AddEventContextObject(const std::string &key, const EventContextObject *const pObject);
0161 
0162     /**
0163      *  @brief  Replaces an EventContextObject object within this event context.
0164      *
0165      *  @param  key the key of the event context object to replace
0166      *  @param  pObject the new object to be stored
0167      */
0168     void ReplaceEventContextObject(const std::string &key, const EventContextObject *const pObject);
0169 
0170     /**
0171      *  @brief  Remove an EventContextObject object from this event context.
0172      *
0173      *  @param  key the key of the event context object to be removed
0174      */
0175     void RemoveEventContextObject(const std::string &key);
0176 
0177     /**
0178      *  @brief  Read pandora settings
0179      *
0180      *  @param  xmlFileName the name of the xml file containing the settings
0181      */
0182     StatusCode ReadSettings(const std::string &xmlFileName);
0183 
0184     AlgorithmManager *m_pAlgorithmManager;    ///< The algorithm manager
0185     CaloHitManager *m_pCaloHitManager;        ///< The hit manager
0186     ClusterManager *m_pClusterManager;        ///< The cluster manager
0187     GeometryManager *m_pGeometryManager;      ///< The geometry manager
0188     MCManager *m_pMCManager;                  ///< The MC manager
0189     ParticleFlowObjectManager *m_pPfoManager; ///< The particle flow object manager
0190     PluginManager *m_pPluginManager;          ///< The pandora plugin manager
0191     TrackManager *m_pTrackManager;            ///< The track manager
0192     VertexManager *m_pVertexManager;          ///< The vertex manager
0193 
0194     PandoraSettings *m_pPandoraSettings;             ///< The pandora settings instance
0195     PandoraApiImpl *m_pPandoraApiImpl;               ///< The pandora api implementation
0196     PandoraContentApiImpl *m_pPandoraContentApiImpl; ///< The pandora content api implementation
0197     PandoraImpl *m_pPandoraImpl;                     ///< The pandora implementation
0198     EventContext *m_pEventContext;  ///< The event instance
0199 
0200     std::string m_name; ///< The descriptive name or label for the pandora instance
0201     InputUInt m_run;    ///< the run number of the input data
0202     InputUInt m_subrun; ///< the subrun number of the input data
0203     InputUInt m_event;  ///< the event number of the input data
0204 
0205     friend class PandoraApiImpl;
0206     friend class PandoraContentApiImpl;
0207     friend class PandoraImpl;
0208 };
0209 
0210 } // namespace pandora
0211 
0212 #endif // #ifndef PANDORA_MAIN_H