Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:16:12

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef FUN4ALLRAW_FUN4ALLEVENTOUTSTREAM_H
0004 #define FUN4ALLRAW_FUN4ALLEVENTOUTSTREAM_H
0005 
0006 // base class for output streams writing Events in
0007 // one or the other form
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 * /*evt*/) { 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};  // pointer to my master
0045   Packet **plist {nullptr};
0046   unsigned int evtbuf_size {0};
0047   // flag to stear behavior, if 1 only add packets (drop all others), if 0 no filtering,
0048   // if -1 accept all, drop selected and afterwards add back selected ones
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