Back to home page

sPhenix code displayed by LXR

 
 

    


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   // virtual void StreamingInputManager(Fun4AllStreamingLumiCountingInputManager *in) { m_StreamingLumiInputMgr = in; }
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           // to avoid invalid reads
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   // Fun4AllEvtInputPoolManager *m_InputMgr {nullptr};
0101   Fun4AllStreamingInputManager *m_StreamingInputMgr{nullptr};
0102   Fun4AllStreamingLumiCountingInputManager *m_StreamingLumiInputMgr{nullptr};
0103   uint64_t m_MaxBclkSpread{1000000};
0104   unsigned int m_EventNumberOffset{1};  // packet event counters start at 0 but we start with event number 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