File indexing completed on 2025-08-05 08:16:17
0001 #ifndef FUN4ALLRAW_SINGLESTREAMINGINPUT_H
0002 #define FUN4ALLRAW_SINGLESTREAMINGINPUT_H
0003
0004 #include <fun4all/Fun4AllBase.h>
0005 #include <fun4all/InputFileHandler.h>
0006
0007 #include <cstdint> // for uint64_t
0008 #include <map>
0009 #include <set>
0010 #include <string>
0011
0012 class Eventiterator;
0013 class Fun4AllEvtInputPoolManager;
0014 class Fun4AllStreamingInputManager;
0015 class PHCompositeNode;
0016
0017 class SingleStreamingInput : public Fun4AllBase, public InputFileHandler
0018 {
0019 public:
0020 explicit SingleStreamingInput(const std::string &name);
0021 ~SingleStreamingInput() override;
0022 virtual Eventiterator *GetEventIterator() { return m_EventIterator; }
0023 virtual void FillPool(const uint64_t) { return; }
0024 virtual void FillPool(const unsigned int = 1) { return; }
0025 virtual void RunNumber(const int runno) { m_RunNumber = runno; }
0026 virtual int RunNumber() const { return m_RunNumber; }
0027 virtual int fileopen(const std::string &filename) override;
0028 virtual int fileclose() override;
0029 virtual int AllDone() const { return m_AllDone; }
0030 virtual void AllDone(const int i) { m_AllDone = i; }
0031 virtual void EventNumberOffset(const int i) { m_EventNumberOffset = i; }
0032 virtual void Print(const std::string &what = "ALL") const override;
0033
0034
0035 virtual void CleanupUsedPackets(const uint64_t ) {}
0036
0037
0038
0039
0040
0041
0042
0043 virtual void CleanupUsedPackets(const uint64_t ,bool ) {}
0044
0045 virtual bool CheckPoolDepth(const uint64_t bclk);
0046 virtual void ClearCurrentEvent();
0047 virtual Eventiterator *GetEventiterator() const { return m_EventIterator; }
0048 virtual Fun4AllStreamingInputManager *StreamingInputManager() { return m_StreamingInputMgr; }
0049 virtual void StreamingInputManager(Fun4AllStreamingInputManager *in) { m_StreamingInputMgr = in; }
0050 virtual void CreateDSTNode(PHCompositeNode *) { return; }
0051 virtual void ConfigureStreamingInputManager() { return; }
0052 virtual void SubsystemEnum(const int id) { m_SubsystemEnum = id; }
0053 virtual int SubsystemEnum() const { return m_SubsystemEnum; }
0054 void MaxBclkDiff(uint64_t ui) { m_MaxBclkSpread = ui; }
0055 uint64_t MaxBclkDiff() const { return m_MaxBclkSpread; }
0056 virtual const std::map<int, std::set<uint64_t>> &BclkStackMap() const { return m_BclkStackPacketMap; }
0057 virtual const std::set<uint64_t> &BclkStack() const { return m_BclkStack; }
0058 virtual const std::map<uint64_t, std::set<int>> &BeamClockFEE() const { return m_BeamClockFEE; }
0059 void setHitContainerName(const std::string &name) { m_rawHitContainerName = name; }
0060 const std::string &getHitContainerName() const { return m_rawHitContainerName; }
0061 const std::map<int, std::set<uint64_t>> &getFeeGTML1BCOMap() const { return m_FeeGTML1BCOMap; }
0062
0063 void SetStandaloneMode(bool mode) { m_standalone_mode = mode; }
0064 bool IsStandaloneMode() const { return m_standalone_mode; }
0065
0066 virtual void createQAHistos() {}
0067
0068
0069
0070 virtual void FillBcoQA(uint64_t ) {};
0071
0072 void clearPacketBClkStackMap(const uint64_t& bclk)
0073
0074 {
0075 for(auto& [packetid, set] : m_BclkStackPacketMap)
0076 {
0077
0078 for(auto it = set.begin(); it != set.end();)
0079 {
0080 if(*it <= bclk)
0081 {
0082 it = set.erase(it);
0083 }
0084 else
0085 {
0086 ++it;
0087 }
0088 }
0089 }
0090 }
0091 void clearFeeGTML1BCOMap(const uint64_t &bclk)
0092 {
0093 for (auto &[key, set] : m_FeeGTML1BCOMap)
0094 {
0095 for(auto it = set.begin(); it != set.end();)
0096 {
0097 if(*it <= bclk)
0098 {
0099 it = set.erase(it);
0100 }
0101 else
0102 {
0103 ++it;
0104 }
0105 }
0106
0107 }
0108 }
0109
0110 protected:
0111 std::map<int, std::set<uint64_t>> m_BclkStackPacketMap;
0112 std::map<int, std::set<uint64_t>> m_FeeGTML1BCOMap;
0113 std::string m_rawHitContainerName = "";
0114 bool m_standalone_mode = false;
0115
0116 private:
0117 Eventiterator *m_EventIterator{nullptr};
0118
0119 Fun4AllStreamingInputManager *m_StreamingInputMgr{nullptr};
0120 uint64_t m_MaxBclkSpread{1000000};
0121 unsigned int m_EventNumberOffset{1};
0122 int m_RunNumber{0};
0123 int m_EventsThisFile{0};
0124 int m_AllDone{0};
0125 int m_SubsystemEnum{0};
0126 std::map<uint64_t, std::set<int>> m_BeamClockFEE;
0127 std::map<int, uint64_t> m_FEEBclkMap;
0128 std::set<uint64_t> m_BclkStack;
0129 };
0130
0131 #endif