Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:24

0001 #ifndef FUN4ALLRAW_SingleTpcTimeFrameInput_H
0002 #define FUN4ALLRAW_SingleTpcTimeFrameInput_H
0003 
0004 #include "SingleStreamingInput.h"
0005 
0006 #include <TString.h>
0007 
0008 #include <array>
0009 #include <list>
0010 #include <map>
0011 #include <set>
0012 #include <string>
0013 #include <vector>
0014 
0015 class TpcRawHit;
0016 class Packet;
0017 class TpcTimeFrameBuilder;
0018 class PHTimer;
0019 class TH1;
0020 class TH2;
0021 
0022 //! Provide TpcTimeFrameBuilder as a unified interface for Fun4AllStreamingInputManager
0023 // NOLINTNEXTLINE(hicpp-special-member-functions)
0024 class SingleTpcTimeFrameInput : public SingleStreamingInput
0025 {
0026  public:
0027   explicit SingleTpcTimeFrameInput(const std::string &name);
0028   ~SingleTpcTimeFrameInput() override;
0029   void FillPool(const uint64_t minBCO) override;
0030   void CleanupUsedPackets(const uint64_t bclk) override;
0031   // bool CheckPoolDepth(const uint64_t bclk) override;
0032   void ClearCurrentEvent() override;
0033   // bool GetSomeMoreEvents();
0034   void Print(const std::string &what = "ALL") const override;
0035   void CreateDSTNode(PHCompositeNode *topNode) override;
0036   void SetBcoRange(const unsigned int i) { m_BcoRange = i; }
0037   void ConfigureStreamingInputManager() override;
0038   void SetNegativeBco(const unsigned int value) { m_NegativeBco = value; }
0039 
0040   void AddPacketID(const int packetID) { m_SelectedPacketIDs.insert(packetID); }
0041 
0042   void setDigitalCurrentDebugTTreeName(const std::string &name)
0043   {
0044     m_digitalCurrentDebugTTreeName = name;
0045   }
0046 
0047  private:
0048   const int NTPCPACKETS = 3;
0049 
0050   Packet **plist{nullptr};
0051   unsigned int m_NumSpecialEvents{0};
0052   unsigned int m_BcoRange{0};
0053   unsigned int m_NegativeBco{0};
0054 
0055   //! packet ID -> TimeFrame builder
0056   std::map<int, TpcTimeFrameBuilder *> m_TpcTimeFrameBuilderMap;
0057   std::set<int> m_SelectedPacketIDs;
0058   
0059   TH1 *m_hNorm = nullptr;
0060 
0061   PHTimer *m_FillPoolTimer = nullptr;
0062   PHTimer *m_getNextEventTimer = nullptr;
0063   PHTimer *m_ProcessPacketTimer = nullptr;
0064   PHTimer *m_getTimeFrameTimer = nullptr;
0065 
0066   // NOLINTNEXTLINE(hicpp-special-member-functions)
0067   class TimeTracker
0068   {    
0069    public:
0070     TimeTracker(PHTimer * timer, const std::string & name, TH1* hout) ;
0071     virtual ~TimeTracker() ;
0072     void stop();
0073 
0074    private:
0075     PHTimer * m_timer = nullptr;
0076     TString m_name;
0077     TH1 *m_hNorm = nullptr;
0078     bool stopped = false;
0079   };
0080 
0081   std::string m_digitalCurrentDebugTTreeName;
0082 };
0083 
0084 #endif