27 #ifndef PndMQFileSink_H_ 28 #define PndMQFileSink_H_ 35 #include "TClonesArray.h" 40 #include "FairMQDevice.h" 41 #include "FairMQLogger.h" 45 #include "baseMQtools.h" 50 #include <boost/thread.hpp> 51 #include <boost/bind.hpp> 52 #include <boost/serialization/access.hpp> 53 #include <boost/archive/text_iarchive.hpp> 54 #include <boost/archive/binary_iarchive.hpp> 55 #include <boost/serialization/vector.hpp> 67 PndMQFileSink() : fOutFile(nullptr), fTree(nullptr), fOutput(nullptr), fHitVector(), fHasBoostSerialization(false)
69 gSystem->ResetSignal(kSigInterrupt);
70 gSystem->ResetSignal(kSigTermination);
73 using namespace baseMQ::tools::resolve;
75 if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value) {
76 if (has_BoostSerialization<
PndSdsDigiTopix4,
void(boost::archive::binary_iarchive &,
const unsigned int)>::value == 1) {
77 fHasBoostSerialization =
true;
86 if (fHitVector.size() > 0) {
93 fOutput =
new TClonesArray(
"PndSdsDigiTopix4");
95 fOutFile =
new TFile(
"Filesink1.root",
"recreate");
96 fTree =
new TTree(
"MQOut",
"Test output");
97 fTree->Branch(
"Output",
"TClonesArray", &fOutput, 64000, 99);
100 template <
class Archive>
112 TClonesArray *fOutput;
114 #ifndef __CINT__ // for BOOST serialization 115 friend class boost::serialization::access;
116 vector<PndSdsDigiTopix4> fHitVector;
117 bool fHasBoostSerialization;
118 #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)