CMS 3D CMS Logo

EcalUncalibRecHitRecWeightsAlgo< C > Class Template Reference

Template used to compute amplitude, pedestal, time jitter, chi2 of a pulse using a weights method. More...

#include <RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitRecWeightsAlgo.h>

Inheritance diagram for EcalUncalibRecHitRecWeightsAlgo< C >:

EcalUncalibRecHitRecAbsAlgo< C >

List of all members.

Public Member Functions

virtual EcalUncalibratedRecHit makeRecHit (const C &dataFrame, const double *pedestals, const double *gainRatios, const EcalWeightSet::EcalWeightMatrix **weights, const EcalWeightSet::EcalChi2WeightMatrix **chi2Matrix)
 Compute parameters.
virtual ~EcalUncalibRecHitRecWeightsAlgo ()


Detailed Description

template<class C>
class EcalUncalibRecHitRecWeightsAlgo< C >

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

Id
EcalUncalibRecHitRecWeightsAlgo.h,v 1.6 2007/05/08 13:29:21 meridian Exp
Date
2007/05/08 13:29:21
Revision
1.6
Author:
R. Bruneliere - A. Zabi

Definition at line 20 of file EcalUncalibRecHitRecWeightsAlgo.h.


Constructor & Destructor Documentation

template<class C>
virtual EcalUncalibRecHitRecWeightsAlgo< C >::~EcalUncalibRecHitRecWeightsAlgo (  )  [inline, virtual]


Member Function Documentation

template<class C>
virtual EcalUncalibratedRecHit EcalUncalibRecHitRecWeightsAlgo< C >::makeRecHit ( const C &  dataFrame,
const double *  pedestals,
const double *  gainRatios,
const EcalWeightSet::EcalWeightMatrix **  weights,
const EcalWeightSet::EcalChi2WeightMatrix **  chi2Matrix 
) [inline, virtual]

Compute parameters.

Implements EcalUncalibRecHitRecAbsAlgo< C >.

Definition at line 27 of file EcalUncalibRecHitRecWeightsAlgo.h.

Referenced by EcalTBWeightUncalibRecHitProducer::produce(), EcalWeightUncalibRecHitProducer::produce(), and EcalUnpackerWorker::work().

00030                                                                                                   {
00031     double amplitude_(-1.),  pedestal_(-1.), jitter_(-1.), chi2_(-1.);
00032 
00033     // Get time samples
00034     ROOT::Math::SVector<double,C::MAXSAMPLES> frame;
00035     int gainId0 = 1;
00036     int iGainSwitch = 0;
00037     for(int iSample = 0; iSample < C::MAXSAMPLES; iSample++) {
00038       int gainId = dataFrame.sample(iSample).gainId();
00039       //Handling saturation (treating saturated gainId as maximum gain)
00040       if (gainId == 0 ) gainId = 3;
00041       if (gainId != gainId0) iGainSwitch = 1;
00042       if (!iGainSwitch)
00043         frame(iSample) = double(dataFrame.sample(iSample).adc());
00044       else
00045         frame(iSample) = double(((double)(dataFrame.sample(iSample).adc()) - pedestals[gainId-1]) * gainRatios[gainId-1]);
00046     }
00047 
00048     // Compute parameters
00049     ROOT::Math::SVector <double,3> param = (*(weights[iGainSwitch])) * frame;
00050     amplitude_ = param(EcalUncalibRecHitRecAbsAlgo<C>::iAmplitude);
00051     pedestal_ = param(EcalUncalibRecHitRecAbsAlgo<C>::iPedestal);
00052     if (amplitude_) jitter_ = param(EcalUncalibRecHitRecAbsAlgo<C>::iTime);
00053     // Compute chi2 = frame^T * chi2Matrix * frame
00054     chi2_ = ROOT::Math::Similarity((*(chi2Matrix[iGainSwitch])),frame);
00055     return EcalUncalibratedRecHit( dataFrame.id(), amplitude_, pedestal_, jitter_, chi2_);
00056   }


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:20:03 2009 for CMSSW by  doxygen 1.5.4