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>
63 , fHasBoostSerialization(false)
64 , fOutputFileName(outputFileName)
67 gSystem->ResetSignal(kSigInterrupt);
68 gSystem->ResetSignal(kSigTermination);
71 using namespace baseMQ::tools::resolve;
73 if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value)
75 if (has_BoostSerialization<
PndSdsHit,
void(boost::archive::binary_iarchive&,
const unsigned int)>::value == 1)
77 fHasBoostSerialization =
true;
84 fBranchNameList->Write(
"BranchList", TObject::kSingleKey);
87 if (fHitVector.size() > 0)
95 fOutputFileName = fileName;
100 fOutput =
new TClonesArray(
"PndSdsHit");
102 std::stringstream ss;
104 ss << fOutputFileName.c_str();
107 fOutFile =
new TFile(ss.str().c_str(),
"recreate");
108 fTree =
new TTree(
"pndsim",
"Test output");
109 fTree->Branch(
"Output",
"TClonesArray", &fOutput, 64000, 99);
110 fBranchNameList =
new TList();
111 fBranchNameList->AddLast(
new TObjString(
"Output"));
114 template <
class Archive>
130 #ifndef __CINT__ // for BOOST serialization
131 friend class boost::serialization::access;
134 #endif // for BOOST serialization
PndMQFileSinkHits(std::string outputFileName="FilesSinkHits.root")
virtual void SetFileName(std::string fileName)
std::string fOutputFileName
virtual ~PndMQFileSinkHits()
vector< vector< PndSdsHit > > fHitVector
virtual void InitOutputFile(TString defaultId="100")
bool fHasBoostSerialization
void serialize(Archive &ar, const unsigned int version)