Belle II Software  release-05-01-25
HLTStreamHelper.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 #include <framework/pcore/zmq/utils/StreamHelper.h>
12 #include <framework/pcore/zmq/messages/ZMQNoIdMessage.h>
13 #include <framework/datastore/StoreObjPtr.h>
14 #include <framework/datastore/StoreArray.h>
15 
16 #include <rawdata/dataobjects/RawFTSW.h>
17 #include <rawdata/dataobjects/RawTLU.h>
18 #include <rawdata/dataobjects/RawCDC.h>
19 #include <rawdata/dataobjects/RawSVD.h>
20 #include <rawdata/dataobjects/RawECL.h>
21 #include <rawdata/dataobjects/RawARICH.h>
22 #include <rawdata/dataobjects/RawTOP.h>
23 #include <rawdata/dataobjects/RawKLM.h>
24 #include <rawdata/dataobjects/RawTRG.h>
25 #include <rawdata/dataobjects/RawCOPPER.h>
26 #include <rawdata/dataobjects/RawPXD.h>
27 #include <tracking/dataobjects/ROIpayload.h>
28 #include <tracking/dataobjects/ROIid.h>
29 #include <framework/dataobjects/EventMetaData.h>
30 #include <mdst/dataobjects/SoftwareTriggerResult.h>
31 #include <hlt/softwaretrigger/dataobjects/SoftwareTriggerVariables.h>
32 #include <mdst/dataobjects/TRGSummary.h>
33 
34 #include <string>
35 #include <memory>
36 
37 namespace Belle2 {
43  class HLTStreamHelper {
45  public:
47  void initialize();
48 
50  std::unique_ptr<ZMQNoIdMessage> stream(bool addPersistentDurability, bool streamTransientObjects);
51 
53  std::unique_ptr<ZMQNoIdMessage> streamRaw();
54 
56  std::unique_ptr<ZMQNoIdMessage> streamHistograms(bool compressed = true);
57 
59  void read(std::unique_ptr<ZMQNoIdMessage> message);
60 
62  void registerStoreObjects(bool addExpressRecoObjects);
63 
64  private:
66  StreamHelper m_streamHelper;
67 
69  StoreObjPtr<EventMetaData> m_eventMetaData;
71  StoreArray<RawSVD> m_rawSVDs;
73  StoreArray<RawCDC> m_rawCDCs;
75  StoreArray<RawTOP> m_rawTOPs;
88 
101 
103  std::vector<char> m_outputBuffer;
105  unsigned int m_maximalCompressedSize = 100'000'000;
106 
108  zmq::message_t getROIMessageIfViable() const;
109  };
111 }
Belle2::HLTStreamHelper::m_softwareTriggerResult
StoreObjPtr< SoftwareTriggerResult > m_softwareTriggerResult
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:100
Belle2::HLTStreamHelper::m_rawSVDs
StoreArray< RawSVD > m_rawSVDs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:79
Belle2::HLTStreamHelper::read
void read(std::unique_ptr< ZMQNoIdMessage > message)
Read in a ZMQ message and rebuilt the data store from it.
Definition: HLTStreamHelper.cc:190
Belle2::HLTStreamHelper::m_roiPayload
StoreObjPtr< ROIpayload > m_roiPayload
Store Objects for HLT use.
Definition: HLTStreamHelper.h:95
Belle2::HLTStreamHelper::m_maximalCompressedSize
unsigned int m_maximalCompressedSize
Maximal size of the compression buffer.
Definition: HLTStreamHelper.h:113
Belle2::HLTStreamHelper::m_rois
StoreArray< ROIid > m_rois
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:108
Belle2::HLTStreamHelper::registerStoreObjects
void registerStoreObjects(bool addExpressRecoObjects)
Register all needed store objects, either only the raw data, ROIs and event meta data (for HLT) or ad...
Definition: HLTStreamHelper.cc:65
Belle2::HLTStreamHelper::m_outputBuffer
std::vector< char > m_outputBuffer
Temporary buffer for storing the compressed result.
Definition: HLTStreamHelper.h:111
Belle2::HLTStreamHelper::getROIMessageIfViable
zmq::message_t getROIMessageIfViable() const
If the ROI payload data storobject is filled, write out the roi message (otherwise an empty message)
Definition: HLTStreamHelper.cc:139
Belle2::HLTStreamHelper::m_rawPXDs
StoreArray< RawPXD > m_rawPXDs
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:106
Belle2::HLTStreamHelper::m_randomGenerator
StoreObjPtr< RandomGenerator > m_randomGenerator
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:98
Belle2::HLTStreamHelper::m_rawFTSWs
StoreArray< RawFTSW > m_rawFTSWs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:93
Belle2::HLTStreamHelper::m_rawCDCs
StoreArray< RawCDC > m_rawCDCs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:81
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::HLTStreamHelper::m_streamHelper
StreamHelper m_streamHelper
We use the framework stream helper.
Definition: HLTStreamHelper.h:74
Belle2::HLTStreamHelper::streamRaw
std::unique_ptr< ZMQNoIdMessage > streamRaw()
Stream the data store into an event message and add SendHeader and SendTrailer around the message....
Definition: HLTStreamHelper.cc:88
Belle2::HLTStreamHelper::m_rawTOPs
StoreArray< RawTOP > m_rawTOPs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:83
Belle2::HLTStreamHelper::m_softwareTriggerVariables
StoreObjPtr< SoftwareTrigger::SoftwareTriggerVariables > m_softwareTriggerVariables
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:102
Belle2::HLTStreamHelper::m_rawKLMs
StoreArray< RawKLM > m_rawKLMs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:89
Belle2::HLTStreamHelper::stream
std::unique_ptr< ZMQNoIdMessage > stream(bool addPersistentDurability, bool streamTransientObjects)
Stream the data store into an event message. Add ROI as additional message (if valid).
Definition: HLTStreamHelper.cc:130
Belle2::HLTStreamHelper::m_eventMetaData
StoreObjPtr< EventMetaData > m_eventMetaData
Store Objects for HLT use.
Definition: HLTStreamHelper.h:77
Belle2::HLTStreamHelper::m_rawECLs
StoreArray< RawECL > m_rawECLs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:87
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::HLTStreamHelper::m_triggerSummary
StoreObjPtr< TRGSummary > m_triggerSummary
Additional Store Objects for ExpressReco use.
Definition: HLTStreamHelper.h:104
Belle2::HLTStreamHelper::initialize
void initialize()
Initialize this class. Call this e.g. in the first event.
Definition: HLTStreamHelper.cc:60
Belle2::HLTStreamHelper::streamHistograms
std::unique_ptr< ZMQNoIdMessage > streamHistograms(bool compressed=true)
Stream all objects derived from TH1 into a message. Only the last subfolder is streamed by prefixing ...
Definition: HLTStreamHelper.cc:155
Belle2::HLTStreamHelper::m_rawARICHs
StoreArray< RawARICH > m_rawARICHs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:85
Belle2::HLTStreamHelper::m_rawTRGs
StoreArray< RawTRG > m_rawTRGs
Store Objects for HLT use.
Definition: HLTStreamHelper.h:91