BmnRoot
Loading...
Searching...
No Matches
BmnProfilometerSource.h
Go to the documentation of this file.
1#ifndef BMNPROFILOMETERSOURCE_H
2#define BMNPROFILOMETERSOURCE_H
3
4#include <iostream>
5#include <string>
6#include <cstring>
7#include <vector>
8#include <zmq.h>
9// ROOT
10#include "TChain.h"
11#include "TClonesArray.h"
12#include <TBufferFile.h>
13#include <TPRegexp.h>
14// FairRoot
15#include "FairRootManager.h"
16#include "FairRootFileSink.h"
17#include "FairOnlineSource.h"
18#include "FairEventHeader.h"
19#include "FairRunAna.h"
20// BmnRoot
21#include "BmnADCDigit.h"
22#include "BmnEnums.h"
23#include "DigiArrays.h"
24#include "BmnEventHeader.h"
25#include "BmnProfRawTools.h"
26
27using namespace std;
28
29struct ProfBoard {
31 board_id = 0;
32 }
33 uint16_t board_id;
34 vector<vector<uint16_t > > adc1, adc2;
35// vector<vector<uint32_t > > adc1, adc2;
36 vector<uint16_t> adc1_word, adc2_word;
37// vector<uint32_t> adc1_word, adc2_word;
38// vector<vector<int>> adc1_word_char;
39};
40
41class BmnProfilometerSource : public FairOnlineSource {
42public:
44 vector<string> addr = {"tcp://159.93.49.126:5601", "tcp://159.93.49.126:5602"},
45 vector<string> boardIds = {"board1", "board2"}
46 );
48
49 Bool_t Init();
50 Int_t ReadEvent(UInt_t i = 0);
51 void Close();
52 // void Reset();
53 void FillEventHeader(FairEventHeader* feh);
54
55private:
56 const string DataHeader = "DAT";
57 const string DataTrailer = "SPILLEND";
58 BmnStatus ProcessBuffer(uint32_t *word, size_t len, ProfBoard * board);
59 BmnStatus ReceiveSpill();
60
61 void * _ctx;
62 void * _rawSocket;
63 vector<void*> fRawSockets;
64
65 Bool_t fFirstEvent;
66
67 bool keepWorking = kTRUE;
68 bool isReceiving = kTRUE;
69
70 Int_t fRunId;
71 Int_t fPeriodId;
72
73 Int_t fVerbosity;
74
75 Int_t iEventNumber;
76 bool isSpillStart;
77 BmnEventHeader* fEventHead;
78 TClonesArray* fArr;
79 TClonesArray* fArrTemp;
80 vector<string> fAddrs;
81 vector<string> fBoardIds;
82// vector<TClonesArray*> fProfADC;
83 map<string, ProfBoard*> fBoardsMap;
84
85// vector<vector<uint32_t > > adc1, adc2;
86// vector<uint32_t> adc1_word, adc2_word;
87// vector<vector<int>> adc1_word_char;
88
89 ClassDef(BmnProfilometerSource, 1);
90};
91
92#endif /* BMNPROFILOMETERSOURCE_H */
int i
Definition P4_F32vec4.h:22
BmnStatus
Definition BmnEnums.h:24
Int_t ReadEvent(UInt_t i=0)
virtual ~BmnProfilometerSource()
BmnProfilometerSource(vector< string > addr={"tcp://159.93.49.126:5601", "tcp://159.93.49.126:5602"}, vector< string > boardIds={"board1", "board2"})
void FillEventHeader(FairEventHeader *feh)
Define enumerations used in tracking.
STL namespace.
vector< vector< uint16_t > > adc1
vector< uint16_t > adc2_word
vector< vector< uint16_t > > adc2
vector< uint16_t > adc1_word