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
0023
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
0032 void ClearCurrentEvent() override;
0033
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
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
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