15 #ifndef PndMQFileSink_H_ 16 #define PndMQFileSink_H_ 23 #include "TClonesArray.h" 28 #include "FairMQDevice.h" 29 #include "FairMQLogger.h" 33 #include "baseMQtools.h" 38 #include <boost/thread.hpp> 39 #include <boost/bind.hpp> 40 #include <boost/serialization/access.hpp> 41 #include <boost/archive/text_iarchive.hpp> 42 #include <boost/archive/binary_iarchive.hpp> 43 #include <boost/serialization/vector.hpp> 55 PndMQFileSink() : fOutFile(nullptr), fTree(nullptr), fOutput(nullptr), fHitVector(), fHasBoostSerialization(false)
57 gSystem->ResetSignal(kSigInterrupt);
58 gSystem->ResetSignal(kSigTermination);
61 using namespace baseMQ::tools::resolve;
63 if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value) {
64 if (has_BoostSerialization<
PndSdsDigiTopix4,
void(boost::archive::binary_iarchive &,
const unsigned int)>::value == 1) {
65 fHasBoostSerialization =
true;
74 if (fHitVector.size() > 0) {
81 fOutput =
new TClonesArray(
"PndSdsDigiTopix4");
83 fOutFile =
new TFile(
"Filesink1.root",
"recreate");
84 fTree =
new TTree(
"MQOut",
"Test output");
85 fTree->Branch(
"Output",
"TClonesArray", &fOutput, 64000, 99);
88 template <
class Archive>
89 void serialize(Archive &ar,
const unsigned int version)
100 TClonesArray *fOutput;
102 #ifndef __CINT__ // for BOOST serialization 103 friend class boost::serialization::access;
104 vector<PndSdsDigiTopix4> fHitVector;
105 bool fHasBoostSerialization;
106 #endif // for BOOST serialization
Data class to store the digi output of a pixel module.
virtual void InitOutputFile(TString defaultId="100")
void serialize(Archive &ar, const unsigned int version)