1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#include <cassert>
#include <math.h>
#include <iostream>
using namespace std;
#include "MEVarVector.hh"
ClassImp(MEVarVector);
MEVarVector::MEVarVector( int size ) : _size( size )
{
}
MEVarVector::~MEVarVector()
{
for( MusEcal::VarVecTimeMap::iterator it=_map.begin(); it!=_map.end(); ++it )
{
delete it->second;
}
}
void
MEVarVector::addTime( ME::Time t )
{
if( _map.count( t ) !=0 ) return;
MusEcal::VarVec* vec_ =
new MusEcal::VarVec( _size, make_pair<float,bool>( 0., true ) );
_map[t] = vec_;
}
void
MEVarVector::setVal( ME::Time t, int ii, float val, bool check )
{
if( check ) addTime( t );
MusEcal::VarVec& vec_ = *(_map[t]);
vec_[ii].first = val;
}
void
MEVarVector::setFlag( ME::Time t, int ii, bool flag, bool check )
{
if( check ) addTime( t );
MusEcal::VarVec& vec_ = *(_map[t]);
vec_[ii].second = flag;
}
void
MEVarVector::setValAndFlag( ME::Time t, int ii, float val, bool flag, bool check )
{
setVal( t, ii, val, check );
setFlag( t, ii, flag, check );
}
void
MEVarVector::getTime( vector< ME::Time >& time,
const METimeInterval* interval )
{
time.clear();
for( MusEcal::VarVecTimeMap::iterator it=_map.begin();
it!=_map.end(); ++it )
{
ME::Time t_ = it->first;
if( interval!=0 )
{
if( t_<interval->firstTime() || t_>interval->lastTime() ) continue;
}
time.push_back( t_ );
}
}
void
MEVarVector::getValAndFlag( int ii,
const vector< ME::Time >& time,
vector< float >& val,
vector< bool >& flag )
{
val.clear();
flag.clear();
for( unsigned int itime=0; itime<time.size(); itime++ )
{
ME::Time t_ = time[itime];
float val_(0.);
bool flag_(true);
assert( getValByTime( t_, ii, val_, flag_ ) );
val.push_back( val_ );
flag.push_back( flag_ );
}
}
void
MEVarVector::getTimeValAndFlag( int ii,
vector< ME::Time >& time,
vector< float >& val,
vector< bool >& flag,
const METimeInterval* interval )
{
getTime( time, interval );
val.clear();
flag.clear();
getValAndFlag( ii, time, val, flag );
}
bool
MEVarVector::getValByTime( ME::Time time, int ii,
float& val, bool& flag )
{
val=0;
flag=false;
if( _map.count( time )==0 ) return false;
MusEcal::VarVec* vec_ = _map[time];
val=(*vec_)[ii].first;
flag=(*vec_)[ii].second;
return true;
}
|