/** * CbmDeviceMonitorT0.h * * @since 2019-03-26 * @author F. Uhlig */ #ifndef CBMDEVICEMONITORT0_H_ #define CBMDEVICEMONITORT0_H_ #include "FairMQDevice.h" #include "Timeslice.hpp" #include "MicrosliceDescriptor.hpp" #include "TMessage.h" #include "Rtypes.h" #include "TObjArray.h" #include "CbmMcbm2018MonitorAlgoT0.h" #include #include class TList; class CbmDeviceMonitorT0: public FairMQDevice { public: CbmDeviceMonitorT0(); virtual ~CbmDeviceMonitorT0(); protected: virtual void InitTask(); bool HandleData(FairMQMessagePtr&, int); private: uint64_t fNumMessages; std::vector fAllowedChannels = {"t0component","parameters","histogram-in"}; std::vector> fChannelsToSend = { {},{},{},{} }; bool CheckTimeslice(const fles::Timeslice& ts); void PrintMicroSliceDescriptor(const fles::MicrosliceDescriptor& mdsc); bool IsChannelNameAllowed(std::string channelName); Bool_t InitContainers(); Bool_t DoUnpack(const fles::Timeslice& ts, size_t component); void Finish(); bool SendHistograms(); CbmMcbm2018MonitorAlgoT0* fAlgo; TList* fParCList; TObjArray fArrayHisto; }; // special class to expose protected TMessage constructor class CbmMQTMessage : public TMessage { public: CbmMQTMessage(void* buf, Int_t len) : TMessage(buf, len) { ResetBit(kIsOwner); } }; #endif /* CBMDEVICEMONITORT0_H_ */