JANA2
C++ framework for multi-threaded data processing
Loading...
Searching...
No Matches
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 ,
  Excepted ,
  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
 
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.
 
PairType CreateAndGetData (const JEvent &event)
 
const std::vector< T * > & GetData ()
 
void Set (const std::vector< JObject * > &aData) 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)
 
void SetFactoryFlag (JFactory_Flags_t f) override
 Set a flag (or flags)
 
void ClearFactoryFlag (JFactory_Flags_t f)
 Clear a flag (or flags)
 
void SetNotOwnerFlag (bool not_owner)
 
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.
 
template<typename S >
void EnableGetAs (std::true_type)
 
template<typename S >
void EnableGetAs (std::false_type)
 
- Public Member Functions inherited from JFactory
void SetTag (std::string tag)
 
std::string GetTag () const
 
std::string GetObjectName () const
 
void SetObjectName (std::string object_name)
 
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 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)
 
void SetPersistentFlag (bool persistent)
 
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() )
 
std::type_index GetObjectType () const
 
std::size_t GetNumObjects () const
 
void ClearData ()
 
virtual void Finish ()
 
template<typename S >
std::vector< S * > GetAs ()
 Access the encapsulated data, performing an upcast if necessary.
 
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.
 
virtual void Create (const JEvent &event)
 
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.
 
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)
 
const std::vector< ParameterBase * > GetAllParameters () const
 
- Public Member Functions inherited from jana::components::JHasRunCallbacks
void RegisterResource (ResourceBase *resource)
 
virtual void ChangeRun (int32_t)
 
virtual void ChangeRun (const JEvent &)
 
- Public Member Functions inherited from jana::components::JHasOutputs
const std::vector< OutputBase * > & GetOutputs () const
 
const std::vector< VariadicOutputBase * > & GetVariadicOutputs () const
 
JDatabundleGetFirstDatabundle () const
 
void RegisterOutput (OutputBase *output)
 
void RegisterOutput (VariadicOutputBase *output)
 
void SummarizeOutputs (JComponentSummary::Component &summary) const
 
void WireOutputs (JEventLevel component_level, const std::vector< std::string > &single_output_databundle_names, const std::vector< std::vector< std::string > > &variadic_output_databundle_names, bool use_short_names)
 

Protected Attributes

std::vector< T * > mData
 
jana::components::Output< T > mOutput {this, &mData}
 
- Protected Attributes inherited from JFactory
bool mRegenerate = false
 
bool mWriteToOutput = true
 
bool mPersistent = false
 
int32_t mPreviousRunNumber = -1
 
bool mInsideCreate = false
 
std::unordered_map< std::type_index, std::unique_ptr< JAny > > mUpcastVTable
 
std::string mObjectName
 
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
 
- Protected Attributes inherited from jana::components::JHasRunCallbacks
std::vector< ResourceBase * > m_resources
 
int32_t m_last_run_number = -1
 
- Protected Attributes inherited from jana::components::JHasInputs
std::vector< InputBase * > m_inputs
 
std::vector< VariadicInputBase * > m_variadic_inputs
 
std::vector< std::pair< InputBase *, VariadicInputBase * > > m_ordered_inputs
 

Additional Inherited Members

- Protected Member Functions inherited from jana::components::JHasInputs
void RegisterInput (InputBase *input)
 
void RegisterInput (VariadicInputBase *input)
 
const std::vector< InputBase * > & GetInputs ()
 
const std::vector< VariadicInputBase * > & GetVariadicInputs ()
 
void WireInputs (JEventLevel component_level, const std::vector< JEventLevel > &single_input_levels, const std::vector< std::string > &single_input_databundle_names, const std::vector< JEventLevel > &variadic_input_levels, const std::vector< std::vector< std::string > > &variadic_input_databundle_names)
 
void WireInputsCompatibility (JEventLevel component_level, const std::vector< JEventLevel > &single_input_levels, const std::vector< std::string > &single_input_databundle_names)
 
void SummarizeInputs (JComponentSummary::Component &summary) const
 

Member Function Documentation

◆ BeginRun()

template<typename T >
void JFactoryT< T >::BeginRun ( const std::shared_ptr< const JEvent > &  )
inlineoverridevirtual

◆ ChangeRun()

template<typename T >
void JFactoryT< T >::ChangeRun ( const std::shared_ptr< const JEvent > &  )
inlineoverridevirtual

◆ 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.

◆ EndRun()

template<typename T >
void JFactoryT< T >::EndRun ( )
inlineoverridevirtual

◆ Init()

template<typename T >
void JFactoryT< T >::Init ( )
inlineoverridevirtual

Reimplemented from JFactory.

◆ Process()

template<typename T >
void JFactoryT< T >::Process ( const std::shared_ptr< const JEvent > &  )
inlineoverridevirtual

Reimplemented from JFactory.

◆ Set()

template<typename T >
void JFactoryT< T >::Set ( const std::vector< JObject * > &  aData)
inlineoverridevirtual

Please use the typed setters instead whenever possible.

Reimplemented from JFactory.

References JFactoryT< T >::Set().

Referenced by JFactoryT< T >::Set().

◆ SetFactoryFlag()

template<typename T >
void JFactoryT< T >::SetFactoryFlag ( JFactory_Flags_t  f)
inlineoverridevirtual

Set a flag (or flags)

Reimplemented from JFactory.


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