File indexing completed on 2025-08-05 08:16:20
0001 #ifndef RAWBCOLUMI_SINGLESTREAMINGINPUTV2_H
0002 #define RAWBCOLUMI_SINGLESTREAMINGINPUTV2_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 Fun4AllStreamingLumiCountingInputManager;
0016 class PHCompositeNode;
0017
0018 class SingleStreamingInputv2 : public Fun4AllBase, public InputFileHandler
0019 {
0020 public:
0021 explicit SingleStreamingInputv2(const std::string &name);
0022 ~SingleStreamingInputv2() override;
0023 virtual Eventiterator *GetEventIterator() { return m_EventIterator; }
0024 virtual void FillPool(const uint64_t) { return; }
0025 virtual void FillPool(const unsigned int = 1) { return; }
0026 virtual void RunNumber(const int runno) { m_RunNumber = runno; }
0027 virtual int RunNumber() const { return m_RunNumber; }
0028 virtual int fileopen(const std::string &filename) override;
0029 virtual int fileclose() override;
0030 virtual int AllDone() const { return m_AllDone; }
0031 virtual void AllDone(const int i) { m_AllDone = i; }
0032 virtual void EventNumberOffset(const int i) { m_EventNumberOffset = i; }
0033 virtual void Print(const std::string &what = "ALL") const override;
0034 virtual void CleanupUsedPackets(const uint64_t) { return; }
0035 virtual bool CheckPoolDepth(const uint64_t bclk);
0036 virtual void ClearCurrentEvent();
0037 virtual Eventiterator *GetEventiterator() const { return m_EventIterator; }
0038 virtual Fun4AllStreamingInputManager *StreamingInputManager() { return m_StreamingInputMgr; }
0039 virtual void StreamingInputManager(Fun4AllStreamingInputManager *in) { m_StreamingInputMgr = in; }
0040
0041 virtual Fun4AllStreamingLumiCountingInputManager *StreamingLumiInputManager() { return m_StreamingLumiInputMgr; }
0042 virtual void StreamingLumiInputManager(Fun4AllStreamingLumiCountingInputManager *in) { m_StreamingLumiInputMgr = in; }
0043 virtual void CreateDSTNode(PHCompositeNode *) { return; }
0044 virtual void ConfigureStreamingInputManager() { return; }
0045 virtual void SubsystemEnum(const int id) { m_SubsystemEnum = id; }
0046 virtual int SubsystemEnum() const { return m_SubsystemEnum; }
0047 void MaxBclkDiff(uint64_t ui) { m_MaxBclkSpread = ui; }
0048 uint64_t MaxBclkDiff() const { return m_MaxBclkSpread; }
0049 virtual const std::map<int, std::set<uint64_t>> &BclkStackMap() const { return m_BclkStackPacketMap; }
0050 virtual const std::set<uint64_t> &BclkStack() const { return m_BclkStack; }
0051 virtual const std::map<uint64_t, std::set<int>> &BeamClockFEE() const { return m_BeamClockFEE; }
0052 void setHitContainerName(const std::string &name) { m_rawHitContainerName = name; }
0053 const std::string &getHitContainerName() const { return m_rawHitContainerName; }
0054 const std::map<int, std::set<uint64_t>> &getFeeGTML1BCOMap() const { return m_FeeGTML1BCOMap; }
0055
0056 void clearPacketBClkStackMap(const int &packetid, const uint64_t &bclk)
0057 {
0058 std::set<uint64_t> to_erase;
0059 auto set = m_BclkStackPacketMap.find(packetid)->second;
0060 for (auto &bclk_to_erase : set)
0061 {
0062 if (bclk_to_erase <= bclk)
0063 {
0064 to_erase.insert(bclk_to_erase);
0065 }
0066 }
0067 for (auto &bclk_to_erase : to_erase)
0068 {
0069 set.erase(bclk_to_erase);
0070 }
0071 }
0072
0073 void clearFeeGTML1BCOMap(const uint64_t &bclk)
0074 {
0075 std::set<uint64_t> toerase;
0076 for (auto &[key, set] : m_FeeGTML1BCOMap)
0077 {
0078 for (auto &ll1bclk : set)
0079 {
0080 if (ll1bclk <= bclk)
0081 {
0082
0083 toerase.insert(ll1bclk);
0084 }
0085 }
0086 for (auto &bclk_to_erase : toerase)
0087 {
0088 set.erase(bclk_to_erase);
0089 }
0090 }
0091 }
0092
0093 protected:
0094 std::map<int, std::set<uint64_t>> m_BclkStackPacketMap;
0095 std::map<int, std::set<uint64_t>> m_FeeGTML1BCOMap;
0096 std::string m_rawHitContainerName = "";
0097
0098 private:
0099 Eventiterator *m_EventIterator{nullptr};
0100
0101 Fun4AllStreamingInputManager *m_StreamingInputMgr{nullptr};
0102 Fun4AllStreamingLumiCountingInputManager *m_StreamingLumiInputMgr{nullptr};
0103 uint64_t m_MaxBclkSpread{1000000};
0104 unsigned int m_EventNumberOffset{1};
0105 int m_RunNumber{0};
0106 int m_EventsThisFile{0};
0107 int m_AllDone{0};
0108 int m_SubsystemEnum{0};
0109 std::map<uint64_t, std::set<int>> m_BeamClockFEE;
0110 std::map<int, uint64_t> m_FEEBclkMap;
0111 std::set<uint64_t> m_BclkStack;
0112 };
0113
0114 #endif