File indexing completed on 2025-08-05 08:16:12
0001
0002
0003 #ifndef FUN4ALLRAW_FUN4ALLEVENTOUTSTREAM_H
0004 #define FUN4ALLRAW_FUN4ALLEVENTOUTSTREAM_H
0005
0006
0007
0008
0009 #include <fun4all/Fun4AllBase.h>
0010
0011 #include <Event/phenixTypes.h>
0012
0013 #include <boost/numeric/interval.hpp>
0014
0015 #include <map>
0016 #include <string>
0017
0018 class Event;
0019 class Packet;
0020 class Fun4AllEventOutputManager;
0021
0022 class Fun4AllEventOutStream : public Fun4AllBase
0023 {
0024 public:
0025 virtual ~Fun4AllEventOutStream();
0026 virtual int StreamStatus() { return 0; }
0027 virtual int WriteEvent(Event *evt);
0028 virtual int WriteEventOut(Event * ) { return 0; }
0029 virtual int CloseOutStream() { return 0; }
0030
0031 int AddPacket(const int ipkt);
0032 int DropPacket(const int ipkt);
0033 int AddPacketRange(const int minpacket, const int maxpacket);
0034 int DropPacketRange(const int minpacket, const int maxpacket);
0035 void SetManager(Fun4AllEventOutputManager *myman) { m_MyManager = myman; }
0036
0037 protected:
0038 Fun4AllEventOutStream(const std::string &name = "OUTSTREAM");
0039 int resize_evtbuf(const unsigned int newsize);
0040 Fun4AllEventOutputManager *MyManager() { return m_MyManager; }
0041
0042 private:
0043 PHDWORD *evtbuf {nullptr};
0044 Fun4AllEventOutputManager *m_MyManager {nullptr};
0045 Packet **plist {nullptr};
0046 unsigned int evtbuf_size {0};
0047
0048
0049 int add_or_remove {0};
0050 int max_npackets {1000};
0051 int npackets {0};
0052 int default_addall {0};
0053 std::map<int, boost::numeric::interval<int> > addpktrange;
0054 std::map<int, boost::numeric::interval<int> > droppktrange;
0055 };
0056
0057 #endif