File indexing completed on 2025-08-06 08:17:25
0001 #ifndef FUN4ALLRAW_SINGLEZDCINPUT_H
0002 #define FUN4ALLRAW_SINGLEZDCINPUT_H
0003
0004 #include "SinglePrdfInput.h"
0005
0006 #include <array>
0007 #include <map>
0008 #include <set>
0009 #include <string>
0010 #include <utility> // for pair
0011 #include <vector>
0012
0013 class Eventiterator;
0014 class Fun4AllPrdfInputPoolManager;
0015 class Fun4AllPrdfInputTriggerManager;
0016 class Packet;
0017
0018 class SingleZdcInput : public SinglePrdfInput
0019 {
0020 public:
0021 explicit SingleZdcInput(const std::string &name, Fun4AllPrdfInputPoolManager *inman);
0022 ~SingleZdcInput() override;
0023 void FillPool(const unsigned int nevents) override;
0024
0025 private:
0026 int majority_eventnumber();
0027 int majority_beamclock();
0028 void adjust_eventnumber_offset(const int decided_evtno);
0029 struct PacketInfo
0030 {
0031 std::vector<Packet *> PacketVector;
0032 unsigned int EventFoundCounter = 0;
0033 };
0034 Packet **plist = nullptr;
0035 unsigned int m_NumSpecialEvents = 0;
0036 int *m_PacketEventNumberOffset = nullptr;
0037 std::map<int, std::vector<Packet *>> m_PacketMap;
0038 std::set<int> m_EvtSet;
0039 std::vector<std::pair<int, int>> m_Event;
0040 std::array<unsigned int, 100> rollover{};
0041 std::array<int, 100> previous_eventnumber{};
0042 };
0043
0044 #endif