Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//Created by KVClassFactory on Sat Jun 14 15:18:15 2014
//Author: gruyer,,,
#ifndef __merger_spy_H
#define __merger_spy_H
#include "KVConfig.h"
#include "TThread.h"
#include "TDatime.h"
#include "TH1F.h"
#include "TList.h"
namespace zmq {
class socket_t;
}
#include <unordered_map>
#include "MFMFileReader.h"
#include "MFMBufferReader.h"
#include <MFMFaziaFrame.h>
#include <MFMMesytecMDPPFrame.h>
#include "MergerInfo.pb.h"
class merger_spy : TNamed
{
private:
MFMBufferReader* fReader;
TThread* fThread;
zmq::socket_t* fZmqIn, *fZmqOut;
Double_t fStartTime;
TDatime fTimeStamp;
Bool_t fSimuMode;
TTimer fTimer;
Double_t fDt;
TList histos;
bool zmqin,zmqout;
ULong64_t fazia_ts,indra_ts;
uint16_t fLabel1, fLabel2;
ULong64_t lasttimestamp;
ULong64_t lastINDRAtimestamp;
ULong64_t lastFAZIAtimestamp;
ULong64_t INDRA_bit_corrector;
bool merged;
UShort_t TIMEML_UP,TIMEML,TIMEH;
int inmerge_indra,inmerge_fazia;
ULong64_t lastmergeTSforfreq;
UInt_t nmergedforfreq;
int nev_fazia, nev_faziasolo;
int nev_indra, nev_indrasolo;
int nev_merged;
int fazia_ts_errors, indra_ts_errors, random_errors;
TH1* h_delta_timestamp;
TH1* h_dt_lastmerge;
TH1* h_dt_lastmerge2;
TH1* h_dt_indra;
TH1* h_dt_indra_ms;
TH1* h_dt_fazia;
TH1* h_events;
TH1* h_dt_fazia_indra_faziaseul;
TH1* h_dt_fazia_indra_merge;
TH1* h_mult_merge;
// TH2F* h_mult_merge_qui;
TH1* h_coinc_freq_avg_500;
TH1* h_coinc_freq_avg_100;
TH1* h_coinc_freq_avg_1000;
public:
int nbuffer;
private:
void fill_protobuf(myprotobuf::merger_info &minfo);
enum {
INDRA=1,
FAZIA=10
};
public:
merger_spy(int send_delay=1,bool simu=false);
virtual ~merger_spy();
void ConnectZmqIn(const std::string& urlin);
void ConnectZmqOut(const std::string& urlout);
void Run();
void Start();
static void* Process(void* obj);
Bool_t HandleTimer(TTimer*);
void Stop();
void* TreatEvent(MFMBufferReader* reader);
// ClassDef(merger_spy,1)
void treat_indra_frame(const MFMCommonFrame& frame);
void treat_fazia_frame(const MFMCommonFrame& frame);
int handle_single_mfmframe(const MFMCommonFrame& frame);
void handle_merged_mfmframe(const MFMMergeFrameManager& mergeframe);
};
#endif