10#include <boost/program_options.hpp>
14#include <TBufferFile.h>
16#include <TClonesArray.h>
18#include <FairRootManager.h>
31namespace bpo = boost::program_options;
47 printf(
"\t\tType asked\n");
51 virtual void FillEventHeader(FairEventHeader* ) { printf(
"\t\tfill event header?\n"); }
55 printf(
"\t\tset out tree?\n");
61 virtual Int_t
Write(
const char* name, Int_t , Int_t )
63 printf(
"\t\twrite %s?\n", name);
67 virtual void RegisterImpl(
const char*,
const char*,
void*);
68 virtual void RegisterAny(
const char* brname,
const std::type_info& oi,
const std::type_info& pi,
void* obj);
89 static_assert(std::is_pointer<T>::value,
"Return type of GetPersistentBranchAny has to be a pointer");
90 using P =
typename std::remove_pointer<T>::type;
91 auto iter = fPersistentBranchesMap.find(brname);
92 if (iter != fPersistentBranchesMap.end()) {
94 if (
typeid(P).hash_code() != iter->second->origtypeinfo.hash_code()) {
95 EmitPersistentBranchWrongTypeWarning(brname,
typeid(P).name(), iter->second->origtypeinfo.name());
98 return static_cast<T
>(iter->second->ptraddr);
107 std::string fOutChannel;
114 map<const char*, TObject*> fObjMap;
115 map<const char*, TClonesArray*> fArrMap;
118 void EmitPersistentBranchWrongTypeWarning(
const char* brname,
const char* typen1,
const char* typen2)
const;
virtual void WriteObject(TObject *f, const char *name, Int_t)
T GetPersistentBranchAny(const char *brname) const
virtual void WriteFolder()
virtual Bool_t InitSink()
virtual void RegisterAny(const char *brname, const std::type_info &oi, const std::type_info &pi, void *obj)
virtual bool CreatePersistentBranchesAny()
virtual void FillEventHeader(FairEventHeader *)
virtual void WriteGeometry()
virtual Int_t Write(const char *name, Int_t, Int_t)
bool IsPersistentBranchAny(const char *name)
virtual void RegisterImpl(const char *, const char *, void *)
virtual Sink_Type GetSinkType()
virtual void SetOutTree(TTree *)
virtual FairSink * CloneSink()