Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:04

0001 #include "DataFormats/EcalDigi/interface/EBDataFrame.h"
0002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0003 #include <iostream>
0004 
0005 float EBDataFrame::spikeEstimator() const {
0006   if (size() != 10) {
0007     edm::LogError("InvalidNumberOfSamples")
0008         << "This method only applies to signals sampled 10 times (" << size() << " samples found)";
0009     return 10.;
0010   }
0011   // skip faulty channels
0012   if (sample(5).adc() == 0)
0013     return 10.;
0014   size_t imax = 0;
0015   int maxAdc = 0;
0016   for (int i = 0; i < size(); ++i) {
0017     if (sample(i).adc() > maxAdc) {
0018       imax = i;
0019       maxAdc = sample(i).adc();
0020     }
0021   }
0022   // skip early signals
0023   if (imax < 4)
0024     return 10.;
0025   float ped = 1. / 3. * (sample(0).adc() + sample(1).adc() + sample(2).adc());
0026   return 0.18 * (sample(4).adc() - ped) / (sample(5).adc() - ped) + (sample(6).adc() - ped) / (sample(5).adc() - ped);
0027 }
0028 
0029 std::ostream& operator<<(std::ostream& s, const EBDataFrame& digi) {
0030   s << digi.id() << " " << digi.size() << " samples " << std::endl;
0031   for (int i = 0; i < digi.size(); i++)
0032     s << "  " << digi[i] << std::endl;
0033   return s;
0034 }