GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TAnalysisWriteLoop Class Reference

Detailed Description

This loop writes built events to file

Definition at line 26 of file TAnalysisWriteLoop.h.

Public Member Functions

 TAnalysisWriteLoop (const TAnalysisWriteLoop &)=delete
 
 TAnalysisWriteLoop (TAnalysisWriteLoop &&) noexcept=delete
 
 ~TAnalysisWriteLoop ()
 
void ClearQueue () override
 
std::string EndStatus () override
 
size_t GetItemsCurrent () override
 
size_t GetItemsPopped () override
 
size_t GetItemsPushed () override
 
size_t GetRate () override
 
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TUnpackedEvent > > > & InputQueue ()
 
bool IsPaused ()
 
bool IsRunning ()
 
void Join ()
 
std::string Name () const
 
void OnEnd () override
 
TAnalysisWriteLoopoperator= (const TAnalysisWriteLoop &)=delete
 
TAnalysisWriteLoopoperator= (TAnalysisWriteLoop &&) noexcept=delete
 
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & OutOfOrderQueue ()
 
void Pause ()
 
virtual std::string Progress ()
 
void Resume ()
 
virtual std::string Status ()
 
void Stop ()
 
void Write ()
 

Static Public Member Functions

static std::string AllThreadHeader ()
 
static std::string AllThreadProgress ()
 
static std::string AllThreadStatus ()
 
static bool AnyThreadRunning ()
 
static std::string AnyThreadStatus ()
 
static void ClearAllQueues ()
 
static size_t ColumnWidth ()
 
static void ColumnWidth (size_t val)
 
static StoppableThreadGet (const std::string &name)
 
static TAnalysisWriteLoopGet (std::string name="", std::string outputFilename="")
 
static std::vector< StoppableThread * > GetAll ()
 
static int GetNThreads ()
 
static void join_status_thread ()
 
static void PauseAll ()
 
static void Print ()
 
static void ResumeAll ()
 
static void SendStop ()
 
static void start_status_thread ()
 
static void status_out ()
 
static void status_out_loop ()
 
static size_t StatusWidth ()
 
static void StatusWidth (size_t val)
 
static void stop_status_thread ()
 
static void StopAll ()
 

Protected Member Functions

void IncrementItemsPopped ()
 
std::atomic_long & InputSize ()
 
void InputSize (int64_t val)
 
std::atomic_size_t & ItemsPopped ()
 
void ItemsPopped (size_t val)
 
bool Iteration () override
 

Private Member Functions

 TAnalysisWriteLoop (std::string name, const std::string &outputFilename)
 
void AddBranch (TClass *cls)
 
void Loop ()
 
void WriteEvent (std::shared_ptr< TUnpackedEvent > &event)
 

Private Attributes

std::map< TClass *, TDetector * > fDefaultDets
 
std::map< TClass *, TDetector ** > fDetMap
 
TTree * fEventTree
 
std::atomic_bool fForceStop {false}
 
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TUnpackedEvent > > > fInputQueue
 
std::atomic_long fInputSize {0}
 
std::atomic_size_t fItemsPopped {0}
 
std::string fName
 
bool fOutOfOrder
 
TFragmentfOutOfOrderFrag
 
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > fOutOfOrderQueue
 
TTree * fOutOfOrderTree
 
TFile * fOutputFile
 
std::atomic_bool fPaused {false}
 
std::condition_variable fPausedWait
 
std::mutex fPauseMutex
 
std::atomic_bool fRunning {false}
 
std::thread fThread
 

Static Private Attributes

static size_t fColumnWidth = 20
 
static std::thread fStatusThread
 
static bool fStatusThreadOn = false
 
static size_t fStatusWidth = 80
 
static std::map< std::string, StoppableThread * > fThreadMap
 
+ Inheritance diagram for TAnalysisWriteLoop:
+ Collaboration diagram for TAnalysisWriteLoop:

Constructor & Destructor Documentation

◆ TAnalysisWriteLoop() [1/3]

TAnalysisWriteLoop::TAnalysisWriteLoop ( const TAnalysisWriteLoop & )
delete

