ATLAS Offline Software
Loading...
Searching...
No Matches
L1CaloPedestalCumul.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7#include <iostream>
8
14
17
18double L1CaloPedestalCumul::get_sum(const unsigned isample) const {
19 if (isample>=m_sum.size())
20 return 0;
21
22 double sum = 0;
23 sum = m_sum[isample];
24
25 return sum;
26}
27
29 double sum = 0;
30 int nsamples = m_sum.size();
31 for(int i=0; i<nsamples; i++)
32 sum += m_sum[i];
33
34 return sum;
35}
36
37double L1CaloPedestalCumul::get_mean(const unsigned isample) const {
38 if(m_nped==0) return -1;
39 if (isample>=m_sum.size())
40 return 0;
41 double mean = 0;
42 mean = m_sum[isample];
43 mean /= ((double) m_nped);
44
45 return mean;
46}
47
49 if(m_nped==0) return -1;
50 double mean = 0;
51 int nsamples = m_sum.size();
52 for(int i=0; i<nsamples; i++)
53 mean += m_sum[i];
54 mean /= ((double)(nsamples*m_nped));
55
56 return mean;
57}
58
59double L1CaloPedestalCumul::get_rms(const unsigned isample) const {
60 if(m_nped==0) return -1;
61 if (isample>=m_sum.size())
62 return 0;
63 double x=0, y=0;
64 int k=0;
65 int nsamples = m_sum.size();
66
67 x = m_sum[isample];
68 for(unsigned i=0; i<isample; i++)
69 k += nsamples - i;
70 y = m_matrix[k];
71
72 double noise =(y/((double) m_nped))
73 -((x*x)/((double) (m_nped*m_nped)));
74
75 noise = sqrt(noise);
76
77 return noise;
78}
79
81 if(m_nped==0) return -1;
82 double x=0, y=0;
83 int k=0;
84 int nsamples = m_sum.size();
85
86 x = get_mean();
87 for(int i=0; i<nsamples; i++)
88 {
89 y += m_matrix[k];
90 k += nsamples - i; // Index of diagonal element
91 }
92 y /= (double) (nsamples*m_nped);
93
94 double noise = sqrt(y - x*x);
95
96 return noise;
97}
98
99void L1CaloPedestalCumul::add(const std::vector<int>& samples) {
100 unsigned int nsamples = samples.size();
101 int k=0;
102
103 if(m_sum.size()<nsamples) {
104 m_sum.resize(nsamples);
105 m_matrix.resize((nsamples*(nsamples+1))/2);
106 }
107
108 for(unsigned i=0; i<nsamples; i++) {
109 for(unsigned j=i; j<nsamples; j++,k++) m_matrix[k] += ((double)(samples[j]*samples[i]));
110 m_sum[i] += ((double) samples[i]);
111 }
112 m_nped++;
113}
114
116 int nsamples = m_sum.size();
117 int j =0;
118
119 for(int l=0; l<nsamples; l++) {
120 for(int k=l; k<nsamples; k++,j++) m_matrix[j] = 0;
121 m_sum[l]=0;
122 }
123 m_nped=0;
124}
125
126
#define y
#define x
std::vector< double > m_matrix
std::vector< double > m_sum
void add(const std::vector< int > &samples)
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")