BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnMQSink.h
Go to the documentation of this file.
1
#ifndef BMNMQSINK_H_
2
#define BMNMQSINK_H_
3
4
#include <cxxabi.h>
// __cxa_demangle
5
// STL
6
#include <memory>
7
#include <string>
8
#include <typeinfo>
9
// Auxillary
10
#include <boost/program_options.hpp>
11
#include <zmq.h>
12
// Root
13
#include <
Rtypes.h
>
14
#include <
TBufferFile.h
>
15
// #include <RootSerializer.h>
16
#include <
TClonesArray.h
>
17
// FairRoot
18
#include <FairRootManager.h>
19
#include <FairSink.h>
20
// #include <fairmq/Message.h>
21
// #include <fairmq/Device.h>
22
// #include <fairmq/ProgOptions.h>
23
////#include <FairMQLogger.h>
24
//
25
// #include <fairmq/DeviceRunner.h>
26
// BmnRoot
27
28
#include "
BmnMath.h
"
29
#include "
BmnParts.h
"
30
31
namespace
bpo = boost::program_options;
32
33
// struct Branch
34
35
class
BmnMQSink
:
public
FairSink
36
{
37
public
:
38
BmnMQSink
(
Int_t
OutPort = 6666);
39
virtual
~BmnMQSink
();
40
41
virtual
Bool_t
InitSink
();
42
virtual
void
Close
();
43
virtual
void
Reset
() {}
44
45
virtual
Sink_Type
GetSinkType
()
46
{
47
printf(
"\t\tType asked\n"
);
48
return
kONLINESINK;
49
}
50
51
virtual
void
FillEventHeader
(
FairEventHeader
*
/* feh */
) { printf(
"\t\tfill event header?\n"
); }
52
53
virtual
void
SetOutTree
(
TTree
*
/* fTree */
)
54
{
55
printf(
"\t\tset out tree?\n"
);
56
return
;
57
}
58
59
virtual
void
Fill
();
60
61
virtual
Int_t
Write
(
const
char
* name,
Int_t
/* option=0 */
,
Int_t
/* bufsize=0 */
)
62
{
63
printf(
"\t\twrite %s?\n"
, name);
64
return
-1;
65
}
66
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);
69
70
virtual
void
WriteFolder
() { printf(
"\t\t WriteFolder\n"
); }
71
virtual
bool
CreatePersistentBranchesAny
();
72
73
virtual
void
WriteObject
(
TObject
* f,
const
char
* name,
Int_t
/* option = 0 */
)
74
{
75
// printf("\t\t WriteObject %08X %s\n", f, name);
76
}
77
virtual
void
WriteGeometry
() { printf(
"\t\tWriteGeometry\n"
); }
78
79
virtual
FairSink
*
CloneSink
();
80
81
bool
IsPersistentBranchAny
(
const
char
* name);
82
83
/* /// Returns a default object for a branch or looks it up when it exists already. */
84
/* /// Returns nullptr when the branch does not exist or looking up with wrong type. */
85
/* /// The returned default object will be filled with data by the framework. */
86
template
<
typename
T>
87
T
GetPersistentBranchAny
(
const
char
* brname)
const
88
{
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()) {
93
// verify type consistency
94
if
(
typeid
(P).hash_code() != iter->second->origtypeinfo.hash_code()) {
95
EmitPersistentBranchWrongTypeWarning
(brname,
typeid
(P).name(), iter->second->origtypeinfo.name());
96
return
nullptr
;
97
}
98
return
static_cast<
T
>
(iter->second->ptraddr);
99
}
100
return
nullptr
;
101
}
102
103
private
:
104
// fair::mq::DeviceRunner fSender;
105
// fair::mq::Device* fSender;//
106
// FairMQDevice* fSender;
107
std::string
fOutChannel
;
108
BmnParts
fParts
;
109
// FairMQParts fPartsF;
110
void
*
fCtx
;
111
void
*
fOutSocket
;
112
Int_t
fOutPort
;
113
114
map<const char*, TObject*>
fObjMap
;
115
map<const char*, TClonesArray*>
fArrMap
;
116
117
// private helper function to emit a warning
118
void
EmitPersistentBranchWrongTypeWarning
(
const
char
* brname,
const
char
* typen1,
const
char
* typen2)
const
;
119
120
BmnMQSink
(
const
BmnMQSink
&);
121
BmnMQSink
&
operator=
(
const
BmnMQSink
&);
122
ClassDef
(
BmnMQSink
, 1)
123
};
124
125
#endif
/* BMNMQSINK_H_ */
BmnParts.h
Bool_t
bool Bool_t
Int_t
int Int_t
Rtypes.h
ClassDef
#define ClassDef(name, id)
TBufferFile.h
TClonesArray.h
BmnMQSink::WriteObject
virtual void WriteObject(TObject *f, const char *name, Int_t)
Definition
BmnMQSink.h:73
BmnMQSink::fOutChannel
std::string fOutChannel
Definition
BmnMQSink.h:107
BmnMQSink::GetPersistentBranchAny
T GetPersistentBranchAny(const char *brname) const
Definition
BmnMQSink.h:87
BmnMQSink::Fill
virtual void Fill()
Definition
BmnMQSink.cxx:173
BmnMQSink::WriteFolder
virtual void WriteFolder()
Definition
BmnMQSink.h:70
BmnMQSink::fOutPort
Int_t fOutPort
Definition
BmnMQSink.h:112
BmnMQSink::InitSink
virtual Bool_t InitSink()
Definition
BmnMQSink.cxx:20
BmnMQSink::~BmnMQSink
virtual ~BmnMQSink()
Definition
BmnMQSink.cxx:14
BmnMQSink::RegisterAny
virtual void RegisterAny(const char *brname, const std::type_info &oi, const std::type_info &pi, void *obj)
Definition
BmnMQSink.cxx:145
BmnMQSink::fOutSocket
void * fOutSocket
Definition
BmnMQSink.h:111
BmnMQSink::CreatePersistentBranchesAny
virtual bool CreatePersistentBranchesAny()
Definition
BmnMQSink.cxx:161
BmnMQSink::FillEventHeader
virtual void FillEventHeader(FairEventHeader *)
Definition
BmnMQSink.h:51
BmnMQSink::WriteGeometry
virtual void WriteGeometry()
Definition
BmnMQSink.h:77
BmnMQSink::operator=
BmnMQSink & operator=(const BmnMQSink &)
BmnMQSink::Close
virtual void Close()
Definition
BmnMQSink.cxx:101
BmnMQSink::Write
virtual Int_t Write(const char *name, Int_t, Int_t)
Definition
BmnMQSink.h:61
BmnMQSink::fCtx
void * fCtx
Definition
BmnMQSink.h:110
BmnMQSink::IsPersistentBranchAny
bool IsPersistentBranchAny(const char *name)
Definition
BmnMQSink.cxx:152
BmnMQSink::Reset
virtual void Reset()
Definition
BmnMQSink.h:43
BmnMQSink::RegisterImpl
virtual void RegisterImpl(const char *, const char *, void *)
Definition
BmnMQSink.cxx:108
BmnMQSink::BmnMQSink
BmnMQSink(Int_t OutPort=6666)
Definition
BmnMQSink.cxx:5
BmnMQSink::GetSinkType
virtual Sink_Type GetSinkType()
Definition
BmnMQSink.h:45
BmnMQSink::EmitPersistentBranchWrongTypeWarning
void EmitPersistentBranchWrongTypeWarning(const char *brname, const char *typen1, const char *typen2) const
Definition
BmnMQSink.cxx:167
BmnMQSink::SetOutTree
virtual void SetOutTree(TTree *)
Definition
BmnMQSink.h:53
BmnMQSink::fArrMap
map< const char *, TClonesArray * > fArrMap
Definition
BmnMQSink.h:115
BmnMQSink::fParts
BmnParts fParts
Definition
BmnMQSink.h:108
BmnMQSink::fObjMap
map< const char *, TObject * > fObjMap
Definition
BmnMQSink.h:114
BmnMQSink::CloneSink
virtual FairSink * CloneSink()
Definition
BmnMQSink.cxx:244
BmnParts
Definition
BmnParts.h:10
FairEventHeader
FairSink
TObject
TTree
BmnMath.h
install
include
BmnMQSink.h
Generated on
for BmnRoot by
1.17.0