LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
pmtana::PedAlgoRmsSlider Class Referenceabstract

#include "PedAlgoRmsSlider.h"

Inheritance diagram for pmtana::PedAlgoRmsSlider:
pmtana::PMTPedestalBase

Public Member Functions

 PedAlgoRmsSlider (const std::string name="PedRmsSlider")
 Default constructor. More...
 
 PedAlgoRmsSlider (const fhicl::ParameterSet &pset, const std::string name="PedRmsSlider")
 Alternative ctor. More...
 
virtual ~PedAlgoRmsSlider ()
 Default destructor. More...
 
void PrintInfo ()
 Print settings. More...
 
const std::string & Name () const
 Name getter. More...
 
bool Evaluate (const pmtana::Waveform_t &wf)
 Method to compute a pedestal. More...
 
double Mean (size_t i) const
 Getter of the pedestal mean value. More...
 
const pmtana::PedestalMean_tMean () const
 Getter of the pedestal mean value. More...
 
double Sigma (size_t i) const
 Getter of the pedestal standard deviation. More...
 
const pmtana::PedestalSigma_tSigma () const
 Getter of the pedestal standard deviation. More...
 

Protected Member Functions

bool ComputePedestal (const pmtana::Waveform_t &wf, pmtana::PedestalMean_t &mean_v, pmtana::PedestalSigma_t &sigma_v)
 Method to compute a pedestal of the input waveform using "nsample" ADC samples from "start" index. More...
 
virtual bool ComputePedestal (const ::pmtana::Waveform_t &wf, pmtana::PedestalMean_t &mean_v, pmtana::PedestalSigma_t &sigma_v)=0
 

Private Member Functions

double CalcMean (const std::vector< double > &wf, size_t start, size_t nsample)
 Returns the mean of the elements of the vector from start to start+nsample. More...
 
double CalcStd (const std::vector< double > &wf, const double ped_mean, size_t start, size_t nsample)
 Returns the std of the elements of the vector from start to start+nsample. More...
 
bool CheckSanity (pmtana::PedestalMean_t &mean_v, pmtana::PedestalSigma_t &sigma_v)
 Checks the sanity of the estimated pedestal, returns false if not sane. More...
 

Private Attributes

size_t _sample_size
 How many samples are used to calculate local rms and mean. More...
 
double _threshold
 Threshold applied to local rms to claim a pulse. More...
 
float _max_sigma
 Max sigma to consider adc as 'sane'. More...
 
float _ped_range_max
 Max value of adc to consider adc as 'sane'. More...
 
float _ped_range_min
 Min value of adc to consider adc as 'sane'. More...
 
bool _verbose
 For debugging. More...
 
int _n_wf_to_csvfile
 If greater than zero saves firsts waveforms with pedestal to csv file. More...
 
int _wf_saved = 0
 
std::ofstream _csvfile
 

Detailed Description

A class that calculates pedestal mean & standard deviation (here and elsewhere called as "RMS").

Definition at line 31 of file PedAlgoRmsSlider.h.

Constructor & Destructor Documentation

pmtana::PedAlgoRmsSlider::PedAlgoRmsSlider ( const std::string  name = "PedRmsSlider")

Default constructor.

Definition at line 21 of file PedAlgoRmsSlider.cxx.

22  : PMTPedestalBase(name)
23  //*****************************************************************
24  {
25  srand(static_cast<unsigned int>(time(0)));
26  }
PMTPedestalBase(std::string name="noname")
Default constructor.
pmtana::PedAlgoRmsSlider::PedAlgoRmsSlider ( const fhicl::ParameterSet pset,
const std::string  name = "PedRmsSlider" 
)

Alternative ctor.

Definition at line 29 of file PedAlgoRmsSlider.cxx.

References _csvfile, _max_sigma, _n_wf_to_csvfile, _ped_range_max, _ped_range_min, _sample_size, _threshold, _verbose, and fhicl::ParameterSet::get().

