ATLAS Offline Software
Loading...
Searching...
No Matches
LArRawEvent/src/LArPedestal.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5/********************************************************************
6
7 NAME: LArPedestal.cxx
8 PACKAGE: offline/LArCalorimeter/LArRawEvent
9
10 AUTHORS: M. AHARROUCHE
11 CREATED: Jan. 12, 2004
12 UPDATED: Mar. 09, 2004 Remi Lafaye
13
14 PURPOSE: Interchanges the data with LArPedestalMaker for
15 calculation of pedestal and rms.
16
17 ********************************************************************/
20#include <iostream>
21
22//----------------------------------------------------------------------------
24//----------------------------------------------------------------------------
25{
26 m_min = -1;
27 m_max = -1;
28 m_nped = 0;
29}
30
31//----------------------------------------------------------------------------
33//----------------------------------------------------------------------------
34= default;
35
36//----------------------------------------------------------------------------
37void LArPedestal::set_min(const short min)
38//----------------------------------------------------------------------------
39{
40 m_min = min;
41}
42
43//----------------------------------------------------------------------------
44void LArPedestal::set_max(const short max)
45//----------------------------------------------------------------------------
46{
47 m_max = max;
48}
49
50//----------------------------------------------------------------------------
51double LArPedestal::get_sum(const unsigned isample) const
52//----------------------------------------------------------------------------
53{
54 if (isample>=m_sum.size())
55 return 0;
56
57 return m_sum[isample];
58}
59
60//----------------------------------------------------------------------------
62//----------------------------------------------------------------------------
63{
64 double sum = 0;
65 int nsamples = m_sum.size();
66 for(int i=0; i<nsamples; i++)
67 sum += m_sum[i];
68
69 return sum;
70}
71
72//----------------------------------------------------------------------------
73double LArPedestal::get_mean(const unsigned isample_min, const unsigned isample_max) const
74//----------------------------------------------------------------------------
75{
76 unsigned imin=0;
77 unsigned imax=m_sum.size()-1;
78
79 if (isample_min > 0 && isample_min < m_sum.size()) imin=isample_min;
80 if (isample_max > 0 && isample_max < m_sum.size()) imax=isample_max;
81 double mean = 0;
82 for(unsigned i=0; i<=imax; ++i) mean += m_sum[i];
83 mean /= ((imax-imin+1)*(double) m_nped);
84
85 return mean;
86}
87//----------------------------------------------------------------------------
88double LArPedestal::get_mean(const unsigned isample) const
89//----------------------------------------------------------------------------
90{
91 if (isample>=m_sum.size() || m_nped==0)
92 return 0;
93 double mean = 0;
94 mean = m_sum[isample];
95 mean /= ((double) m_nped);
96
97 return mean;
98}
99
100//----------------------------------------------------------------------------
102//----------------------------------------------------------------------------
103{
104 const int nsamples = m_sum.size();
105 if (nsamples==0 || m_nped==0) return 0;
106 uint32_t imean = 0;
107 for(int i=0; i<nsamples; i++)
108 imean += m_sum[i];
109
110 return double(imean)/(nsamples*m_nped);
111
112
113}
114
115//----------------------------------------------------------------------------
116double LArPedestal::get_rms(const unsigned isample_min, const unsigned isample_max) const
117//----------------------------------------------------------------------------
118{
119 unsigned imin=0;
120 unsigned imax=m_sum.size()-1;
121
122 if (isample_min > 0 && isample_min < m_sum.size()) imin=isample_min;
123 if (isample_max > 0 && isample_max < m_sum.size()) imax=isample_max;
124 //const int nsamples = m_sum.size();
125 uint64_t x=0, y=0;
126 for(unsigned i=imin; i<=imax; i++) {
127 x+=m_sum[i];
128 y+=m_sumSquares[i];
129 }
130
131 const double mean=double(x)/((imax-imin+1)*m_nped);
132 const double ss=double(y)/((imax-imin+1)*m_nped);
133 return sqrt(ss-mean*mean);
134}
135
136
137//----------------------------------------------------------------------------
138double LArPedestal::get_rms(const unsigned isample) const
139//----------------------------------------------------------------------------
140{
141 if (isample>=m_sum.size() || m_nped==0)
142 return 0;
143 //const int nsamples = m_sum.size();
144 const double x = m_sum[isample]/double(m_nped);
145 const double y = m_sumSquares[isample]/double(m_nped);
146 return sqrt(y-x*x);
147}
148
149//----------------------------------------------------------------------------
151//----------------------------------------------------------------------------
152{
153 const int nsamples = m_sum.size();
154 if (nsamples==0 || m_nped==0) return 0;
155 uint64_t x=0, y=0;
156 for(int i=0; i<nsamples; i++) {
157 x+=m_sum[i];
158 y+=m_sumSquares[i];
159 }
160
161 const double mean=double(x)/(nsamples*m_nped);
162 const double ss=double(y)/(nsamples*m_nped);
163 return sqrt(ss-mean*mean);
164 //double noise=y-x*x
165 //return sqrt(noise/(m_nped*m_nped*nsamples*nsamples));
166}
167
168//----------------------------------------------------------------------------
169void LArPedestal::add(const std::vector<short>& samples)
170//----------------------------------------------------------------------------
171{
172 const size_t nsamples = samples.size();
173
174 if(m_sum.size()<nsamples) {
175 m_sum.resize(nsamples);
176 m_sumSquares.resize(nsamples);
177 }
178
179 for(size_t i=0; i<nsamples; i++) {
180 m_sum[i] += samples[i];
181 m_sumSquares[i] += (samples[i]*samples[i]);
182 }
183 m_nped++;
184}
185
186//----------------------------------------------------------------------------
188//----------------------------------------------------------------------------
189{
190 const int nsamples = m_sum.size();
191 for(int l=0; l<nsamples; l++) {
192 m_sumSquares[l] = 0;
193 m_sum[l]=0;
194 }
195 m_nped=0;
196}
197
198
static Double_t ss
int imax(int i, int j)
#define y
#define x
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
void add(const std::vector< short > &samples)
std::vector< uint64_t > m_sumSquares
void set_max(const short max)
void set_min(const short min)
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="")
l
Printing final latex table to .tex output file.
setEventNumber uint32_t