BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
VData Class Reference

#include <VData.h>

Public Member Functions

 VData ()
void setVoltagesStd (VDataItem voltagesStd)
VDataItem getVoltageStd ()
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. inserting a item that is within timeboundary will fail and do nothing.
void updateBoundary ()
size_t size ()
Time_t getUpperBoundaryEventTime ()
Time_t getLowerBoundaryEventTime ()
VDataItem getVoltage (Time_t time)
std::vector< Time_t > & getTimeVector ()
VDataItemVectorgetVDataItemVector ()
double getVoltage (Time_t time, int layer)
VDataItem getDrop (Time_t time)
double getAvgDrop (Time_t time)
double getAvgDropButVeryDrop (Time_t time)
double getOffsetEvt2Db ()
void setOffsetEvt2Db (int time_offset)
void clear ()
 throw all cached data. next time you might have to prepare cache again..
bool isValid (Time_t time) const

Static Public Attributes

static const size_t MDC_layers = VDataItem::MDC_layers

Detailed Description

Definition at line 29 of file VData.h.

Constructor & Destructor Documentation

◆ VData()

VData::VData ( )

Definition at line 58 of file VData.cxx.

58 {
59 double a[] = {
60 1871.65, 1988.291667, 2016.875, 2017.791667, 2044.25, 2029.25, 2016.75, 1986.5, 2111,
61 2199, 2187.5, 2226, 2214.75, 2233, 2216, 2222.75, 2199.5, 2217.75,
62 2189.25, 2142.75, 2119.5, 2192.25, 2209.5, 2218, 2201, 2211.25, 2227,
63 2226, 2186.25, 2201.5, 2217, 2211.5, 2177, 2191.25, 2192.25, 2135.75,
64 2133.25, 2200.75, 2218.75, 2204.25, 2137.5, 2139.75, 2059.5,
65 };
66 voltagesStd = VDataItem::fromArray( a );
67 time_offset = 6;
68 Boundary_time_High = 0;
69 Boundary_time_Low = 0;
70}
static VDataItem fromArray(const double *item)
Definition VData.cxx:124

Member Function Documentation

◆ clear()

void VData::clear ( )

throw all cached data. next time you might have to prepare cache again..

Definition at line 76 of file VData.cxx.

76 {
77 Boundary_time_High = 0;
78 Boundary_time_Low = 0;
79 timeVector.clear();
80 VdataVector.clear();
81}

◆ getAvgDrop()

double VData::getAvgDrop ( Time_t time)

Definition at line 90 of file VData.cxx.

90 {
91 VDataItem voltTripPerc = getDrop( time );
92 double totalDropPerc = 0;
93 for ( size_t i = 0; i < voltTripPerc.size(); i++ ) totalDropPerc += voltTripPerc[i];
94 return totalDropPerc / voltTripPerc.size();
95}
Double_t time
VDataItem getDrop(Time_t time)
Definition VData.cxx:83
static size_t size()
Definition VData.h:22

◆ getAvgDropButVeryDrop()

double VData::getAvgDropButVeryDrop ( Time_t time)

Definition at line 96 of file VData.cxx.

96 {
97 VDataItem voltTripPerc = getDrop( time );
98 double totalDropPerc = 0;
99 for ( size_t i = 0; i < 20; i++ ) totalDropPerc += voltTripPerc[i];
100 for ( size_t i = 25 - 1; i < voltTripPerc.size(); i++ ) totalDropPerc += voltTripPerc[i];
101
102 return totalDropPerc / ( voltTripPerc.size() - 4 );
103}

◆ getDrop()

VDataItem VData::getDrop ( Time_t time)

Definition at line 83 of file VData.cxx.

83 {
84 VDataItem voltTripPerc;
85 VDataItem voltage = getVoltage( time );
86 for ( size_t i = 0; i < voltage.size(); i++ )
87 { voltTripPerc[i] = ( voltagesStd[i] - voltage[i] ) / voltagesStd[i]; }
88 return voltTripPerc;
89}
VDataItem getVoltage(Time_t time)
Definition VData.cxx:28

Referenced by getAvgDrop(), and getAvgDropButVeryDrop().

◆ getLowerBoundaryEventTime()

Time_t VData::getLowerBoundaryEventTime ( )
inline

Definition at line 54 of file VData.h.

54{ return this->Boundary_time_Low - time_offset; }

Referenced by getVoltage().

◆ getOffsetEvt2Db()

double VData::getOffsetEvt2Db ( )
inline

Definition at line 62 of file VData.h.

62{ return time_offset; }

◆ getTimeVector()

std::vector< Time_t > & VData::getTimeVector ( )
inline

Definition at line 56 of file VData.h.

56{ return timeVector; }

◆ getUpperBoundaryEventTime()

Time_t VData::getUpperBoundaryEventTime ( )
inline

Definition at line 53 of file VData.h.

53{ return this->Boundary_time_High - time_offset; }