31  : PMTPedestalBase(name)
32  //############################################################
33  {
34 
35  _sample_size = pset.get<size_t>("SampleSize", 7 );
36  _threshold = pset.get<double>("Threshold", 0.6 );
37  _max_sigma = pset.get<float> ("MaxSigma", 0.5 );
38  _ped_range_max = pset.get<float> ("PedRangeMax", 2150 );
39  _ped_range_min = pset.get<float> ("PedRangeMin", 100 );
40 
41  _verbose = pset.get<bool> ("Verbose", true );
42  _n_wf_to_csvfile = pset.get<int> ("NWaveformsToFile", 12 );
43 
44  if (_n_wf_to_csvfile > 0) {
45  _csvfile.open ("wf_pedalgormsslider.csv", std::ofstream::out | std::ofstream::trunc);
46  _csvfile << "n,time,wf,wf_ped_mean,wf_ped_rms" << std::endl;
47  }
48 
49  }
float _ped_range_min
Min value of adc to consider adc as &#39;sane&#39;.
PMTPedestalBase(std::string name="noname")
Default constructor.
float _max_sigma
Max sigma to consider adc as &#39;sane&#39;.
double _threshold
Threshold applied to local rms to claim a pulse.
float _ped_range_max
Max value of adc to consider adc as &#39;sane&#39;.
T get(std::string const &key) const
Definition: ParameterSet.h:231
int _n_wf_to_csvfile
If greater than zero saves firsts waveforms with pedestal to csv file.
size_t _sample_size
How many samples are used to calculate local rms and mean.
bool _verbose
For debugging.
pmtana::PedAlgoRmsSlider::~PedAlgoRmsSlider ( )
virtual

Default destructor.

Definition at line 52 of file PedAlgoRmsSlider.cxx.

54  {}

Member Function Documentation

double pmtana::PedAlgoRmsSlider::CalcMean ( const std::vector< double > &  wf,
size_t  start,
size_t  nsample 
)
private

Returns the mean of the elements of the vector from start to start+nsample.

Definition at line 68 of file PedAlgoRmsSlider.cxx.

Referenced by ComputePedestal().

70  {
71  if(!nsample) nsample = wf.size();
72  if(start > wf.size() || (start+nsample) > wf.size())
73  throw OpticalRecoException("Invalid start/end index!");
74 
75  double sum = std::accumulate(wf.begin()+start,wf.begin()+start+nsample,0.0);
76 
77  sum /= ((double)nsample);
78 
79  return sum;
80  }
double pmtana::PedAlgoRmsSlider::CalcStd ( const std::vector< double > &  wf,
const double  ped_mean,
size_t  start,
size_t  nsample 
)
private

Returns the std of the elements of the vector from start to start+nsample.

Definition at line 83 of file PedAlgoRmsSlider.cxx.

Referenced by ComputePedestal().

85  {
86  if(!nsample) nsample = wf.size();
87  if(start > wf.size() || (start+nsample) > wf.size())
88  throw OpticalRecoException("Invalid start/end index!");
89 
90  double sigma = 0;
91 
92  for(size_t index=start; index < (start+nsample); ++index){
93  sigma += pow( (wf[index] - ped_mean), 2 );
94  }
95 
96  sigma = sqrt(sigma/((double)(nsample)));
97 
98  return sigma;
99  }
bool pmtana::PedAlgoRmsSlider::CheckSanity ( pmtana::PedestalMean_t mean_v,
pmtana::PedestalSigma_t sigma_v 
)
private

Checks the sanity of the estimated pedestal, returns false if not sane.

Definition at line 341 of file PedAlgoRmsSlider.cxx.

References _max_sigma, _ped_range_max, _verbose, and pmtana::mean().

Referenced by ComputePedestal().

