GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TUnpackingLoop.h
Go to the documentation of this file.
1#ifndef TUNPACKINGLOOP_H
2#define TUNPACKINGLOOP_H
3
4/** \addtogroup Loops
5 * @{
6 */
7
8////////////////////////////////////////////////////////////////////////////////
9///
10/// \class TUnpackingLoop
11///
12/// This loop parses raw events into fragments.
13///
14////////////////////////////////////////////////////////////////////////////////
15
16#ifndef __CINT__
17#include <memory>
18#include "ThreadsafeQueue.h"
19#endif
20
21#include "StoppableThread.h"
22#include "TRawEvent.h"
23#include "TFragment.h"
24#include "TEpicsFrag.h"
25#include "TDataParser.h"
26
28public:
29 static TUnpackingLoop* Get(std::string name = "");
31 TUnpackingLoop(TUnpackingLoop&&) noexcept = delete;
32 TUnpackingLoop& operator=(const TUnpackingLoop&) = delete;
33 TUnpackingLoop& operator=(TUnpackingLoop&&) noexcept = delete;
35
36 void SetNoWaveForms(bool temp = true) { fParser->SetNoWaveForms(temp); }
37 void SetRecordDiag(bool temp = true) { fParser->SetRecordDiag(temp); }
38
39#ifndef __CINT__
40 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TRawEvent>>>& InputQueue()
41 {
42 return fInputQueue;
43 }
44 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TFragment>>>& AddGoodOutputQueue(size_t maxSize = 50000)
45 {
46 return fParser->AddGoodOutputQueue(maxSize);
47 }
48 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TBadFragment>>>& BadOutputQueue()
49 {
50 return fParser->BadOutputQueue();
51 }
52 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TEpicsFrag>>>& ScalerOutputQueue()
53 {
54 return fParser->ScalerOutputQueue();
55 }
56#endif
57
58 bool Iteration() override;
59
60 void ClearQueue() override;
61
62 size_t GetItemsPushed() override { return fParser->ItemsPushed(); }
63 size_t GetItemsPopped() override { return 0; } // fParser.GoodOutputQueue()->ItemsPopped(); }
64 size_t GetItemsCurrent() override { return 0; } // fParser.GoodOutputQueue()->Size(); }
65 size_t GetRate() override { return 0; }
66
67 std::string EndStatus() override;
68
69private:
70#ifndef __CINT__
71 std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TRawEvent>>> fInputQueue;
72#endif
73
77
78 explicit TUnpackingLoop(std::string name);
79};
80
81/*! @} */
82#endif /* _TUNPACKINGLOOP_H_ */
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TBadFragment > > > & BadOutputQueue()
Definition TDataParser.h:73
virtual void SetRecordDiag(bool temp=true)
Definition TDataParser.h:51
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TEpicsFrag > > > & ScalerOutputQueue()
Definition TDataParser.h:75
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & AddGoodOutputQueue(size_t maxSize=50000)
Definition TDataParser.h:65
virtual void SetNoWaveForms(bool temp=true)
Definition TDataParser.h:50
virtual size_t ItemsPushed()
Definition TDataParser.h:88
static TUnpackingLoop * Get(std::string name="")
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & AddGoodOutputQueue(size_t maxSize=50000)
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TRawEvent > > > & InputQueue()
size_t GetItemsCurrent() override
TUnpackingLoop(const TUnpackingLoop &)=delete
void SetRecordDiag(bool temp=true)
size_t GetItemsPopped() override
void ClearQueue() override
size_t GetItemsPushed() override
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TRawEvent > > > fInputQueue
TUnpackingLoop(TUnpackingLoop &&) noexcept=delete
TDataParser * fParser
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TEpicsFrag > > > & ScalerOutputQueue()
void SetNoWaveForms(bool temp=true)
size_t GetRate() override
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TBadFragment > > > & BadOutputQueue()
int64_t fGoodFragsRead
int64_t fFragsReadFromRaw
std::string EndStatus() override
bool Iteration() override