File indexing completed on 2025-08-05 08:16:17
0001 #ifndef FUN4ALLRAW_SINGLETRIGGERINPUT_H
0002 #define FUN4ALLRAW_SINGLETRIGGERINPUT_H
0003
0004 #include <fun4all/Fun4AllBase.h>
0005 #include <fun4all/InputFileHandler.h>
0006
0007 #include <cstdint> // for uint64_t
0008 #include <fstream>
0009 #include <limits>
0010 #include <map>
0011 #include <set>
0012 #include <string>
0013 #include <vector>
0014
0015 class Eventiterator;
0016 class Fun4AllPrdfInputTriggerManager;
0017 class OfflinePacket;
0018 class Packet;
0019 class PHCompositeNode;
0020
0021 class SingleTriggerInput : public Fun4AllBase, public InputFileHandler
0022 {
0023 public:
0024 explicit SingleTriggerInput(const std::string &name);
0025 ~SingleTriggerInput() override;
0026 virtual Eventiterator *GetEventIterator() { return m_EventIterator; }
0027 virtual void FillPool(const unsigned int = 1) { return; }
0028 virtual void RunNumber(const int runno) { m_RunNumber = runno; }
0029 virtual int RunNumber() const { return m_RunNumber; }
0030 virtual int fileopen(const std::string &filename) override;
0031 virtual int fileclose() override;
0032 virtual int AllDone() const { return m_AllDone; }
0033 virtual void AllDone(const int i) { m_AllDone = i; }
0034 virtual int EventNumberOffset(const int packetid);
0035 virtual void AdjustEventNumberOffset(const int packetid, const int offset);
0036 virtual void Print(const std::string &what = "ALL") const override;
0037 virtual void CleanupUsedPackets(const int) { return; }
0038 virtual bool CheckPoolDepth(const uint64_t bclk);
0039 virtual void ClearCurrentEvent();
0040 virtual Eventiterator *GetEventiterator() const { return m_EventIterator; }
0041 virtual Fun4AllPrdfInputTriggerManager *TriggerInputManager() { return m_TriggerInputMgr; }
0042 virtual void TriggerInputManager(Fun4AllPrdfInputTriggerManager *in) { m_TriggerInputMgr = in; }
0043 virtual void CreateDSTNode(PHCompositeNode *) { return; }
0044 virtual void SubsystemEnum(const int id) { m_SubsystemEnum = id; }
0045 virtual int SubsystemEnum() const { return m_SubsystemEnum; }
0046 virtual void ddumppacket(Packet *pkt);
0047 virtual void enable_ddump(int i = 1) { m_ddump_flag = i; }
0048 virtual bool ddump_enabled() const { return m_ddump_flag; }
0049 virtual void DefaultEventNumberOffset(const int i) { m_DefaultEventNumberOffset = i; }
0050 virtual int AdjustPacketMap(int pktid, int evtoffset);
0051 virtual bool GetSomeMoreEvents(const unsigned int keep);
0052 virtual int AdjustEventOffset(int evtoffset);
0053 virtual void LocalPoolDepth(unsigned int i) { m_LocalPoolDepth = i; }
0054 virtual unsigned int LocalPoolDepth() const { return m_LocalPoolDepth; }
0055 virtual void SkipToEvent(const int i) { m_SkipToEvent = i; }
0056 virtual int SkipToEvent() const { return m_SkipToEvent; }
0057 virtual void LastEvent(const int i) { m_LastEvent = i; }
0058 virtual int LastEvent() const { return m_LastEvent; }
0059 virtual int SetFEMEventRefPacketId(const int pktid);
0060 virtual int FEMEventRefPacketId() const {return m_FEMEventRefPacketId;}
0061
0062
0063 protected:
0064 std::map<int, std::vector<OfflinePacket *>> m_PacketMap;
0065 unsigned int m_NumSpecialEvents{0};
0066 std::set<int> m_EventNumber;
0067 std::set<int> m_EventStack;
0068
0069
0070 private:
0071 Eventiterator *m_EventIterator{nullptr};
0072 Fun4AllPrdfInputTriggerManager *m_TriggerInputMgr{nullptr};
0073 int m_ddump_flag{0};
0074 int m_RunNumber{0};
0075 int m_EventsThisFile{0};
0076 int m_AllDone{0};
0077 int m_SubsystemEnum{0};
0078 int m_DefaultEventNumberOffset{0};
0079 int m_FEMEventRefPacketId {0};
0080 int m_SkipToEvent{0};
0081 int m_LastEvent{std::numeric_limits<int>::max()};
0082 unsigned int m_LocalPoolDepth{0};
0083 std::map<uint64_t, std::set<int>> m_BeamClockFEE;
0084 std::map<int, uint64_t> m_FEEBclkMap;
0085 std::set<uint64_t> m_BclkStack;
0086 std::map<int, std::ofstream *> m_PacketDumpFile;
0087 std::map<int, int> m_PacketDumpCounter;
0088 std::map<int, int> m_EventNumberOffset;
0089 };
0090
0091 #endif