343  {
344 
345  float best_sigma = 1.1e9;
346  size_t best_sigma_index = 0;
347  size_t num_good_adc = 0;
348 
349  for(size_t i=0; i<sigma_v.size(); ++i) {
350  // Only consider adcs which mean is in the allowed range
351  auto const& mean = mean_v[i];
352 
353  if( mean < _ped_range_min || mean > _ped_range_max ) continue;
354 
355  auto const& sigma = sigma_v[i];
356  if(sigma < best_sigma) {
357  best_sigma = sigma;
358  best_sigma_index = i;
359  }
360 
361  if(sigma < _max_sigma) num_good_adc += 1;
362  }
363 
364 
365  if( num_good_adc < 1 ) {
366  std::cerr << "\033[93m<<" << __FUNCTION__ << ">>\033[00m Could not find good pedestal at all..." << std::endl;
367  return false;
368  }
369 
370  // If not enough # of good mean indices, use the best guess within this waveform
371  if(best_sigma > _max_sigma || num_good_adc < 3) {
372 
373  if(_verbose) {
374  std::cout << "\033[93mPedAlgoRmsSlider\033[00m: Not enough number of good mean indices."
375  << "Using the best guess within this waveform."
376  << std::endl;
377  }
378 
379  for(size_t i=0; i<mean_v.size(); ++i) {
380  mean_v[i] = mean_v.at ( best_sigma_index );
381  sigma_v[i] = sigma_v.at ( best_sigma_index );
382  }
383  }
384 
385  return true;
386 
387  }
float _max_sigma
Max sigma to consider adc as &#39;sane&#39;.
float _ped_range_max
Max value of adc to consider adc as &#39;sane&#39;.
double mean(const std::vector< short > &wf, size_t start, size_t nsample)
Definition: UtilFunc.cxx:15
bool _verbose
For debugging.
bool pmtana::PedAlgoRmsSlider::ComputePedestal ( const pmtana::Waveform_t wf,
pmtana::PedestalMean_t mean_v,
pmtana::PedestalSigma_t sigma_v 
)
protected

Method to compute a pedestal of the input waveform using "nsample" ADC samples from "start" index.

Definition at line 102 of file PedAlgoRmsSlider.cxx.

References _csvfile, _n_wf_to_csvfile, _sample_size, _threshold, _verbose, _wf_saved, CalcMean(), CalcStd(), CheckSanity(), pmtana::mean(), PrintInfo(), and pmtana::std().

106  {
107 
108  if (_verbose)
109  this->PrintInfo();
110 
111  if (wf.size() <= (_sample_size * 2))
112  return false;
113 
114  // Prepare output
115  mean_v.resize (wf.size(), 0);
116  sigma_v.resize(wf.size(), 0);
117 
118 
119 
120 
121  // **********
122  // To start, set the pedestal equal to
123  // the wf itself
124  // **********
125 
126  pmtana::PedestalMean_t mean_temp_v;
127  mean_temp_v.resize( wf.size(), 0);
128 
129  for(size_t i=0; i< wf.size(); ++i) {
130  mean_temp_v[i] = wf[i];
131  sigma_v[i] = 0;
132  }
133 
134 
135 
136 
137 
138  // **********
139  // Now look for rms variations
140  // and change the mean and rms accordingly
141  // **********
142 
143  double local_mean, local_rms;
144 
145  int last_good_index = -1;
146  double last_local_mean = -1;
147  double last_local_rms = -1;
148 
149  std::vector<bool> ped_interapolated;
150  ped_interapolated.resize(wf.size());
151  for (size_t i = 0; i < wf.size(); i++) ped_interapolated.at(i) = false;
152 
153  for (size_t i = 0; i < wf.size() - _sample_size; i++) {
154 
155  local_mean = mean(wf, i, _sample_size);
156  local_rms = std(wf, local_mean, i, _sample_size);
157 
158  if(_verbose) std::cout << "\033[93mPedAlgoRmsSlider\033[00m: i " << i << " local_mean: " << local_mean << " local_rms: " << local_rms << std::endl;
159 
160  if (local_rms < _threshold) {
161 
162  if(_verbose)
163  std::cout << "\033[93mBelow threshold\033[00m: "
164  << "at i " << i
165  << " last good index was: " << last_good_index
166  << std::endl;
167 
168  if(last_good_index<0) {
169  last_good_index = (int)i;
170  last_local_mean = local_mean;
171  last_local_rms = local_rms;
172  continue;
173  }
174 
175 
176  if( ( last_good_index + 1 ) < (int)i ) {
177 
178  //this should become generic interpolation function, for now lets leave.
179  float slope = (local_mean - last_local_mean) / (float(i - last_good_index));
180 
181  for(size_t j = last_good_index + 1; j < i && j < wf.size(); ++j) {
182  mean_temp_v.at(j) = slope * ( float(j - last_good_index) ) + mean_temp_v.at(last_good_index);
183  // for sigma, put either the sigma in the region before the pulse or
184  // after the pulse, depending on which one if != 0. If both are !=0 put the one after
185  // the pulse (just default), if both are zero then put zero
186  sigma_v.at(j) = (local_rms != 0 ? local_rms : last_local_rms); // todo: fluctuate baseline
187  ped_interapolated.at(j) = true;
188  }
189  }
190 
191  last_good_index = (int)i;
192  last_local_mean = local_mean;
193  last_local_rms = local_rms;
194  }
195 
196 
197  }
198 
199 
200 
201  // **********
202  // Now look at special cases, if wf starts or
203  // ends with a pulse
204  // **********
205 
206  // At start
207 
208  bool end_found = false;
209 
210  local_mean = mean(wf, 0, _sample_size);
211  local_rms = std(wf, local_mean, 0, _sample_size);
212 
213  if (local_rms >= _threshold) {
214 
215  for (size_t i = 1; i < wf.size() - _sample_size; i++) {
216 
217  local_mean = mean(wf, i, _sample_size);
218  local_rms = std(wf, local_mean, i, _sample_size);
219 
220  if (local_rms < _threshold) {
221 
222  end_found = true;
223 
224  for (size_t j = 0; j < i; j++){
225  mean_temp_v.at(j) = local_mean;
226  sigma_v.at(j) = local_rms;
227  ped_interapolated.at(j) = true;
228  }
229  break;
230  }
231  }
232 
233  if (!end_found) {
234  std::cerr <<"\033[93m<<" << __FUNCTION__ << ">>\033[00m Could not find good pedestal for CDF"
235  << "There is pulse on first sample and baseline never went back down. Returning false here.";
236  return false;
237  }
238 
239  }
240 
241 
242  // At end
243 
244  bool start_found = false;
245 
246  local_mean = mean(wf, wf.size()-1-_sample_size, _sample_size);
247  local_rms = std(wf, local_mean, wf.size()-1-_sample_size, _sample_size);
248 
249  if (local_rms >= _threshold) {
250 
251  size_t i = wf.size() - 1 - _sample_size;
252  while (i-- > 0) {
253  local_mean = mean(wf, i, _sample_size);
254  local_rms = std(wf, local_mean, i, _sample_size);
255 
256  if (local_rms < _threshold) {
257 
258  start_found = true;
259 
260  for (size_t j = wf.size()-1; j > i; j--){
261  mean_temp_v.at(j) = local_mean;
262  sigma_v.at(j) = local_rms;
263  ped_interapolated.at(j) = true;
264  }
265  break;
266  }
267  }
268 
269  if (!start_found) {
270  std::cerr <<"\033[93m<<" << __FUNCTION__ << ">>\033[00m Could not find good pedestal for CDF"
271  << "There is pulse on last sample and baseline never went back down. Returning false here.";
272  return false;
273  }
274 
275  }
276 
277 
278 
279 
280 
281 
282 
283  // **********
284  // Now smooth it to estimate the final pedestal
285  // **********
286 
287  const size_t window_size = _sample_size*2;
288 
289  // middle mean
290  for(size_t i=0; i< mean_temp_v.size(); ++i) {
291 
292  if( i < _sample_size || i >= (wf.size() - _sample_size) ) continue;
293 
294  mean_v[i] = this->CalcMean (mean_temp_v,i - _sample_size,window_size);
295  if(!ped_interapolated.at(i)){
296  sigma_v[i] = this->CalcStd (mean_temp_v,mean_v[i],i - _sample_size,window_size);
297  }
298  }
299 
300  // front mean
301  for(size_t i=0; i<_sample_size; ++i) {
302 
303  mean_v[i] = mean_v [_sample_size];
304  if(!ped_interapolated.at(i)){
305  sigma_v[i] = sigma_v[_sample_size];
306  }
307  }
308 
309  // tail mean
310  for(size_t i=(mean_temp_v.size() - _sample_size); i<mean_temp_v.size(); ++i) {
311 
312  mean_v[i] = mean_v [wf.size() - _sample_size -1];
313  if(!ped_interapolated.at(i)){
314  sigma_v[i] = sigma_v[wf.size() - _sample_size -1];
315  }
316  }
317 
318 
319 
320 
321  // Save to file
322  if (_wf_saved + 1 <= _n_wf_to_csvfile) {
323  _wf_saved ++;
324  for (size_t i = 0; i < wf.size(); i++) {
325  _csvfile << _wf_saved-1 << "," << i << "," << wf[i] << "," << mean_v.at(i) << "," << sigma_v[i] << std::endl;
326  }
327  }
328 
329 
330  bool is_sane = this->CheckSanity(mean_v, sigma_v);
331 
332  return is_sane;
333 
334  }
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
Definition: UtilFunc.cxx:44
void PrintInfo()
Print settings.
bool CheckSanity(pmtana::PedestalMean_t &mean_v, pmtana::PedestalSigma_t &sigma_v)
Checks the sanity of the estimated pedestal, returns false if not sane.
double CalcStd(const std::vector< double > &wf, const double ped_mean, size_t start, size_t nsample)
Returns the std of the elements of the vector from start to start+nsample.
double _threshold
Threshold applied to local rms to claim a pulse.
int _n_wf_to_csvfile
If greater than zero saves firsts waveforms with pedestal to csv file.
size_t _sample_size
How many samples are used to calculate local rms and mean.
double mean(const std::vector< short > &wf, size_t start, size_t nsample)
Definition: UtilFunc.cxx:15
double CalcMean(const std::vector< double > &wf, size_t start, size_t nsample)
Returns the mean of the elements of the vector from start to start+nsample.
std::vector< double > PedestalMean_t
bool _verbose
For debugging.
virtual bool pmtana::PMTPedestalBase::ComputePedestal ( const ::pmtana::Waveform_t wf,
pmtana::PedestalMean_t mean_v,
pmtana::PedestalSigma_t sigma_v 
)
protectedpure virtualinherited

