JANA2
C++ framework for multi-threaded data processing
JFactoryT< T > Class Template Reference
Inheritance diagram for JFactoryT< T >:
[legend]
Collaboration diagram for JFactoryT< T >:
[legend]

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
}
 
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

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...
 
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 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.
 
JApplicationGetApplication () const
 
JLoggerGetLogger ()
 
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
 
JApplicationm_app = nullptr
 
JLogger m_logger
 

Member Function Documentation

◆ CreateAndGetData()

template<typename T >
PairType JFactoryT< T >::CreateAndGetData ( const std::shared_ptr< const JEvent > &  event)
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()

template<typename T >
template<typename S >
void JFactoryT< T >::EnableGetAs

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.


The documentation for this class was generated from the following file: