GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TAnalysisWriteLoop.h
Go to the documentation of this file.
1#ifndef TANALYSISWRITELOOP_H
2#define TANALYSISWRITELOOP_H
3
4/** \addtogroup Loops
5 * @{
6 */
7
8#include "TClass.h"
9#include "TTree.h"
10
11#include "StoppableThread.h"
12#include "ThreadsafeQueue.h"
13#include "TUnpackedEvent.h"
14
15////////////////////////////////////////////////////////////////////////////////
16///
17/// \class TAnalysisWriteLoop
18///
19/// This loop writes built events to file
20///
21////////////////////////////////////////////////////////////////////////////////
22
24public:
25 static TAnalysisWriteLoop* Get(std::string name = "", std::string outputFilename = "");
26
29 TAnalysisWriteLoop& operator=(const TAnalysisWriteLoop&) = delete;
30 TAnalysisWriteLoop& operator=(TAnalysisWriteLoop&&) noexcept = delete;
32
33#ifndef __CINT__
34 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TUnpackedEvent>>>& InputQueue()
35 {
36 return fInputQueue;
37 }
38 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TFragment>>>& OutOfOrderQueue() { return fOutOfOrderQueue; }
39#endif
40
41 void ClearQueue() override;
42
43 void Write();
44
45 size_t GetItemsPushed() override { return ItemsPopped(); }
46 size_t GetItemsPopped() override { return 0; }
47 size_t GetItemsCurrent() override { return 0; }
48 size_t GetRate() override { return 0; }
49
50 std::string EndStatus() override;
51 void OnEnd() override;
52
53protected:
54 bool Iteration() override;
55
56private:
57 TAnalysisWriteLoop(std::string name, const std::string& outputFilename);
58
59 void AddBranch(TClass* cls);
60 void WriteEvent(std::shared_ptr<TUnpackedEvent>& event);
61
63 TTree* fEventTree;
67#ifndef __CINT__
68 std::map<TClass*, TDetector**> fDetMap;
69 std::map<TClass*, TDetector*> fDefaultDets;
70 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TUnpackedEvent>>> fInputQueue;
71 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TFragment>>> fOutOfOrderQueue;
72#endif
73
74 /// \cond CLASSIMP
75 ClassDefOverride(TAnalysisWriteLoop, 0) // NOLINT(readability-else-after-return)
76 /// \endcond
77};
78
79/*! @} */
80#endif /* _TWRITELOOP_H_ */
std::atomic_size_t & ItemsPopped()
TAnalysisWriteLoop(TAnalysisWriteLoop &&) noexcept=delete
static TAnalysisWriteLoop * Get(std::string name="", std::string outputFilename="")
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > fOutOfOrderQueue
std::string EndStatus() override
size_t GetItemsPushed() override
void WriteEvent(std::shared_ptr< TUnpackedEvent > &event)
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TUnpackedEvent > > > fInputQueue
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TUnpackedEvent > > > & InputQueue()
size_t GetRate() override
size_t GetItemsPopped() override
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & OutOfOrderQueue()
std::map< TClass *, TDetector ** > fDetMap
bool Iteration() override
size_t GetItemsCurrent() override
void ClearQueue() override
void AddBranch(TClass *cls)
std::map< TClass *, TDetector * > fDefaultDets
TAnalysisWriteLoop(const TAnalysisWriteLoop &)=delete