Method to compute pedestal: mean and sigma array should be filled per ADC. The length of each array is guaranteed to be same.

Referenced by pmtana::PMTPedestalBase::Evaluate().

bool pmtana::PMTPedestalBase::Evaluate ( const pmtana::Waveform_t wf)
inherited

Method to compute a pedestal.

Definition at line 33 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_mean_v, pmtana::PMTPedestalBase::_sigma_v, and pmtana::PMTPedestalBase::ComputePedestal().

Referenced by pmtana::PedAlgoUB::ComputePedestal(), and pmtana::PulseRecoManager::Reconstruct().

35  {
36  _mean_v.resize(wf.size(),0);
37  _sigma_v.resize(wf.size(),0);
38 
39  for(size_t i=0; i<wf.size(); ++i)
40  _mean_v[i] = _sigma_v[i] = 0;
41 
42  const bool res = ComputePedestal(wf, _mean_v, _sigma_v);
43 
44  if(wf.size() != _mean_v.size())
45  throw OpticalRecoException("Internal error: computed pedestal mean array length changed!");
46  if(wf.size() != _sigma_v.size())
47  throw OpticalRecoException("Internal error: computed pedestal sigma array length changed!");
48 
49  return res;
50  }
pmtana::PedestalMean_t _mean_v
A variable holder for pedestal mean value.
virtual bool ComputePedestal(const ::pmtana::Waveform_t &wf, pmtana::PedestalMean_t &mean_v, pmtana::PedestalSigma_t &sigma_v)=0
pmtana::PedestalSigma_t _sigma_v
A variable holder for pedestal standard deviation.
double pmtana::PMTPedestalBase::Mean ( size_t  i) const
inherited

Getter of the pedestal mean value.

Definition at line 53 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_mean_v, and ss.

Referenced by pmtana::PedAlgoUB::ComputePedestal(), and pmtana::PulseRecoManager::Reconstruct().

55  {
56  if(i > _mean_v.size()) {
57  std::stringstream ss;
58  ss << "Invalid index: no pedestal mean exist @ " << i;
59  throw OpticalRecoException(ss.str());
60  }
61  return _mean_v[i];
62  }
Float_t ss
Definition: plot.C:23
pmtana::PedestalMean_t _mean_v
A variable holder for pedestal mean value.
const PedestalMean_t & pmtana::PMTPedestalBase::Mean ( ) const
inherited

Getter of the pedestal mean value.

Definition at line 77 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_mean_v.

79  { return _mean_v; }
pmtana::PedestalMean_t _mean_v
A variable holder for pedestal mean value.
const std::string & pmtana::PMTPedestalBase::Name ( ) const
inherited

Name getter.

Definition at line 28 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_name.

30  { return _name;}
std::string _name
Name.
void pmtana::PedAlgoRmsSlider::PrintInfo ( )

