Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaEpics.h
Go to the documentation of this file.
1#ifndef Podd_THaEpics_h_
2#define Podd_THaEpics_h_
3
5//
6// THaEpics
7// see implementation for description
8// author Robert Michaels (rom@jlab.org)
9//
11
12#include "Rtypes.h"
13#include <string>
14#include <map>
15#include <utility>
16#include <vector>
17#include <ctime>
18//#include "Decoder.h"
19
20namespace Decoder {
21
22class EpicsChan {
23// utility class of one epics channel
24public:
25 EpicsChan() : evnum(0), dvalue(0), timestamp(0) {}
26 EpicsChan( std::string _tg, std::string _dt, UInt_t _ev,
27 std::string _sv, std::string _un, Double_t _dv ) :
28 tag(std::move(_tg)), dtime(std::move(_dt)), evnum(_ev),
29 svalue(std::move(_sv)), units(std::move(_un)), dvalue(_dv),
30 timestamp(0) { MakeTime(); }
31 virtual ~EpicsChan() = default;
32 void Load( char *tg, char *dt, UInt_t ev,
33 char *sv, char *un, Double_t dv ) {
34 tag = tg; dtime = dt; evnum = ev; svalue = sv; units = un; dvalue = dv;
35 MakeTime();
36 };
37 Double_t GetData() const { return dvalue; };
38 UInt_t GetEvNum() const { return evnum; };
39 std::string GetTag() const { return tag; };
40 std::string GetDate() const { return dtime; };
41 time_t GetTimeStamp() const { return timestamp; };
42 std::string GetString() const { return svalue; };
43 std::string GetUnits() const { return units; };
44
45private:
46 std::string tag; // Variable name
47 std::string dtime; // Timestamp as string
48 UInt_t evnum; // Most recent physics event number seen
49 std::string svalue; // String data
50 std::string units; // Data units
51 Double_t dvalue; // Numerical value of string data (0 if cannot convert)
52 time_t timestamp; // Unix time representation of dtime
53
54 void MakeTime();
55};
56
57class THaEpics {
58
59public:
60
61 THaEpics() = default;
62 virtual ~THaEpics() = default;
63// Get tagged value nearest 'event'
64 Double_t GetData( const char* tag, UInt_t event= 0 ) const;
65// Get tagged string value nearest 'event'
66 std::string GetString( const char* tag, UInt_t event= 0 ) const;
67 time_t GetTimeStamp( const char* tag, UInt_t event= 0 ) const;
68 Int_t LoadData( const UInt_t* evbuffer, UInt_t event= 0 ); // load the data
69 Bool_t IsLoaded(const char* tag) const;
70 void Print();
71
72private:
73
74 std::map< std::string, std::vector<EpicsChan> > epicsData;
75 std::vector<EpicsChan> GetChan(const char *tag) const;
76 static UInt_t FindEvent( const std::vector<EpicsChan>& ep, UInt_t event );
77
78 ClassDef(THaEpics,0) // EPICS data
79
80};
81
82}
83
84#endif
int Int_t
unsigned int UInt_t
bool Bool_t
double Double_t
#define ClassDef(name, id)
virtual ~EpicsChan()=default
std::string units
Definition THaEpics.h:50
time_t GetTimeStamp() const
Definition THaEpics.h:41
Double_t dvalue
Definition THaEpics.h:51
void Load(char *tg, char *dt, UInt_t ev, char *sv, char *un, Double_t dv)
Definition THaEpics.h:32
Double_t GetData() const
Definition THaEpics.h:37
std::string GetUnits() const
Definition THaEpics.h:43
std::string svalue
Definition THaEpics.h:49
std::string GetString() const
Definition THaEpics.h:42
std::string GetTag() const
Definition THaEpics.h:39
std::string dtime
Definition THaEpics.h:47
UInt_t GetEvNum() const
Definition THaEpics.h:38
std::string tag
Definition THaEpics.h:46
EpicsChan(std::string _tg, std::string _dt, UInt_t _ev, std::string _sv, std::string _un, Double_t _dv)
Definition THaEpics.h:26
std::string GetDate() const
Definition THaEpics.h:40
static UInt_t FindEvent(const std::vector< EpicsChan > &ep, UInt_t event)
Definition THaEpics.cxx:142
Double_t GetData(const char *tag, UInt_t event=0) const
Definition THaEpics.cxx:103
virtual ~THaEpics()=default
std::map< std::string, std::vector< EpicsChan > > epicsData
Definition THaEpics.h:74
THaEpics()=default
std::string GetString(const char *tag, UInt_t event=0) const
Definition THaEpics.cxx:112
Int_t LoadData(const UInt_t *evbuffer, UInt_t event=0)
Definition THaEpics.cxx:163
time_t GetTimeStamp(const char *tag, UInt_t event=0) const
Definition THaEpics.cxx:121
std::vector< EpicsChan > GetChan(const char *tag) const
Definition THaEpics.cxx:130
Bool_t IsLoaded(const char *tag) const
Definition THaEpics.cxx:96
STL namespace.