BmnRoot
Loading...
Searching...
No Matches
BmnMonitor.h
Go to the documentation of this file.
1#ifndef BMNMONITOR_H
2#define BMNMONITOR_H 1
3// STL
4#include <chrono>
5#include <exception>
6#include <iterator>
7#include <regex>
8// Auxillary
9#include <zmq.h>
10// FairSoft
11#include <TBufferFile.h>
12#include <TChain.h>
13#include <TClonesArray.h>
14#include <TColor.h>
15#include <TFile.h>
16#include <TFolder.h>
17#include <THttpServer.h>
18#include <TList.h>
19#include <TNamed.h>
20#include <TString.h>
21#include <TSystemDirectory.h>
22#include <TSystemFile.h>
23// BmnRoot
24#include <BmnEventHeader.h>
25#include <BmnRawDataDecoder.h>
26// BmnRoot Monitor
27// #include "BmnDataReceiver.h"
28#include "BmnOnlineDecoder.h"
29
30#include <BmnRunInfo.h>
31
32#define TTREE_MAX_SIZE 3e11
33
34class BmnMonitor : public TNamed
35{
36 public:
37 BmnMonitor();
38 virtual ~BmnMonitor();
39 void MonitorStreamZ(TString dir, TString refDir = "", TString decoAddr = "localhost", Int_t webPort = 9000);
40 TObjArray* GetAlikeRunsByElog(uint32_t periodID, uint32_t rinID);
41 TObjArray* GetAlikeRunsByUniDB(uint32_t periodID, uint32_t rinID);
42
43 void SetPeriodID(Int_t v) { this->fPeriodID = v; }
44 Int_t GetPeriodID() const { return fPeriodID; }
45
46 void SetBmnSetup(BmnSetup v) { fSetup = v; }
47 BmnSetup GetBmnSetup() const { return fSetup; }
48
49 void SetHistFileNameAdd(TString add) { fHistFileNameAdd = add; }
50
51 void SetDetectorSetup(uint64_t setup) { fDetectorSetup = setup; }
52
53 void SetNItersToUpdate(uint64_t val) { fNItersToUpdate = val; }
54
55 void SetSlowMode(bool val) { fIsSlowMode = val; }
56
57 private:
58 void InitServer();
59 void ProcessDigi(Int_t iEv);
60 void RegisterAll();
61 void UpdateRuns();
62 BmnStatus CreateFile(uint32_t runID = 0);
63 BmnStatus OpenStream();
64 void FinishRun();
65 void InitHistVectors(vector<BmnHist*>& vec, TString refName = "");
66 inline void ProcessRequests();
67
68 void* _ctx;
69 void* _decoSocket;
70 TString _curFile;
71 TString _curDir;
72 TString _refDir;
73 TString fRawDecoAddr;
74 TTree* fRecoTree;
75 TTree* fRecoTree4Show;
76 TFile* fHistOut;
77 TFile* fHistOutTemp;
78 THttpServer* fServer;
79 DigiArrays* fDigiArrays;
80
81 uint64_t fDetectorSetup;
82
83 vector<BmnHist*> bhVec;
84 vector<BmnHist*> bhVec4show;
85 vector<bool> bhVecIsStat; // temp crutch to distinguish stat events histogram sets
86
87 TCanvas* infoCanvas;
88 // TList *refList;
89 TList* refTable;
90 TList* runPub;
91 BmnRunInfo* CurRun;
92
93 Bool_t keepWorking;
94 Int_t _webPort;
95 Int_t fTest;
96 uint32_t fPeriodID;
97 BmnSetup fSetup;
98 uint32_t fRunID;
99 BmnTrigRaw2Digit* fTrigMapper;
100 uint64_t fEvents;
101 uint64_t fNItersSinceUpdate;
102 uint64_t fNItersToUpdate;
103 const chrono::milliseconds fTimeToProcessRequests;
104 chrono::time_point<chrono::system_clock> fTicksLastProcess;
105 const chrono::seconds fTimeToUpdate;
106 chrono::time_point<chrono::system_clock> fTicksLastUpdate;
107 bool fIsSlowMode; // process requests for each iteration (not good for MSC)
108 BmnWorkerState fState;
109 Int_t decoTimeout;
110
111 TString fHistFileNameAdd;
112
113 ClassDef(BmnMonitor, 1)
114};
115
116#endif
__m128 v
Definition P4_F32vec4.h:1
BmnStatus
Definition BmnEnums.h:24
BmnWorkerState
Definition BmnEnums.h:80
BmnSetup
Definition BmnEnums.h:89
void MonitorStreamZ(TString dir, TString refDir="", TString decoAddr="localhost", Int_t webPort=9000)
Int_t GetPeriodID() const
Definition BmnMonitor.h:44
void SetNItersToUpdate(uint64_t val)
Definition BmnMonitor.h:53
BmnSetup GetBmnSetup() const
Definition BmnMonitor.h:47
void SetSlowMode(bool val)
Definition BmnMonitor.h:55
void SetBmnSetup(BmnSetup v)
Definition BmnMonitor.h:46
void SetDetectorSetup(uint64_t setup)
Definition BmnMonitor.h:51
void SetPeriodID(Int_t v)
Definition BmnMonitor.h:43
virtual ~BmnMonitor()
TObjArray * GetAlikeRunsByElog(uint32_t periodID, uint32_t rinID)
TObjArray * GetAlikeRunsByUniDB(uint32_t periodID, uint32_t rinID)
void SetHistFileNameAdd(TString add)
Definition BmnMonitor.h:49
Definition setup.py:1