CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/src/RecoLocalCalo/HcalRecAlgos/src/HcalADCSaturationFlag.cc

Go to the documentation of this file.
00001 #include "../interface/HcalADCSaturationFlag.h"
00002 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalCaloFlagLabels.h"
00003 
00004 
00005 
00006 namespace HcalSaturation 
00007 {
00008   // Template class that loops over digi collection, sets rechit 
00009   // saturation status bit on if ADC count is >= SaturationLevel_;
00010 
00011   template <class T, class V>
00012   void checkADCSaturation(T &rechit, const V &digi, int level) 
00013   {
00014     // Loop over digi
00015     for (int i=0;i<digi.size();++i)
00016       {
00017         if (digi.sample(i).adc()>=level)
00018           {
00019             rechit.setFlagField(1,HcalCaloFlagLabels::ADCSaturationBit);
00020             break;
00021           }
00022       }
00023     return;
00024   }
00025 }
00026 
00027 using namespace HcalSaturation;
00028 
00029 HcalADCSaturationFlag::HcalADCSaturationFlag()
00030 {
00031   SaturationLevel_=127; // default saturation level (7-bit QIE)
00032 }
00033 
00034 HcalADCSaturationFlag::HcalADCSaturationFlag(int level)
00035 {
00036   SaturationLevel_=level; // allow user to specify saturation level
00037 }
00038 
00039 HcalADCSaturationFlag::~HcalADCSaturationFlag()
00040 {}
00041 
00042 void HcalADCSaturationFlag::setSaturationFlag(HBHERecHit& rechit, const HBHEDataFrame& digi)
00043 {
00044   checkADCSaturation<HBHERecHit, HBHEDataFrame>(rechit, digi, SaturationLevel_);
00045   return;
00046 }
00047 
00048 void HcalADCSaturationFlag::setSaturationFlag(HORecHit& rechit, const HODataFrame& digi)
00049 {
00050   checkADCSaturation<HORecHit, HODataFrame>(rechit, digi, SaturationLevel_);
00051   return;
00052 }
00053 
00054 void HcalADCSaturationFlag::setSaturationFlag(HFRecHit& rechit, const HFDataFrame& digi)
00055 {
00056   checkADCSaturation<HFRecHit, HFDataFrame>(rechit, digi, SaturationLevel_);
00057   return;
00058 }
00059 
00060 void HcalADCSaturationFlag::setSaturationFlag(ZDCRecHit& rechit, const ZDCDataFrame& digi)
00061 {
00062   checkADCSaturation<ZDCRecHit, ZDCDataFrame>(rechit, digi, SaturationLevel_);
00063   return;
00064 }