Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
ObjectFactory.h
Go to the documentation of this file.
1
8#ifndef PANDORA_OBJECT_FACTORY_H
9#define PANDORA_OBJECT_FACTORY_H 1
10
11#include "Pandora/StatusCodes.h"
12
13namespace pandora
14{
15
16class FileReader;
17class FileWriter;
18
19//------------------------------------------------------------------------------------------------------------------------------------------
20
24template <typename PARAMETERS, typename OBJECT>
26{
27public:
28 typedef PARAMETERS Parameters;
29 typedef OBJECT Object;
30
35
39 virtual ~ObjectFactory();
40
46 virtual Parameters *NewParameters() const = 0;
47
54 virtual StatusCode Read(Parameters &parameters, FileReader &fileReader) const = 0;
55
62 virtual StatusCode Write(const Object *const pObject, FileWriter &fileWriter) const = 0;
63
64protected:
71 virtual StatusCode Create(const Parameters &parameters, const Object *&pObject) const = 0;
72
73 friend class CaloHitManager;
74 friend class TrackManager;
75 friend class MCManager;
76 friend class ClusterManager;
77 friend class VertexManager;
79 friend class GeometryManager;
80};
81
82//------------------------------------------------------------------------------------------------------------------------------------------
83
84template <typename PARAMETERS, typename OBJECT>
88
89//------------------------------------------------------------------------------------------------------------------------------------------
90
91template <typename PARAMETERS, typename OBJECT>
95
96} // namespace pandora
97
98#endif // #ifndef PANDORA_OBJECT_FACTORY_H
Header file defining status codes and relevant preprocessor macros.
Parameters class.
Definition Validation.h:20
CaloHitManager class.
ClusterManager class.
FileReader class.
Definition FileReader.h:29
FileWriter class.
Definition FileWriter.h:29
GeometryManager class.
MCManager class.
Definition MCManager.h:23
ObjectFactory class responsible for extended pandora object creation.
ObjectFactory()
Default constructor.
virtual ~ObjectFactory()
Destructor.
virtual Parameters * NewParameters() const =0
Create new parameters instance on the heap (memory-management to be controlled by user)
virtual StatusCode Read(Parameters &parameters, FileReader &fileReader) const =0
Read any additional (derived class only) object parameters from file using the specified file reader.
virtual StatusCode Create(const Parameters &parameters, const Object *&pObject) const =0
Create an object with the given parameters.
virtual StatusCode Write(const Object *const pObject, FileWriter &fileWriter) const =0
Persist any additional (derived class only) object parameters using the specified file writer.
ParticleFlowObjectManager class.
TrackManager class.
VertexManager class.
StatusCode
The StatusCode enum.