ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCalibUtils
src
LArCalibTriggerAccumulator.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Dear emacs, this is -*-c++-*-
6
7
18
19
20
21
#ifndef LARCALIBTRIGGERACCUMULATOR
22
#define LARCALIBTRIGGERACCUMULATOR
23
24
25
#include <vector>
26
#include "stdint.h"
27
#include <limits>
28
#include <cstddef>
29
30
class
LArCalibTriggerAccumulator
{
31
32
private
:
33
35
std::vector<uint64_t>
m_sampleSum
;
36
38
std::vector<uint64_t>
m_sample2Sum
;
39
41
uint32_t
m_nTrigger
;
42
43
44
public
:
45
46
enum
ERRTYPE
{
47
NoError
=0,
48
WrongNSamples
,
49
NumericOverflow
50
};
51
52
53
LArCalibTriggerAccumulator
();
54
55
LArCalibTriggerAccumulator
(
const
std::vector<uint64_t>&
sampleSum
,
56
const
std::vector<uint64_t>&
sample2Sum
, uint32_t
m_nTrigger
);
57
58
60
uint32_t
nTriggers
()
const
{
return
m_nTrigger
;}
61
63
size_t
nsamples
()
const
{
return
m_sampleSum
.size();}
64
66
const
std::vector < uint64_t > &
sampleSum
()
const
{
return
m_sampleSum
; }
67
69
const
std::vector < uint64_t > &
sample2Sum
()
const
{
return
m_sample2Sum
; }
70
72
ERRTYPE
add
(
const
std::vector<short>& digits);
73
74
76
template
<
class
INTTYPE>
77
ERRTYPE
add
(
const
std::vector<INTTYPE>&
sampleSum
,
78
const
std::vector<INTTYPE>&
sample2Sum
,
const
uint32_t nTrigger);
79
81
std::vector<float>
mean
()
const
;
82
84
std::vector<float>
RMS
()
const
;
85
86
88
double
mean
(
const
size_t
i)
const
;
89
91
double
RMS
(
const
size_t
i)
const
;
92
93
};
94
95
96
template
<
class
INTTYPE>
97
LArCalibTriggerAccumulator::ERRTYPE
LArCalibTriggerAccumulator::add
(
const
std::vector<INTTYPE>&
sampleSum
,
98
const
std::vector<INTTYPE>&
sample2Sum
,
const
uint32_t nTrigger) {
99
const
size_t
nS=
sampleSum
.size();
100
if
(
m_sampleSum
.size()==0 &&
m_sample2Sum
.size()==0) {
101
m_sampleSum
.resize(nS);
102
m_sample2Sum
.resize(nS);
103
}
104
else
if
(
m_sampleSum
.size()!=nS ||
m_sample2Sum
.size()!=nS ||
sample2Sum
.size()!=nS)
105
return
WrongNSamples
;
//ERROR: Inconsistent number of samples
106
107
for
(
size_t
i=0;i<nS;++i) {
108
if
(
m_sample2Sum
[i]>=std::numeric_limits<uint64_t>::max()-
sample2Sum
[i]) {
109
//ERROR: Numeric overflow!
110
//Roll back changes:
111
for
(
size_t
j=0;j<i;++j) {
112
m_sampleSum
[j]-=
sampleSum
[j];
113
m_sample2Sum
[j]-=
sample2Sum
[j];
114
}
115
return
NumericOverflow
;
116
}
117
m_sampleSum
[i]+=
sampleSum
[i];
118
m_sample2Sum
[i]+=
sample2Sum
[i];
119
}
120
m_nTrigger
+=nTrigger;
121
122
return
NoError
;
123
}
124
125
#endif
LArCalibTriggerAccumulator::nTriggers
uint32_t nTriggers() const
return the number of triggers
Definition
LArCalibTriggerAccumulator.h:60
LArCalibTriggerAccumulator::mean
std::vector< float > mean() const
Calculates and returns the Mean value of each ADC sample.
Definition
LArCalibTriggerAccumulator.cxx:68
LArCalibTriggerAccumulator::sample2Sum
const std::vector< uint64_t > & sample2Sum() const
return a reference to a stl vector containing the sum of the squares of the sample
Definition
LArCalibTriggerAccumulator.h:69
LArCalibTriggerAccumulator::LArCalibTriggerAccumulator
LArCalibTriggerAccumulator()
Definition
LArCalibTriggerAccumulator.cxx:8
LArCalibTriggerAccumulator::RMS
std::vector< float > RMS() const
Calculates and returns the RMS value of each ADC sample.
Definition
LArCalibTriggerAccumulator.cxx:82
LArCalibTriggerAccumulator::m_sample2Sum
std::vector< uint64_t > m_sample2Sum
sum of squares of samples
Definition
LArCalibTriggerAccumulator.h:38
LArCalibTriggerAccumulator::ERRTYPE
ERRTYPE
Definition
LArCalibTriggerAccumulator.h:46
LArCalibTriggerAccumulator::NumericOverflow
@ NumericOverflow
Definition
LArCalibTriggerAccumulator.h:49
LArCalibTriggerAccumulator::NoError
@ NoError
Definition
LArCalibTriggerAccumulator.h:47
LArCalibTriggerAccumulator::WrongNSamples
@ WrongNSamples
Definition
LArCalibTriggerAccumulator.h:48
LArCalibTriggerAccumulator::m_sampleSum
std::vector< uint64_t > m_sampleSum
sum of samples
Definition
LArCalibTriggerAccumulator.h:35
LArCalibTriggerAccumulator::m_nTrigger
uint32_t m_nTrigger
number of triggers
Definition
LArCalibTriggerAccumulator.h:41
LArCalibTriggerAccumulator::nsamples
size_t nsamples() const
return number of samples
Definition
LArCalibTriggerAccumulator.h:63
LArCalibTriggerAccumulator::sampleSum
const std::vector< uint64_t > & sampleSum() const
return a reference to a stl vector containing the sample-sums
Definition
LArCalibTriggerAccumulator.h:66
LArCalibTriggerAccumulator::add
ERRTYPE add(const std::vector< short > &digits)
accumulated individual set of digits.
Definition
LArCalibTriggerAccumulator.cxx:17
Generated on
for ATLAS Offline Software by
1.17.0