JANA2
C++ framework for multi-threaded data processing
|
Public Types | |
using | IteratorType = typename std::vector< T * >::const_iterator |
using | PairType = std::pair< IteratorType, IteratorType > |
Public Types inherited from JFactory | |
enum class | Status { Uninitialized , Unprocessed , Processed , Inserted , Finished } |
enum class | CreationStatus { NotCreatedYet , Created , Inserted , InsertedViaGetObjects , NeverCreated } |
enum | JFactory_Flags_t { JFACTORY_NULL = 0x00 , PERSISTENT = 0x01 , WRITE_TO_OUTPUT = 0x02 , NOT_OBJECT_OWNER = 0x04 , REGENERATE = 0x08 } |
Public Types inherited from jana::components::JComponent | |
enum class | Status { Uninitialized , Initialized , Opened , Closed , Finalized } |
enum class | CallbackStyle { LegacyMode , ExpertMode , DeclarativeMode } |
Public Member Functions | |
JFactoryT (std::string tag="") | |
void | Init () override |
void | BeginRun (const std::shared_ptr< const JEvent > &) override |
void | ChangeRun (const std::shared_ptr< const JEvent > &) override |
void | EndRun () override |
void | Process (const std::shared_ptr< const JEvent > &) override |
std::type_index | GetObjectType (void) const override |
std::size_t | GetNumObjects (void) const override |
PairType | CreateAndGetData (const std::shared_ptr< const JEvent > &event) |
CreateAndGetData handles all the preconditions and postconditions involved in calling the user-defined Open(), ChangeRun(), and Process() methods. More... | |
const std::vector< T * > & | GetData () |
void | Set (const std::vector< JObject * > &aData) override |
Please use the typed setters instead whenever possible. | |
void | Insert (JObject *aDatum) override |
Please use the typed setters instead whenever possible. | |
virtual void | Set (const std::vector< T * > &aData) |
virtual void | Set (std::vector< T * > &&aData) |
virtual void | Insert (T *aDatum) |
template<typename S > | |
void | EnableGetAs () |
EnableGetAs generates a vtable entry so that users may extract the contents of this JFactoryT from the type-erased JFactory. More... | |
template<typename S > | |
void | EnableGetAs (std::true_type) |
template<typename S > | |
void | EnableGetAs (std::false_type) |
void | ClearData () override |
Public Member Functions inherited from JFactory | |
JFactory (std::string aName, std::string aTag="") | |
std::string | GetName () const __attribute__((deprecated)) |
std::string | GetTag () const |
std::string | GetObjectName () const |
std::string | GetFactoryName () const |
Status | GetStatus () const |
CreationStatus | GetCreationStatus () const |
JCallGraphRecorder::JDataOrigin | GetInsertOrigin () const |
If objects were placed here by JEvent::Insert() this records whether that call was made from a source or factory. | |
uint32_t | GetPreviousRunNumber (void) const |
void | SetName (std::string objectName) __attribute__((deprecated)) |
void | SetTag (std::string tag) |
void | SetObjectName (std::string objectName) |
void | SetFactoryName (std::string factoryName) |
void | SetStatus (Status status) |
void | SetCreationStatus (CreationStatus status) |
void | SetInsertOrigin (JCallGraphRecorder::JDataOrigin origin) |
Called automatically by JEvent::Insert() to records whether that call was made by a source or factory. | |
void | SetPreviousRunNumber (uint32_t aRunNumber) |
uint32_t | GetFactoryFlags () const |
Get all flags in the form of a single word. | |
void | SetFactoryFlag (JFactory_Flags_t f) |
Set a flag (or flags) | |
void | ClearFactoryFlag (JFactory_Flags_t f) |
Clear a flag (or flags) | |
bool | TestFactoryFlag (JFactory_Flags_t f) const |
Test if a flag (or set of flags) is set. | |
void | SetPersistentFlag (bool persistent) |
void | SetNotOwnerFlag (bool not_owner) |
void | SetRegenerateFlag (bool regenerate) |
void | SetWriteToOutputFlag (bool write_to_output) |
bool | GetWriteToOutputFlag () |
JCallGraphRecorder::JDataSource | GetDataSource () const |
Get data source value depending on how objects came to be here. (Used mainly by JEvent::Get() ) | |
virtual void | Finish () |
template<typename S > | |
std::vector< S * > | GetAs () |
Access the encapsulated data, performing an upcast if necessary. More... | |
virtual void | Create (const std::shared_ptr< const JEvent > &event) |
Create() calls JFactory::Init,BeginRun,Process in an invariant-preserving way without knowing the exact type of object contained. More... | |
void | DoInit () |
void | DoFinish () |
void | Summarize (JComponentSummary &summary) const override |
Public Member Functions inherited from jana::components::JComponent | |
void | SetLevel (JEventLevel level) |
void | SetCallbackStyle (CallbackStyle style) |
void | SetPrefix (std::string prefix) |
void | SetTypeName (std::string type_name) |
For convenience, we provide a NAME_OF_THIS macro so that the user doesn't have to store the type name as a string, because that could get out of sync if automatic refactoring tools are used. | |
JApplication * | GetApplication () const |
JLogger & | GetLogger () |
std::string | GetPrefix () const |
JEventLevel | GetLevel () const |
std::string | GetLoggerName () const |
std::string | GetPluginName () const |
void | SetLoggerName (std::string logger_name) |
void | SetPluginName (std::string plugin_name) |
std::string | GetTypeName () const |
CallbackStyle | GetCallbackStyle () const |
Status | GetStatus () const |
void | SetApplication (JApplication *app) |
void | SetLogger (JLogger logger) |
template<typename F > | |
void | CallWithJExceptionWrapper (std::string func_name, F func) |
void | RegisterParameter (ParameterBase *parameter) |
void | RegisterService (ServiceBase *service) |
void | ConfigureAllParameters (std::map< std::string, std::string > fields) |
Protected Attributes | |
std::vector< T * > | mData |
Protected Attributes inherited from JFactory | |
std::string | mObjectName |
std::string | mTag |
uint32_t | mFlags = WRITE_TO_OUTPUT |
int32_t | mPreviousRunNumber = -1 |
std::unordered_map< std::type_index, std::unique_ptr< JAny > > | mUpcastVTable |
Status | mStatus = Status::Uninitialized |
JCallGraphRecorder::JDataOrigin | m_insert_origin = JCallGraphRecorder::ORIGIN_NOT_AVAILABLE |
CreationStatus | mCreationStatus = CreationStatus::NotCreatedYet |
Protected Attributes inherited from jana::components::JComponent | |
std::vector< ParameterBase * > | m_parameters |
std::vector< ServiceBase * > | m_services |
JEventLevel | m_level = JEventLevel::PhysicsEvent |
CallbackStyle | m_callback_style = CallbackStyle::LegacyMode |
std::string | m_prefix |
std::string | m_plugin_name |
std::string | m_logger_name |
std::string | m_type_name |
Status | m_status = Status::Uninitialized |
std::mutex | m_mutex |
JApplication * | m_app = nullptr |
JLogger | m_logger |
|
inline |
CreateAndGetData handles all the preconditions and postconditions involved in calling the user-defined Open(), ChangeRun(), and Process() methods.
These include making sure the JFactory JApplication is set, Init() is called exactly once, exceptions are tagged with the originating plugin and eventsource, ChangeRun() is called if and only if the run number changes, etc.
References JFactory::Create().
EnableGetAs generates a vtable entry so that users may extract the contents of this JFactoryT from the type-erased JFactory.
The user has to manually specify which upcasts to allow, and they have to do so for each instance. It is recommended to do so in the constructor. Note that EnableGetAs<T>() is called automatically.