15 #ifndef PndMQFileSinkHits_H_ 16 #define PndMQFileSinkHits_H_ 23 #include "TClonesArray.h" 28 #include "TObjString.h" 30 #include "FairMQDevice.h" 31 #include "FairMQLogger.h" 35 #include "baseMQtools.h" 40 #include <boost/thread.hpp> 41 #include <boost/bind.hpp> 42 #include <boost/serialization/access.hpp> 43 #include <boost/archive/text_iarchive.hpp> 44 #include <boost/archive/binary_iarchive.hpp> 45 #include <boost/serialization/vector.hpp> 58 : fOutFile(nullptr), fTree(nullptr), fOutput(nullptr), fHitVector(), fHasBoostSerialization(false), fOutputFileName(outputFileName), fBranchNameList(0)
60 gSystem->ResetSignal(kSigInterrupt);
61 gSystem->ResetSignal(kSigTermination);
64 using namespace baseMQ::tools::resolve;
66 if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value) {
67 if (has_BoostSerialization<
PndSdsHit,
void(boost::archive::binary_iarchive &,
const unsigned int)>::value == 1) {
68 fHasBoostSerialization =
true;
75 fBranchNameList->Write(
"BranchList", TObject::kSingleKey);
78 if (fHitVector.size() > 0) {
83 virtual void SetFileName(std::string fileName) { fOutputFileName = fileName; }
87 fOutput =
new TClonesArray(
"PndSdsHit");
91 ss << fOutputFileName.c_str();
93 fOutFile =
new TFile(ss.str().c_str(),
"recreate");
94 fTree =
new TTree(
"pndsim",
"Test output");
95 fTree->Branch(
"Output",
"TClonesArray", &fOutput, 64000, 99);
96 fBranchNameList =
new TList();
97 fBranchNameList->AddLast(
new TObjString(
"Output"));
100 template <
class Archive>
112 TClonesArray *fOutput;
113 TList *fBranchNameList;
114 std::string fOutputFileName;
116 #ifndef __CINT__ // for BOOST serialization 117 friend class boost::serialization::access;
118 vector<vector<PndSdsHit>> fHitVector;
119 bool fHasBoostSerialization;
120 #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)