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
|
#include "CalibCalorimetry/EcalPedestalOffsets/interface/TSinglePedEntry.h"
#include <cmath>
#include <iostream>
TSinglePedEntry::TSinglePedEntry() : m_pedestalSqSum(0), m_pedestalSum(0), m_entries(0) {
// std::cout << "[TSinglePedEntry][ctor]" << std::endl ;
}
TSinglePedEntry::~TSinglePedEntry() {}
TSinglePedEntry::TSinglePedEntry(const TSinglePedEntry &orig) {
m_pedestalSqSum = orig.m_pedestalSqSum;
m_pedestalSum = orig.m_pedestalSum;
m_entries = orig.m_entries;
}
void TSinglePedEntry::insert(const int &pedestal) {
m_pedestalSqSum += pedestal * pedestal;
m_pedestalSum += pedestal;
++m_entries;
}
double TSinglePedEntry::average() const {
if (!m_entries)
return -1;
return static_cast<double>(m_pedestalSum) / m_entries;
}
double TSinglePedEntry::RMS() const {
if (!m_entries)
return -1;
return sqrt(RMSSq());
}
double TSinglePedEntry::RMSSq() const {
/*
std::cout << "[TSinglePedEntry][minchia] " << m_pedestalSum
<< "\t" << m_pedestalSum
<< "\t" << m_entries << std::endl ; // FIXME
*/
if (!m_entries)
return -1;
double num = 1. / static_cast<double>(m_entries);
double output = m_pedestalSqSum * num - m_pedestalSum * num * m_pedestalSum * num;
return output;
}
|