Referenced by Get().

◆ TAnalysisWriteLoop() [2/3]

TAnalysisWriteLoop::TAnalysisWriteLoop ( TAnalysisWriteLoop && )
deletenoexcept

◆ ~TAnalysisWriteLoop()

TAnalysisWriteLoop::~TAnalysisWriteLoop ( )

Definition at line 62 of file TAnalysisWriteLoop.cxx.

References fDetMap.

◆ TAnalysisWriteLoop() [3/3]

TAnalysisWriteLoop::TAnalysisWriteLoop ( std::string name,
const std::string & outputFilename )
private

Member Function Documentation

◆ AddBranch()

void TAnalysisWriteLoop::AddBranch ( TClass * cls)
private

Definition at line 149 of file TAnalysisWriteLoop.cxx.

References fDefaultDets, fDetMap, fEventTree, StoppableThread::Name(), and ttree_fill_mutex.

Referenced by WriteEvent().

◆ AllThreadHeader()

std::string StoppableThread::AllThreadHeader ( )
staticinherited

◆ AllThreadProgress()

std::string StoppableThread::AllThreadProgress ( )
staticinherited

◆ AllThreadStatus()

std::string StoppableThread::AllThreadStatus ( )
staticinherited

◆ AnyThreadRunning()

bool StoppableThread::AnyThreadRunning ( )
staticinherited

◆ AnyThreadStatus()

std::string StoppableThread::AnyThreadStatus ( )
staticinherited

Definition at line 47 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

◆ ClearAllQueues()

void StoppableThread::ClearAllQueues ( )
staticinherited

Definition at line 166 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

Referenced by TGRSIInterruptHandler::Notify().

◆ ClearQueue()

void TAnalysisWriteLoop::ClearQueue ( )
overridevirtual

Reimplemented from StoppableThread.

Definition at line 69 of file TAnalysisWriteLoop.cxx.

References fInputQueue.

◆ ColumnWidth() [1/2]

static size_t StoppableThread::ColumnWidth ( )
inlinestaticinherited

Definition at line 82 of file StoppableThread.h.

References StoppableThread::fColumnWidth.

Referenced by TGRSIint::SetupPipeline().

◆ ColumnWidth() [2/2]

static void StoppableThread::ColumnWidth ( size_t val)
inlinestaticinherited

Definition at line 80 of file StoppableThread.h.

References StoppableThread::fColumnWidth.

◆ EndStatus()

std::string TAnalysisWriteLoop::EndStatus ( )
overridevirtual

◆ Get() [1/2]

◆ Get() [2/2]

TAnalysisWriteLoop * TAnalysisWriteLoop::Get ( std::string name = "",
std::string outputFilename = "" )
static

Definition at line 25 of file TAnalysisWriteLoop.cxx.

References TAnalysisWriteLoop(), and StoppableThread::Get().

Referenced by TGRSIint::SetupPipeline().

◆ GetAll()

std::vector< StoppableThread * > StoppableThread::GetAll ( )
staticinherited

Definition at line 315 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

◆ GetItemsCurrent()

size_t TAnalysisWriteLoop::GetItemsCurrent ( )
inlineoverridevirtual

Implements StoppableThread.

Definition at line 50 of file TAnalysisWriteLoop.h.

◆ GetItemsPopped()

size_t TAnalysisWriteLoop::GetItemsPopped ( )
inlineoverridevirtual

Implements StoppableThread.

Definition at line 49 of file TAnalysisWriteLoop.h.

◆ GetItemsPushed()

size_t TAnalysisWriteLoop::GetItemsPushed ( )
inlineoverridevirtual

Implements StoppableThread.

Definition at line 48 of file TAnalysisWriteLoop.h.

References StoppableThread::ItemsPopped().

◆ GetNThreads()

int StoppableThread::GetNThreads ( )
staticinherited

Definition at line 21 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

Referenced by StoppableThread::Print().

◆ GetRate()

size_t TAnalysisWriteLoop::GetRate ( )
inlineoverridevirtual

Implements StoppableThread.

Definition at line 51 of file TAnalysisWriteLoop.h.

◆ IncrementItemsPopped()

◆ InputQueue()

std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TUnpackedEvent > > > & TAnalysisWriteLoop::InputQueue ( )
inline

Definition at line 37 of file TAnalysisWriteLoop.h.

References fInputQueue.

◆ InputSize() [1/2]

◆ InputSize() [2/2]

void StoppableThread::InputSize ( int64_t val)
inlineprotectedinherited

Definition at line 94 of file StoppableThread.h.

References StoppableThread::fInputSize.

◆ IsPaused()

bool StoppableThread::IsPaused ( )
inherited

Definition at line 224 of file StoppableThread.cxx.

References StoppableThread::fPaused.

◆ IsRunning()

bool StoppableThread::IsRunning ( )
inherited

Definition at line 219 of file StoppableThread.cxx.

References StoppableThread::fRunning.

Referenced by StoppableThread::status_out().

◆ ItemsPopped() [1/2]

◆ ItemsPopped() [2/2]

void StoppableThread::ItemsPopped ( size_t val)
inlineprotectedinherited

Definition at line 93 of file StoppableThread.h.

References StoppableThread::fItemsPopped.

◆ Iteration()

◆ Join()

void StoppableThread::Join ( )
inherited

◆ join_status_thread()

void StoppableThread::join_status_thread ( )
staticinherited

◆ Loop()

◆ Name()

std::string StoppableThread::Name ( ) const
inlineinherited

◆ OnEnd()

void TAnalysisWriteLoop::OnEnd ( )
overridevirtual

Reimplemented from StoppableThread.

Definition at line 85 of file TAnalysisWriteLoop.cxx.

References Write().

◆ operator=() [1/2]

TAnalysisWriteLoop & TAnalysisWriteLoop::operator= ( const TAnalysisWriteLoop & )
delete

◆ operator=() [2/2]

TAnalysisWriteLoop & TAnalysisWriteLoop::operator= ( TAnalysisWriteLoop && )
deletenoexcept

◆ OutOfOrderQueue()

std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & TAnalysisWriteLoop::OutOfOrderQueue ( )
inline

Definition at line 41 of file TAnalysisWriteLoop.h.

References fOutOfOrderQueue.

◆ Pause()

void StoppableThread::Pause ( )
inherited

Definition at line 202 of file StoppableThread.cxx.

References StoppableThread::fPaused, and StoppableThread::fRunning.

◆ PauseAll()

void StoppableThread::PauseAll ( )
staticinherited

Definition at line 97 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

◆ Print()

void StoppableThread::Print ( )
staticinherited

◆ Progress()

std::string StoppableThread::Progress ( )
virtualinherited

◆ Resume()

void StoppableThread::Resume ( )
inherited

◆ ResumeAll()

void StoppableThread::ResumeAll ( )
staticinherited

Definition at line 104 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

Referenced by TGRSIint::SetupPipeline().

◆ SendStop()

void StoppableThread::SendStop ( )
staticinherited

Definition at line 135 of file StoppableThread.cxx.

References StoppableThread::fThreadMap.

Referenced by StoppableThread::StopAll(), and TGRSIint::Terminate().

◆ start_status_thread()

void StoppableThread::start_status_thread ( )
staticinherited

◆ Status()

std::string StoppableThread::Status ( )
virtualinherited

◆ status_out()

◆ status_out_loop()

void StoppableThread::status_out_loop ( )
staticinherited

◆ StatusWidth() [1/2]

static size_t StoppableThread::StatusWidth ( )
inlinestaticinherited

Definition at line 83 of file StoppableThread.h.

References StoppableThread::fStatusWidth.

Referenced by TGRSIint::SetupPipeline().

◆ StatusWidth() [2/2]

static void StoppableThread::StatusWidth ( size_t val)
inlinestaticinherited

Definition at line 81 of file StoppableThread.h.

References StoppableThread::fStatusWidth.

◆ Stop()

◆ stop_status_thread()

void StoppableThread::stop_status_thread ( )
staticinherited

◆ StopAll()

void StoppableThread::StopAll ( )
staticinherited

◆ Write()

◆ WriteEvent()

void TAnalysisWriteLoop::WriteEvent ( std::shared_ptr< TUnpackedEvent > & event)
private

Definition at line 190 of file TAnalysisWriteLoop.cxx.

References AddBranch(), fDetMap, fEventTree, and ttree_fill_mutex.

Referenced by Iteration().

Member Data Documentation

◆ fColumnWidth

◆ fDefaultDets

std::map<TClass*, TDetector*> TAnalysisWriteLoop::fDefaultDets
private

Definition at line 72 of file TAnalysisWriteLoop.h.

Referenced by AddBranch().

◆ fDetMap

std::map<TClass*, TDetector**> TAnalysisWriteLoop::fDetMap
private

Definition at line 71 of file TAnalysisWriteLoop.h.

Referenced by ~TAnalysisWriteLoop(), AddBranch(), and WriteEvent().

◆ fEventTree

TTree* TAnalysisWriteLoop::fEventTree
private

Definition at line 66 of file TAnalysisWriteLoop.h.

Referenced by TAnalysisWriteLoop(), AddBranch(), and WriteEvent().

◆ fForceStop

std::atomic_bool StoppableThread::fForceStop {false}
privateinherited

Definition at line 120 of file StoppableThread.h.

◆ fInputQueue

std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TUnpackedEvent> > > TAnalysisWriteLoop::fInputQueue
private

Definition at line 73 of file TAnalysisWriteLoop.h.

Referenced by ClearQueue(), InputQueue(), and Iteration().

◆ fInputSize

std::atomic_long StoppableThread::fInputSize {0}
privateinherited

number of items in the input (queue), only updated within Iteration(), so not always fully up-to-date (signed to hold error from queue::pop)

Definition at line 102 of file StoppableThread.h.

Referenced by StoppableThread::InputSize(), StoppableThread::InputSize(), StoppableThread::Progress(), and StoppableThread::Status().

◆ fItemsPopped

std::atomic_size_t StoppableThread::fItemsPopped {0}
privateinherited

◆ fName

std::string StoppableThread::fName
privateinherited

◆ fOutOfOrder

bool TAnalysisWriteLoop::fOutOfOrder
private

Definition at line 69 of file TAnalysisWriteLoop.h.

Referenced by TAnalysisWriteLoop(), and Iteration().

◆ fOutOfOrderFrag

TFragment* TAnalysisWriteLoop::fOutOfOrderFrag
private

Definition at line 68 of file TAnalysisWriteLoop.h.

Referenced by TAnalysisWriteLoop(), and Iteration().

◆ fOutOfOrderQueue

std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TFragment> > > TAnalysisWriteLoop::fOutOfOrderQueue
private

Definition at line 74 of file TAnalysisWriteLoop.h.

Referenced by Iteration(), and OutOfOrderQueue().

◆ fOutOfOrderTree

TTree* TAnalysisWriteLoop::fOutOfOrderTree
private

Definition at line 67 of file TAnalysisWriteLoop.h.

Referenced by TAnalysisWriteLoop(), and Iteration().

◆ fOutputFile

TFile* TAnalysisWriteLoop::fOutputFile
private

Definition at line 65 of file TAnalysisWriteLoop.h.

Referenced by TAnalysisWriteLoop(), and Write().

◆ fPaused

std::atomic_bool StoppableThread::fPaused {false}
privateinherited

◆ fPausedWait

std::condition_variable StoppableThread::fPausedWait
privateinherited

◆ fPauseMutex

std::mutex StoppableThread::fPauseMutex
privateinherited

◆ fRunning

std::atomic_bool StoppableThread::fRunning {false}
privateinherited

◆ fStatusThread

std::thread StoppableThread::fStatusThread
staticprivateinherited

◆ fStatusThreadOn

◆ fStatusWidth

◆ fThread

std::thread StoppableThread::fThread
privateinherited

Definition at line 118 of file StoppableThread.h.

Referenced by StoppableThread::StoppableThread(), and StoppableThread::Join().

◆ fThreadMap