Referenced by getVoltage().

◆ getVDataItemVector()

VDataItemVector & VData::getVDataItemVector ( )
inline

Definition at line 57 of file VData.h.

57{ return VdataVector; }

◆ getVoltage() [1/2]

VDataItem VData::getVoltage ( Time_t time)

Definition at line 28 of file VData.cxx.

28 {
29 VDataItem voltage;
30 time += time_offset;
31 if ( time > Boundary_time_High || time < Boundary_time_Low )
32 {
33 // MsgStream log(msgSvc(), name());
34 // log << MSG::INFO << "MdcHvDropSvc::initialize()" << endmsg;
35 std::cerr << "Error! time exceeds boundary. up:down" << getUpperBoundaryEventTime() << ":"
36 << getLowerBoundaryEventTime() << std::endl;
37 std::cerr << "this should not happen. check your code that matters with VData"
38 << std::endl;
39 // if (Boundary_time_High==Boundary_time_Low && Boundary_time_Low==0){
40 // std::cerr << "you need to call updateBoundary() after inserting items.";
41 // }
42 // std::cerr << std::endl;
43 return voltage;
44 }
45 std::vector<Time_t>::iterator iter =
46 std::upper_bound( timeVector.begin(), timeVector.end(), time );
47 int index2 = iter - timeVector.begin();
48 Time_t time2 = timeVector[index2], time1 = timeVector[index2 - 1];
49
50 VDataItem &voltage2 = VdataVector[index2], &voltage1 = VdataVector[index2 - 1];
51 for ( size_t i = 0; i < voltage.size(); i++ )
52 {
53 voltage[i] = voltage1[i] + ( (double)( time - time1 ) ) / ( time2 - time1 ) *
54 ( voltage2[i] - voltage1[i] );
55 }
56 return voltage;
57}
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
long Time_t
Definition VData.h:28
Time_t getUpperBoundaryEventTime()
Definition VData.h:53
Time_t getLowerBoundaryEventTime()
Definition VData.h:54

Referenced by getDrop().

◆ getVoltage() [2/2]

double VData::getVoltage ( Time_t time,
int layer )
inline

Definition at line 58 of file VData.h.

58{ return getVoltage( time )[layer - 1]; }

Referenced by getVoltage().

◆ getVoltageStd()

VDataItem VData::getVoltageStd ( )
inline

Definition at line 43 of file VData.h.

43{ return this->voltagesStd; }

◆ isValid()

bool VData::isValid ( Time_t time) const

Definition at line 17 of file VData.cxx.

17 {
18 time += time_offset;
19 if ( time > Boundary_time_High || time < Boundary_time_Low ) { return false; }
20 std::vector<Time_t>::const_iterator iter =
21 std::upper_bound( timeVector.begin(), timeVector.end(), time );
22 int index2 = iter - timeVector.begin();
23 Time_t time2 = timeVector[index2], time1 = timeVector[index2 - 1];
24 if ( abs( time - time2 ) > 10 && abs( time - time1 ) > 10 ) { return false; }
25 return true;
26}

◆ push_back_sorted()

void VData::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. inserting a item that is within timeboundary will fail and do nothing.

Parameters
time_HV_SLOWCTRLa time in database time; not event time
data

Definition at line 111 of file VData.cxx.

111 {
112 if ( time_HV_SLOWCTRL <= Boundary_time_High )
113 { // first check if time is in boundary
114 // std::vector<Time_t>::iterator iter = std::upper_bound(timeVector.begin(),
115 // timeVector.end(), time_HV_SLOWCTRL); if (! (iter == timeVector.end())) {return;} //if
116 // found time in vector
117 return;
118 }
119 timeVector.push_back( time_HV_SLOWCTRL );
120 VdataVector.push_back( data );
122}
TTree * data
void updateBoundary()
Definition VData.h:45

◆ setOffsetEvt2Db()

void VData::setOffsetEvt2Db ( int time_offset)
inline

Definition at line 63 of file VData.h.

63{ time_offset = time_offset; }

◆ setVoltagesStd()

void VData::setVoltagesStd ( VDataItem voltagesStd)
inline

Definition at line 42 of file VData.h.

42{ this->voltagesStd = voltagesStd; }

◆ size()

size_t VData::size ( )
inline

Definition at line 52 of file VData.h.

52{ return timeVector.size(); }

◆ updateBoundary()

void VData::updateBoundary ( )
inline

Definition at line 45 of file VData.h.

45 {
46 if ( timeVector.size() >= 1 )
47 {
48 Boundary_time_High = timeVector[timeVector.size() - 1];
49 Boundary_time_Low = timeVector[0];
50 }
51 }

Referenced by push_back_sorted().

Member Data Documentation

◆ MDC_layers

const size_t VData::MDC_layers = VDataItem::MDC_layers
static

Definition at line 31 of file VData.h.


The documentation for this class was generated from the following files: