CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Protected Attributes
EcalUncalibRecHitRatioMethodAlgo< C > Class Template Reference

#include <EcalUncalibRecHitRatioMethodAlgo.h>

Classes

struct  CalculatedRecHit
 
struct  Ratio
 
struct  Tmax
 

Public Member Functions

void computeAmplitude (std::vector< double > &amplitudeFitParameters)
 
void computeTime (std::vector< double > &timeFitParameters, std::pair< double, double > &timeFitLimits, std::vector< double > &amplitudeFitParameters)
 
bool fixMGPAslew (const C &dataFrame)
 
CalculatedRecHit getCalculatedRecHit ()
 
void init (const C &dataFrame, const double *pedestals, const double *pedestalRMSes, const double *gainRatios)
 
virtual EcalUncalibratedRecHit makeRecHit (const C &dataFrame, const double *pedestals, const double *pedestalRMSes, const double *gainRatios, std::vector< double > &timeFitParameters, std::vector< double > &amplitudeFitParameters, std::pair< double, double > &timeFitLimits)
 
virtual ~EcalUncalibRecHitRatioMethodAlgo ()
 

Protected Attributes

std::vector< double > amplitudeErrors_
 
std::vector< double > amplitudes_
 
double ampMaxError_
 
CalculatedRecHit calculatedRechit_
 
int num_
 
double pedestal_
 
std::vector< Ratioratios_
 
std::vector< Tmaxtimes_
 
std::vector< TmaxtimesAB_
 

Detailed Description

template<class C>
class EcalUncalibRecHitRatioMethodAlgo< C >

Template used to compute amplitude, pedestal, time jitter, chi2 of a pulse using a ratio method

Id:
EcalUncalibRecHitRatioMethodAlgo.h,v 1.8 2010/06/10 10:13:05 franzoni Exp
Date:
2010/06/10 10:13:05
Revision:
1.8
Author
A. Ledovskoy (Design) - M. Balazs (Implementation)

Definition at line 20 of file EcalUncalibRecHitRatioMethodAlgo.h.

Constructor & Destructor Documentation

template<class C>
virtual EcalUncalibRecHitRatioMethodAlgo< C >::~EcalUncalibRecHitRatioMethodAlgo ( )
inlinevirtual

Definition at line 43 of file EcalUncalibRecHitRatioMethodAlgo.h.

43 { };

Member Function Documentation

template<class C >
void EcalUncalibRecHitRatioMethodAlgo< C >::computeAmplitude ( std::vector< double > &  amplitudeFitParameters)

Definition at line 491 of file EcalUncalibRecHitRatioMethodAlgo.h.

References beta, funct::exp(), f, i, and funct::log().

Referenced by EcalUncalibRecHitWorkerRatio::run(), and EcalUncalibRecHitWorkerGlobal::run().

492 {
494  // //
495  // CALCULATE AMPLITUDE //
496  // //
498 
499 
500  double alpha = amplitudeFitParameters[0];
501  double beta = amplitudeFitParameters[1];
502 
503  // calculate pedestal, again
504 
505  double pedestalLimit = calculatedRechit_.timeMax - (alpha * beta) - 1.0;
506  double sumA = 0;
507  double sumF = 0;
508  double sumAF = 0;
509  double sumFF = 0;
510  double sum1 = 0;
511  for (unsigned int i = 0; i < amplitudes_.size(); i++) {
512  double err2 = amplitudeErrors_[i]*amplitudeErrors_[i];
513  double f = 0;
514  double termOne = 1 + (i - calculatedRechit_.timeMax) / (alpha * beta);
515  if (termOne > 1.e-5) f = exp(alpha * log(termOne)) * exp(-(i - calculatedRechit_.timeMax) / beta);
516 
517  // apply range of interesting samples
518 
519  if ( (i < pedestalLimit)
520  || (f > 0.6 && i <= calculatedRechit_.timeMax)
521  || (f > 0.4 && i >= calculatedRechit_.timeMax)) {
522  sum1 += 1/err2;
523  sumA += amplitudes_[i]/err2;
524  sumF += f/err2;
525  sumAF += f*amplitudes_[i]/err2;
526  sumFF += f*f/err2;
527  }
528  }
529 
531  if(sum1 > 0){
532  double denom = sumFF*sum1 - sumF*sumF;
533  if(fabs(denom)>1.0e-20){
534  calculatedRechit_.amplitudeMax = (sumAF*sum1 - sumA*sumF)/denom;
535  }
536  }
537 }
const double beta
int i
Definition: DBlmapReader.cc:9
float alpha
Definition: AMPTWrapper.h:95
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
double f[11][100]
Log< T >::type log(const T &t)
Definition: Log.h:22
template<class C >
void EcalUncalibRecHitRatioMethodAlgo< C >::computeTime ( std::vector< double > &  timeFitParameters,
std::pair< double, double > &  timeFitLimits,
std::vector< double > &  amplitudeFitParameters 
)

Definition at line 187 of file EcalUncalibRecHitRatioMethodAlgo.h.

References alpha, beta, funct::exp(), f, i, EcalUncalibRecHitRatioMethodAlgo< C >::Tmax::index, getHLTprescales::index, j, gen::k, funct::log(), evf::evtn::offset(), Gflash::Rmax, Gflash::Rmin, mathSSE::sqrt(), launcher::step, tmax, and relativeConstraints::value.

Referenced by EcalUncalibRecHitWorkerRatio::run(), and EcalUncalibRecHitWorkerGlobal::run().

189 {
191  // //
192  // RATIO METHOD FOR TIME STARTS HERE //
193  // //
195  double ampMaxAlphaBeta = 0;
196  double tMaxAlphaBeta = 5;
197  double tMaxErrorAlphaBeta = 999;
198  double tMaxRatio = 5;
199  double tMaxErrorRatio = 999;
200 
201  double sumAA = 0;
202  double sumA = 0;
203  double sum1 = 0;
204  double sum0 = 0;
205  double sumAf = 0;
206  double sumff = 0;
207  double NullChi2 = 0;
208 
209  // null hypothesis = no pulse, pedestal only
210  for(unsigned int i = 0; i < amplitudes_.size(); i++){
211  double err2 = amplitudeErrors_[i]*amplitudeErrors_[i];
212  sum0 += 1;
213  sum1 += 1/err2;
214  sumA += amplitudes_[i]/err2;
215  sumAA += amplitudes_[i]*amplitudes_[i]/err2;
216  }
217  if(sum0>0){
218  NullChi2 = (sumAA - sumA*sumA/sum1)/sum0;
219  }else{
220  // not enough samples to reconstruct the pulse
221  return;
222  }
223 
224  // Make all possible Ratio's based on any pair of samples i and j
225  // (j>i) with positive amplitudes_
226  //
227  // Ratio[k] = Amp[i]/Amp[j]
228  // where Amp[i] is pedestal subtracted ADC value in a time sample [i]
229  //
230  double alphabeta = amplitudeFitParameters[0]*amplitudeFitParameters[1];
231  double alpha = amplitudeFitParameters[0];
232  double beta = amplitudeFitParameters[1];
233 
234  for(unsigned int i = 0; i < amplitudes_.size()-1; i++){
235  for(unsigned int j = i+1; j < amplitudes_.size(); j++){
236 
237  if(amplitudes_[i]>1 && amplitudes_[j]>1){
238 
239  // ratio
240  double Rtmp = amplitudes_[i]/amplitudes_[j];
241 
242  // error^2 due to stat fluctuations of time samples
243  // (uncorrelated for both samples)
244 
246 
247  // error due to fluctuations of pedestal (common to both samples)
248  double stat;
249  if(num_>0) stat = num_; // num presampeles used to compute pedestal
250  else stat = 1; // pedestal from db
251  double err2 = amplitudeErrors_[j]*(amplitudes_[i]-amplitudes_[j])/(amplitudes_[j]*amplitudes_[j])/sqrt(stat);
252 
253  //error due to integer round-down. It is relevant to low
254  //amplitudes_ in gainID=1 and negligible otherwise.
255  double err3 = 0.289/amplitudes_[j];
256 
257  double totalError = sqrt(err1 + err2*err2 +err3*err3);
258 
259 
260  // don't include useless ratios
261  if(totalError < 1.0
262  && Rtmp>0.001
263  && Rtmp<exp(double(j-i)/beta)-0.001
264  ){
265  Ratio currentRatio = { i, (j-i), Rtmp, totalError };
266  ratios_.push_back(currentRatio);
267  }
268 
269  }
270 
271  }
272  }
273 
274  // No useful ratios, return zero amplitude and no time measurement
275  if(!ratios_.size() >0)
276  return;
277 
278  // make a vector of Tmax measurements that correspond to each ratio
279  // and based on Alpha-Beta parameterization of the pulse shape
280 
281  for(unsigned int i = 0; i < ratios_.size(); i++){
282 
283  double stepOverBeta = double(ratios_[i].step)/beta;
284  double offset = double(ratios_[i].index) + alphabeta;
285 
286  double Rmin = ratios_[i].value - ratios_[i].error;
287  if(Rmin<0.001) Rmin=0.001;
288 
289  double Rmax = ratios_[i].value + ratios_[i].error;
290  double RLimit = exp(stepOverBeta)-0.001;
291  if( Rmax > RLimit ) Rmax = RLimit;
292 
293  double time1 = offset - ratios_[i].step/(exp((stepOverBeta-log(Rmin))/alpha)-1.0);
294  double time2 = offset - ratios_[i].step/(exp((stepOverBeta-log(Rmax))/alpha)-1.0);
295 
296  // this is the time measurement based on the ratios[i]
297  double tmax = 0.5 * (time1 + time2);
298  double tmaxerr = 0.5 * sqrt( (time1 - time2)*(time1 - time2) );
299 
300  // calculate chi2
301  sumAf = 0;
302  sumff = 0;
303  for(unsigned int it = 0; it < amplitudes_.size(); it++){
304  double err2 = amplitudeErrors_[it]*amplitudeErrors_[it];
305  double offset = (double(it) - tmax)/alphabeta;
306  double term1 = 1.0 + offset;
307  if(term1>1e-6){
308  double f = exp( alpha*(log(1.0+offset) - offset) );
309  sumAf += amplitudes_[it]*f/err2;
310  sumff += f*f/err2;
311  }
312  }
313 
314  double chi2 = sumAA;
315  double amp = 0;
316  if( sumff > 0 ){
317  chi2 = sumAA - sumAf*sumAf/sumff;
318  amp = sumAf/sumff;
319  }
320  chi2 /= sum0;
321 
322  // choose reasonable measurements. One might argue what is
323  // reasonable and what is not.
324  if(chi2 > 0 && tmaxerr > 0 && tmax > 0){
325  Tmax currentTmax={ ratios_[i].index, ratios_[i].step, tmax, tmaxerr, amp, chi2 };
326  timesAB_.push_back(currentTmax);
327  }
328  }
329 
330  // no reasonable time measurements!
331  if( !(timesAB_.size()> 0))
332  return;
333 
334  // find minimum chi2
335  double chi2min = 1.0e+9;
336  double timeMinimum = 5;
337  double errorMinimum = 999;
338  for(unsigned int i = 0; i < timesAB_.size(); i++){
339  if( timesAB_[i].chi2 <= chi2min ){
340  chi2min = timesAB_[i].chi2;
341  timeMinimum = timesAB_[i].value;
342  errorMinimum = timesAB_[i].error;
343  }
344  }
345 
346  // make a weighted average of tmax measurements with "small" chi2
347  // (within 1 sigma of statistical uncertainty :-)
348  double chi2Limit = chi2min + 1.0;
349  double time_max = 0;
350  double time_wgt = 0;
351  for(unsigned int i = 0; i < timesAB_.size(); i++){
352  if( timesAB_[i].chi2 < chi2Limit ){
353  double inverseSigmaSquared = 1.0/(timesAB_[i].error*timesAB_[i].error);
354  time_wgt += inverseSigmaSquared;
355  time_max += timesAB_[i].value*inverseSigmaSquared;
356  }
357  }
358 
359  tMaxAlphaBeta = time_max/time_wgt;
360  tMaxErrorAlphaBeta = 1.0/sqrt(time_wgt);
361 
362  // find amplitude and chi2
363  sumAf = 0;
364  sumff = 0;
365  for(unsigned int i = 0; i < amplitudes_.size(); i++){
366  double err2 = amplitudeErrors_[i]*amplitudeErrors_[i];
367  double offset = (double(i) - tMaxAlphaBeta)/alphabeta;
368  double term1 = 1.0 + offset;
369  if(term1>1e-6){
370  double f = exp( alpha*(log(1.0+offset) - offset) );
371  sumAf += amplitudes_[i]*f/err2;
372  sumff += f*f/err2;
373  }
374  }
375 
376  if( sumff > 0 ){
377  ampMaxAlphaBeta = sumAf/sumff;
378  double chi2AlphaBeta = (sumAA - sumAf*sumAf/sumff)/sum0;
379  if(chi2AlphaBeta > NullChi2){
380  // null hypothesis is better
381  return;
382  }
383 
384  }else{
385  // no visible pulse here
386  return;
387  }
388 
389  // if we got to this point, we have a reconstructied Tmax
390  // using RatioAlphaBeta Method. To summarize:
391  //
392  // tMaxAlphaBeta - Tmax value
393  // tMaxErrorAlphaBeta - error on Tmax, but I would not trust it
394  // ampMaxAlphaBeta - amplitude of the pulse
395  // ampMaxError_ - uncertainty of the time sample with max amplitude
396  //
397 
398 
399 
400  // Do Ratio's Method with "large" pulses
401  if( ampMaxAlphaBeta/ampMaxError_ > 5.0 ){
402 
403  // make a vector of Tmax measurements that correspond to each
404  // ratio. Each measurement have it's value and the error
405 
406  double time_max = 0;
407  double time_wgt = 0;
408 
409 
410  for (unsigned int i = 0; i < ratios_.size(); i++) {
411 
412  if(ratios_[i].step == 1
413  && ratios_[i].value >= timeFitLimits.first
414  && ratios_[i].value <= timeFitLimits.second
415  ){
416 
417  double time_max_i = ratios_[i].index;
418 
419  // calculate polynomial for Tmax
420 
421  double u = timeFitParameters[timeFitParameters.size() - 1];
422  for (int k = timeFitParameters.size() - 2; k >= 0; k--) {
423  u = u * ratios_[i].value + timeFitParameters[k];
424  }
425 
426  // calculate derivative for Tmax error
427  double du =
428  (timeFitParameters.size() -
429  1) * timeFitParameters[timeFitParameters.size() - 1];
430  for (int k = timeFitParameters.size() - 2; k >= 1; k--) {
431  du = du * ratios_[i].value + k * timeFitParameters[k];
432  }
433 
434 
435  // running sums for weighted average
436  double errorsquared =
437  ratios_[i].error * ratios_[i].error * du * du;
438  if (errorsquared > 0) {
439 
440  time_max += (time_max_i - u) / errorsquared;
441  time_wgt += 1.0 / errorsquared;
442  Tmax currentTmax =
443  { ratios_[i].index, 1, (time_max_i - u),
444  sqrt(errorsquared),0,1 };
445  times_.push_back(currentTmax);
446 
447  }
448  }
449  }
450 
451 
452  // calculate weighted average of all Tmax measurements
453  if (time_wgt > 0) {
454  tMaxRatio = time_max/time_wgt;
455  tMaxErrorRatio = 1.0/sqrt(time_wgt);
456 
457  // combine RatioAlphaBeta and Ratio Methods
458 
459  if( ampMaxAlphaBeta/ampMaxError_ > 10.0 ){
460 
461  // use pure Ratio Method
462  calculatedRechit_.timeMax = tMaxRatio;
463  calculatedRechit_.timeError = tMaxErrorRatio;
464 
465  }else{
466 
467  // combine two methods
468  calculatedRechit_.timeMax = ( tMaxAlphaBeta*(10.0-ampMaxAlphaBeta/ampMaxError_) + tMaxRatio*(ampMaxAlphaBeta/ampMaxError_ - 5.0) )/5.0;
469  calculatedRechit_.timeError = ( tMaxErrorAlphaBeta*(10.0-ampMaxAlphaBeta/ampMaxError_) + tMaxErrorRatio*(ampMaxAlphaBeta/ampMaxError_ - 5.0) )/5.0;
470 
471  }
472 
473  }else{
474 
475  // use RatioAlphaBeta Method
476  calculatedRechit_.timeMax = tMaxAlphaBeta;
477  calculatedRechit_.timeError = tMaxErrorAlphaBeta;
478 
479  }
480 
481  }else{
482 
483  // use RatioAlphaBeta Method
484  calculatedRechit_.timeMax = tMaxAlphaBeta;
485  calculatedRechit_.timeError = tMaxErrorAlphaBeta;
486 
487  }
488 }
const double beta
int i
Definition: DBlmapReader.cc:9
float alpha
Definition: AMPTWrapper.h:95
#define Tmax
list step
Definition: launcher.py:15
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
T sqrt(T t)
Definition: SSEVec.h:28
int j
Definition: DBlmapReader.cc:9
double f[11][100]
unsigned int offset(bool)
int k[5][pyjets_maxn]
static const double tmax[3]
Log< T >::type log(const T &t)
Definition: Log.h:22
const double Rmax[kNumberCalorimeter]
const double Rmin[kNumberCalorimeter]
template<class C>
bool EcalUncalibRecHitRatioMethodAlgo< C >::fixMGPAslew ( const C &  dataFrame)

Definition at line 156 of file EcalUncalibRecHitRatioMethodAlgo.h.

References query::result.

Referenced by EcalUncalibRecHitWorkerRatio::run(), and EcalUncalibRecHitWorkerGlobal::run().

157 {
158 
159  // This fuction finds sample(s) preceeding gain switching and
160  // inflates errors on this sample, therefore, making this sample
161  // invisible for Ratio Method. Only gain switching DOWN is
162  // considered Only gainID=1,2,3 are considered. In case of the
163  // saturation (gainID=0), we keep "distorted" sample because it is
164  // the only chance to make time measurement; the qualilty of it will
165  // be bad anyway.
166 
167  bool result = false;
168 
169  int GainIdPrev;
170  int GainIdNext;
171  for (int iSample = 1; iSample < C::MAXSAMPLES; iSample++) {
172  GainIdPrev = dataFrame.sample(iSample-1).gainId();
173  GainIdNext = dataFrame.sample(iSample).gainId();
174  if( GainIdPrev>=1 && GainIdPrev<=3 &&
175  GainIdNext>=1 && GainIdNext<=3 &&
176  GainIdPrev<GainIdNext ){
177  amplitudes_[iSample-1]=1e-9;
178  amplitudeErrors_[iSample-1]=1e+9;
179  result = true;
180  }
181  }
182  return result;
183 
184 }
tuple result
Definition: query.py:137
template<class C>
CalculatedRecHit EcalUncalibRecHitRatioMethodAlgo< C >::getCalculatedRecHit ( )
inline
template<class C>
void EcalUncalibRecHitRatioMethodAlgo< C >::init ( const C &  dataFrame,
const double *  pedestals,
const double *  pedestalRMSes,
const double *  gainRatios 
)

Definition at line 75 of file EcalUncalibRecHitRatioMethodAlgo.h.

Referenced by EcalUncalibRecHitWorkerRatio::run(), and EcalUncalibRecHitWorkerGlobal::run().

76 {
80  amplitudes_.clear();
81  amplitudes_.reserve(C::MAXSAMPLES);
82  amplitudeErrors_.clear();
83  amplitudeErrors_.reserve(C::MAXSAMPLES);
84  ratios_.clear();
85  ratios_.reserve(C::MAXSAMPLES*(C::MAXSAMPLES-1)/2);
86  times_.clear();
87  times_.reserve(C::MAXSAMPLES*(C::MAXSAMPLES-1)/2);
88  timesAB_.clear();
89  timesAB_.reserve(C::MAXSAMPLES*(C::MAXSAMPLES-1)/2);
90 
91  // to obtain gain 12 pedestal:
92  // -> if it's in gain 12, use first sample
93  // --> average it with second sample if in gain 12 and 3-sigma-noise compatible (better LF noise cancellation)
94  // -> else use pedestal from database
95  pedestal_ = 0;
96  num_ = 0;
97  if (dataFrame.sample(0).gainId() == 1) {
98  pedestal_ += double (dataFrame.sample(0).adc());
99  num_++;
100  }
101  if (num_!=0 &&
102  dataFrame.sample(1).gainId() == 1 &&
103  fabs(dataFrame.sample(1).adc()-dataFrame.sample(0).adc())<3*pedestalRMSes[0]) {
104  pedestal_ += double (dataFrame.sample(1).adc());
105  num_++;
106  }
107  if (num_ != 0)
108  pedestal_ /= num_;
109  else
110  pedestal_ = pedestals[0];
111 
112  // fill vector of amplitudes, pedestal subtracted and vector
113  // of amplitude uncertainties Also, find the uncertainty of a
114  // sample with max amplitude. We will use it later.
115 
116  ampMaxError_ = 0;
117  double ampMaxValue = -1000;
118 
119  // ped-subtracted and gain-renormalized samples. It is VERY
120  // IMPORTANT to have samples one clock apart which means to
121  // have vector size equal to MAXSAMPLES
122  double sample;
123  double sampleError;
124  int GainId;
125  for (int iSample = 0; iSample < C::MAXSAMPLES; iSample++) {
126  GainId = dataFrame.sample(iSample).gainId();
127 
128  if (GainId == 1) {
129  sample = double (dataFrame.sample(iSample).adc() - pedestal_);
130  sampleError = pedestalRMSes[0];
131  } else if (GainId == 2 || GainId == 3){
132  sample = (double (dataFrame.sample(iSample).adc() - pedestals[GainId - 1])) *gainRatios[GainId - 1];
133  sampleError = pedestalRMSes[GainId-1]*gainRatios[GainId-1];
134  } else {
135  sample = 1e-9; // GainId=0 case falls here, from saturation
136  sampleError = 1e+9; // inflate error so won't generate ratio considered for the measurement
137  }
138 
139 
140  if(sampleError>0){
141  amplitudes_.push_back(sample);
142  amplitudeErrors_.push_back(sampleError);
143  if(ampMaxValue < sample){
144  ampMaxValue = sample;
145  ampMaxError_ = sampleError;
146  }
147  }else{
148  // inflate error for useless samples
149  amplitudes_.push_back(sample);
150  amplitudeErrors_.push_back(1e+9);
151  }
152  }
153 }
template<class C>
EcalUncalibratedRecHit EcalUncalibRecHitRatioMethodAlgo< C >::makeRecHit ( const C &  dataFrame,
const double *  pedestals,
const double *  pedestalRMSes,
const double *  gainRatios,
std::vector< double > &  timeFitParameters,
std::vector< double > &  amplitudeFitParameters,
std::pair< double, double > &  timeFitLimits 
)
virtual

Definition at line 542 of file EcalUncalibRecHitRatioMethodAlgo.h.

References init.

549 {
550 
551  init( dataFrame, pedestals, pedestalRMSes, gainRatios );
552  computeTime( timeFitParameters, timeFitLimits, amplitudeFitParameters );
553  computeAmplitude( amplitudeFitParameters );
554 
555  // 1st parameters is id
556  //
557  // 2nd parameters is amplitude. It is calculated by this method.
558  //
559  // 3rd parameter is pedestal. It is not calculated. This method
560  // relies on input parameters for pedestals and gain ratio. Return
561  // zero.
562  //
563  // 4th parameter is jitter which is a bad choice to call Tmax. It is
564  // calculated by this method (in 25 nsec clock units)
565  //
566  // GF subtract 5 so that jitter==0 corresponds to synchronous hit
567  //
568  //
569  // 5th parameter is chi2. It is possible to calculate chi2 for
570  // Tmax. It is possible to calculate chi2 for Amax. However, these
571  // values are not very useful without TmaxErr and AmaxErr. This
572  // method can return one value for chi2 but there are 4 different
573  // parameters that have useful information about the quality of Amax
574  // ans Tmax. For now we can return TmaxErr. The quality of Tmax and
575  // Amax can be judged from the magnitude of TmaxErr
576 
577  return EcalUncalibratedRecHit(dataFrame.id(),
579  pedestal_,
582 }
void computeAmplitude(std::vector< double > &amplitudeFitParameters)
void computeTime(std::vector< double > &timeFitParameters, std::pair< double, double > &timeFitLimits, std::vector< double > &amplitudeFitParameters)
void init(const C &dataFrame, const double *pedestals, const double *pedestalRMSes, const double *gainRatios)

Member Data Documentation

template<class C>
std::vector< double > EcalUncalibRecHitRatioMethodAlgo< C >::amplitudeErrors_
protected

Definition at line 62 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
std::vector< double > EcalUncalibRecHitRatioMethodAlgo< C >::amplitudes_
protected

Definition at line 61 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
double EcalUncalibRecHitRatioMethodAlgo< C >::ampMaxError_
protected

Definition at line 69 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
CalculatedRecHit EcalUncalibRecHitRatioMethodAlgo< C >::calculatedRechit_
protected
template<class C>
int EcalUncalibRecHitRatioMethodAlgo< C >::num_
protected

Definition at line 68 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
double EcalUncalibRecHitRatioMethodAlgo< C >::pedestal_
protected

Definition at line 67 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
std::vector< Ratio > EcalUncalibRecHitRatioMethodAlgo< C >::ratios_
protected

Definition at line 63 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
std::vector< Tmax > EcalUncalibRecHitRatioMethodAlgo< C >::times_
protected

Definition at line 64 of file EcalUncalibRecHitRatioMethodAlgo.h.

template<class C>
std::vector< Tmax > EcalUncalibRecHitRatioMethodAlgo< C >::timesAB_
protected

Definition at line 65 of file EcalUncalibRecHitRatioMethodAlgo.h.