BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
VData.h
Go to the documentation of this file.
1/**
2 * @file VData.h
3 * @author zhangzeheng (zhangzeheng@ihep.ac.cn)
4 * @brief class defination for our cached hv info.
5 * @version 0.1
6 * @date 2022-01-19
7 *
8 */
9#ifndef _VDATA_H_
10#define _VDATA_H_
11
12#include <string>
13#include <vector>
14
15// like std::array<double,43>
16class VData;
17struct VDataItem;
18struct VDataItem {
19 const static size_t MDC_layers = 43;
21 double& operator[]( int i ) { return data[i]; }
22 static size_t size() { return MDC_layers; }
23 static VDataItem fromArray( const double* item );
24};
25
26typedef std::vector<VDataItem> VDataItemVector;
27// typedef unsigned long Time_t;
28typedef long Time_t;
29class VData {
30public:
31 const static size_t MDC_layers = VDataItem::MDC_layers;
32
33private:
34 std::vector<Time_t> timeVector;
35 VDataItemVector VdataVector;
36 Time_t Boundary_time_High, Boundary_time_Low; // HV SLOWCTRL time
37 VDataItem voltagesStd;
38 int time_offset;
39
40public:
41 VData();
42 void setVoltagesStd( VDataItem voltagesStd ) { this->voltagesStd = voltagesStd; }
43 VDataItem getVoltageStd() { return this->voltagesStd; }
44 void push_back_sorted( Time_t time_HV_SLOWCTRL, const VDataItem& data );
46 if ( timeVector.size() >= 1 )
47 {
48 Boundary_time_High = timeVector[timeVector.size() - 1];
49 Boundary_time_Low = timeVector[0];
50 }
51 }
52 size_t size() { return timeVector.size(); }
53 Time_t getUpperBoundaryEventTime() { return this->Boundary_time_High - time_offset; }
54 Time_t getLowerBoundaryEventTime() { return this->Boundary_time_Low - time_offset; }
56 std::vector<Time_t>& getTimeVector() { return timeVector; }
57 VDataItemVector& getVDataItemVector() { return VdataVector; }
58 double getVoltage( Time_t time, int layer ) { return getVoltage( time )[layer - 1]; }
60 double getAvgDrop( Time_t time );
62 double getOffsetEvt2Db() { return time_offset; }
63 void setOffsetEvt2Db( int time_offset ) { time_offset = time_offset; }
64 void clear();
65 bool isValid( Time_t time ) const;
66};
67
68#endif
TTree * data
Double_t time
long Time_t
Definition VData.h:28
std::vector< VDataItem > VDataItemVector
Definition VData.h:26
Definition VData.h:29
VDataItem getVoltageStd()
Definition VData.h:43
bool isValid(Time_t time) const
Definition VData.cxx:17
double getAvgDrop(Time_t time)
Definition VData.cxx:90
Time_t getUpperBoundaryEventTime()
Definition VData.h:53
std::vector< Time_t > & getTimeVector()
Definition VData.h:56
void push_back_sorted(Time_t time_HV_SLOWCTRL, const VDataItem &data)
add a entry to our cache. the entry has to be pushed back in ascending order, with no gap....
Definition VData.cxx:111
double getVoltage(Time_t time, int layer)
Definition VData.h:58
double getAvgDropButVeryDrop(Time_t time)
Definition VData.cxx:96
VDataItem getVoltage(Time_t time)
Definition VData.cxx:28
VDataItemVector & getVDataItemVector()
Definition VData.h:57
Time_t getLowerBoundaryEventTime()
Definition VData.h:54
void clear()
throw all cached data. next time you might have to prepare cache again..
Definition VData.cxx:76
void updateBoundary()
Definition VData.h:45
double getOffsetEvt2Db()
Definition VData.h:62
static const size_t MDC_layers
Definition VData.h:31
void setOffsetEvt2Db(int time_offset)
Definition VData.h:63
VDataItem getDrop(Time_t time)
Definition VData.cxx:83
size_t size()
Definition VData.h:52
VData()
Definition VData.cxx:58
void setVoltagesStd(VDataItem voltagesStd)
Definition VData.h:42
double data[MDC_layers]
Definition VData.h:20
static const size_t MDC_layers
Definition VData.h:19
double & operator[](int i)
Definition VData.h:21
static VDataItem fromArray(const double *item)
Definition VData.cxx:124
static size_t size()
Definition VData.h:22