CMS 3D CMS Logo

ESZeroSuppressionProducer.cc

Go to the documentation of this file.
00001 #include "SimCalorimetry/EcalZeroSuppressionProducers/interface/ESZeroSuppressionProducer.h"
00002 #include "Geometry/Records/interface/IdealGeometryRecord.h"
00003 
00004 ESZeroSuppressionProducer::ESZeroSuppressionProducer(const edm::ParameterSet& ps) 
00005 {
00006   digiProducer_   = ps.getParameter<std::string>("digiProducer");
00007   ESdigiCollection_ = ps.getParameter<std::string>("ESdigiCollection");
00008   ESZSdigiCollection_ = ps.getParameter<std::string>("ESZSdigiCollection");
00009  
00010   ESGain = ps.getUntrackedParameter<int>("ESGain", 1);
00011   ESBaseline = ps.getUntrackedParameter<int>("ESBaseline", 1000);
00012   ESMIPADC = ps.getUntrackedParameter<double>("ESMIPADC", 9);
00013   ESMIPkeV = ps.getUntrackedParameter<double>("ESMIPkeV", 81.08);
00014   ESNoiseSigma = ps.getUntrackedParameter<double>("ESNoiseSigma", 3);
00015 
00016   if (ESGain == 0)
00017     ESThreshold = 3.*1.45*ESNoiseSigma*ESMIPkeV/ESMIPADC/1000000.;
00018   else if (ESGain == 1)
00019     ESThreshold = 3.*0.9066*ESNoiseSigma*ESMIPkeV/ESMIPADC/1000000.;
00020   else if (ESGain == 2)
00021     ESThreshold = 3.*0.8815*ESNoiseSigma*ESMIPkeV/ESMIPADC/1000000.;
00022 
00023   algo_ = new ESRecHitSimAlgo(ESGain, ESBaseline, ESMIPADC, ESMIPkeV);
00024 
00025   produces<ESDigiCollection>(ESZSdigiCollection_);
00026 }
00027 
00028 ESZeroSuppressionProducer::~ESZeroSuppressionProducer() 
00029 { 
00030   delete algo_;
00031 }
00032 
00033 void ESZeroSuppressionProducer::produce(edm::Event& event, const edm::EventSetup& eventSetup) 
00034 {
00035   edm::Handle<ESDigiCollection> ESDigis;
00036 
00037   bool fullESDigis = true;
00038   event.getByLabel(digiProducer_, ESDigis);
00039   if (!ESDigis.isValid()) {
00040     edm::LogError("ZeroSuppressionError") << "Error! can't get the product " << ESdigiCollection_.c_str() ;
00041     fullESDigis = false;
00042   }  
00043 
00044   std::auto_ptr<ESDigiCollection> ESZSDigis(new ESDigiCollection());
00045   
00046   if (fullESDigis) {
00047     ESDigiCollection::const_iterator i;
00048     for (i=ESDigis->begin(); i!=ESDigis->end(); i++) {            
00049       if (algo_->EvalAmplitude(*i) > ESThreshold) (*ESZSDigis).push_back(*i);
00050     }
00051   }     
00052   
00053   event.put(ESZSDigis, ESZSdigiCollection_);  
00054 }
00055 

Generated on Tue Jun 9 17:46:22 2009 for CMSSW by  doxygen 1.5.4