27 #ifndef PndMQFileSinkHits_H_ 28 #define PndMQFileSinkHits_H_ 35 #include "TClonesArray.h" 40 #include "TObjString.h" 42 #include "FairMQDevice.h" 43 #include "FairMQLogger.h" 47 #include "baseMQtools.h" 52 #include <boost/thread.hpp> 53 #include <boost/bind.hpp> 54 #include <boost/serialization/access.hpp> 55 #include <boost/archive/text_iarchive.hpp> 56 #include <boost/archive/binary_iarchive.hpp> 57 #include <boost/serialization/vector.hpp> 70 : fOutFile(nullptr), fTree(nullptr), fOutput(nullptr), fHitVector(), fHasBoostSerialization(false), fOutputFileName(outputFileName), fBranchNameList(0)
72 gSystem->ResetSignal(kSigInterrupt);
73 gSystem->ResetSignal(kSigTermination);
76 using namespace baseMQ::tools::resolve;
78 if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value) {
79 if (has_BoostSerialization<
PndSdsHit,
void(boost::archive::binary_iarchive &,
const unsigned int)>::value == 1) {
80 fHasBoostSerialization =
true;
87 fBranchNameList->Write(
"BranchList", TObject::kSingleKey);
90 if (fHitVector.size() > 0) {
95 virtual void SetFileName(std::string fileName) { fOutputFileName = fileName; }
99 fOutput =
new TClonesArray(
"PndSdsHit");
101 std::stringstream ss;
103 ss << fOutputFileName.c_str();
105 fOutFile =
new TFile(ss.str().c_str(),
"recreate");
106 fTree =
new TTree(
"pndsim",
"Test output");
107 fTree->Branch(
"Output",
"TClonesArray", &fOutput, 64000, 99);
108 fBranchNameList =
new TList();
109 fBranchNameList->AddLast(
new TObjString(
"Output"));
112 template <
class Archive>
124 TClonesArray *fOutput;
125 TList *fBranchNameList;
126 std::string fOutputFileName;
128 #ifndef __CINT__ // for BOOST serialization 129 friend class boost::serialization::access;
130 vector<vector<PndSdsHit>> fHitVector;
131 bool fHasBoostSerialization;
132 #endif // for BOOST serialization PndMQFileSinkHits(std::string outputFileName="FilesSinkHits.root")
virtual void SetFileName(std::string fileName)
virtual ~PndMQFileSinkHits()
virtual void InitOutputFile(TString defaultId="100")
void serialize(Archive &ar, const unsigned int version)