Back to home page

sPhenix code displayed by LXR

 
 

    


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   // these ones are used directly by the derived classes, maybe later
0062   // move to cleaner accessors
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   // we have accessors for these here
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};  // we may have negative event numbers but lets not go there right now
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;  // packet wise event number offset
0089 };
0090 
0091 #endif