Print settings.

Definition at line 57 of file PedAlgoRmsSlider.cxx.

References _n_wf_to_csvfile, _sample_size, _threshold, and _verbose.

Referenced by ComputePedestal().

59  {
60  std::cout << "PedAlgoRmsSlider setting:"
61  << "\n\t SampleSize: " << _sample_size
62  << "\n\t Threshold: " << _threshold
63  << "\n\t Verbose: " << _verbose
64  << "\n\t NWaveformsToFile: " << _n_wf_to_csvfile << std::endl;
65  }
double _threshold
Threshold applied to local rms to claim a pulse.
int _n_wf_to_csvfile
If greater than zero saves firsts waveforms with pedestal to csv file.
size_t _sample_size
How many samples are used to calculate local rms and mean.
bool _verbose
For debugging.
double pmtana::PMTPedestalBase::Sigma ( size_t  i) const
inherited

Getter of the pedestal standard deviation.

Definition at line 65 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_sigma_v, and ss.

Referenced by pmtana::PedAlgoUB::ComputePedestal(), and pmtana::PulseRecoManager::Reconstruct().

67  {
68  if(i > _sigma_v.size()) {
69  std::stringstream ss;
70  ss << "Invalid index: no pedestal sigma exist @ " << i;
71  throw OpticalRecoException(ss.str());
72  }
73  return _sigma_v[i];
74  }
Float_t ss
Definition: plot.C:23
pmtana::PedestalSigma_t _sigma_v
A variable holder for pedestal standard deviation.
const PedestalSigma_t & pmtana::PMTPedestalBase::Sigma ( ) const
inherited

Getter of the pedestal standard deviation.

Definition at line 82 of file PMTPedestalBase.cxx.

References pmtana::PMTPedestalBase::_sigma_v.

84  { return _sigma_v; }
pmtana::PedestalSigma_t _sigma_v
A variable holder for pedestal standard deviation.

Member Data Documentation

std::ofstream pmtana::PedAlgoRmsSlider::_csvfile
private

Definition at line 67 of file PedAlgoRmsSlider.h.

Referenced by ComputePedestal(), and PedAlgoRmsSlider().

float pmtana::PedAlgoRmsSlider::_max_sigma
private

Max sigma to consider adc as 'sane'.

Definition at line 60 of file PedAlgoRmsSlider.h.

Referenced by CheckSanity(), and PedAlgoRmsSlider().

int pmtana::PedAlgoRmsSlider::_n_wf_to_csvfile
private

If greater than zero saves firsts waveforms with pedestal to csv file.

Definition at line 65 of file PedAlgoRmsSlider.h.

Referenced by ComputePedestal(), PedAlgoRmsSlider(), and PrintInfo().

float pmtana::PedAlgoRmsSlider::_ped_range_max
private

Max value of adc to consider adc as 'sane'.

Definition at line 61 of file PedAlgoRmsSlider.h.

Referenced by CheckSanity(), and PedAlgoRmsSlider().

float pmtana::PedAlgoRmsSlider::_ped_range_min
private

Min value of adc to consider adc as 'sane'.

Definition at line 62 of file PedAlgoRmsSlider.h.

Referenced by PedAlgoRmsSlider().

size_t pmtana::PedAlgoRmsSlider::_sample_size
private

How many samples are used to calculate local rms and mean.

Definition at line 57 of file PedAlgoRmsSlider.h.

Referenced by ComputePedestal(), PedAlgoRmsSlider(), and PrintInfo().

double pmtana::PedAlgoRmsSlider::_threshold
private

Threshold applied to local rms to claim a pulse.

Definition at line 58 of file PedAlgoRmsSlider.h.

Referenced by ComputePedestal(), PedAlgoRmsSlider(), and PrintInfo().

bool pmtana::PedAlgoRmsSlider::_verbose
private

For debugging.

Definition at line 64 of file PedAlgoRmsSlider.h.

Referenced by CheckSanity(), ComputePedestal(), PedAlgoRmsSlider(), and PrintInfo().

int pmtana::PedAlgoRmsSlider::_wf_saved = 0
private

Definition at line 66 of file PedAlgoRmsSlider.h.

Referenced by ComputePedestal().


The documentation for this class was generated from the following files: