15 #ifndef PndMQFileSamplerHits_H_ 16 #define PndMQFileSamplerHits_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/binary_oarchive.hpp> 44 #include <boost/serialization/vector.hpp> 57 enum { InputFile = FairMQDevice::Last, Last };
60 : fInFile(nullptr), fTree(nullptr), fInput(nullptr), fHitVector(), fHasBoostSerialization(false), fInputFileName(inputFileName), fBranchNameList(0)
62 gSystem->ResetSignal(kSigInterrupt);
63 gSystem->ResetSignal(kSigTermination);
66 using namespace baseMQ::tools::resolve;
68 if (is_same<boost::archive::binary_oarchive, boost::archive::binary_oarchive>::value) {
69 if (has_BoostSerialization<
PndSdsHit,
void(boost::archive::binary_oarchive &,
const unsigned int)>::value == 1) {
70 fHasBoostSerialization =
true;
80 if (fHitVector.size() > 0) {
85 virtual void SetFileName(std::string fileName) { fInputFileName = fileName; }
89 fInput =
new TClonesArray(
"PndSdsHit");
91 fInFile =
new TFile(fInputFileName.c_str(),
"read");
92 fTree = (TTree *)fInFile->Get(
"pndsim");
93 fTree->SetBranchAddress(
"Output", &fInput);
96 template <
class Archive>
97 void serialize(Archive &ar,
const unsigned int version)
105 case InputFile: fInputFileName = value;
break;
106 default: FairMQDevice::SetProperty(key, value);
break;
110 std::string
GetProperty(
const int key,
const std::string &default_ )
113 case InputFile:
return fInputFileName;
114 default:
return FairMQDevice::GetProperty(key, default_);
124 TClonesArray *fInput;
125 TList *fBranchNameList;
126 std::string fInputFileName;
128 #ifndef __CINT__ // for BOOST serialization 129 friend class boost::serialization::access;
131 vector<vector<PndSdsHit>> fHitVector;
132 bool fHasBoostSerialization;
133 #endif // for BOOST serialization virtual void SetFileName(std::string fileName)
void serialize(Archive &ar, const unsigned int version)
virtual void InitInputFile()
void SetProperty(const int key, const std::string &value)
std::string GetProperty(const int key, const std::string &default_)
PndMQFileSamplerHits(std::string inputFileName="")
virtual ~PndMQFileSamplerHits()