CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/SimCalorimetry/HcalZeroSuppressionProducers/src/HcalSimpleAmplitudeZS.cc

Go to the documentation of this file.
00001 #include "HcalSimpleAmplitudeZS.h"
00002 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
00003 #include "DataFormats/Common/interface/EDCollection.h"
00004 #include "DataFormats/Common/interface/Handle.h"
00005 #include "FWCore/Framework/interface/ESHandle.h"
00006 #include "FWCore/Framework/interface/EventSetup.h"
00007 #include "CalibFormats/HcalObjects/interface/HcalCoderDb.h"
00008 #include "CalibFormats/HcalObjects/interface/HcalCalibrations.h"
00009 #include "CalibFormats/HcalObjects/interface/HcalDbService.h"
00010 #include "CalibFormats/HcalObjects/interface/HcalDbRecord.h"
00011 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00012 #include "FWCore/Utilities/interface/Exception.h"
00013 using namespace std;
00014 
00015 #include <iostream>
00016 
00017 HcalSimpleAmplitudeZS::HcalSimpleAmplitudeZS(edm::ParameterSet const& conf):
00018   inputLabel_(conf.getParameter<edm::InputTag>("digiLabel"))
00019 {
00020   const edm::ParameterSet& psHBHE=conf.getParameter<edm::ParameterSet>("hbhe");
00021   bool markAndPass=psHBHE.getParameter<bool>("markAndPass");
00022   hbhe_=std::auto_ptr<HcalZSAlgoEnergy>(new HcalZSAlgoEnergy(markAndPass,
00023                                                              psHBHE.getParameter<int>("level"),
00024                                                              psHBHE.getParameter<int>("firstSample"),
00025                                                              psHBHE.getParameter<int>("samplesToAdd"),
00026                                                              psHBHE.getParameter<bool>("twoSided")));
00027   produces<HBHEDigiCollection>();  
00028 
00029   const edm::ParameterSet& psHO=conf.getParameter<edm::ParameterSet>("ho");
00030   markAndPass=psHO.getParameter<bool>("markAndPass");
00031   ho_=std::auto_ptr<HcalZSAlgoEnergy>(new HcalZSAlgoEnergy(markAndPass,
00032                                                            psHO.getParameter<int>("level"),
00033                                                            psHO.getParameter<int>("firstSample"),
00034                                                            psHO.getParameter<int>("samplesToAdd"),
00035                                                            psHO.getParameter<bool>("twoSided")));
00036   produces<HODigiCollection>();
00037   
00038   const edm::ParameterSet& psHF=conf.getParameter<edm::ParameterSet>("hf");
00039   markAndPass=psHO.getParameter<bool>("markAndPass");
00040   hf_=std::auto_ptr<HcalZSAlgoEnergy>(new HcalZSAlgoEnergy(markAndPass, 
00041                                                            psHF.getParameter<int>("level"),
00042                                                            psHF.getParameter<int>("firstSample"),
00043                                                            psHF.getParameter<int>("samplesToAdd"),
00044                                                            psHF.getParameter<bool>("twoSided")));
00045   produces<HFDigiCollection>();
00046   
00047 }
00048     
00049 HcalSimpleAmplitudeZS::~HcalSimpleAmplitudeZS() {
00050 }
00051     
00052 void HcalSimpleAmplitudeZS::produce(edm::Event& e, const edm::EventSetup& eventSetup)
00053 {
00054   // get conditions
00055   edm::ESHandle<HcalDbService> conditions;
00056   eventSetup.get<HcalDbRecord>().get(conditions);
00057   
00058 
00059   {
00060     hbhe_->prepare(&(*conditions));
00061     edm::Handle<HBHEDigiCollection> digi;    
00062     e.getByLabel(inputLabel_,digi);
00063     
00064     // create empty output
00065     std::auto_ptr<HBHEDigiCollection> zs(new HBHEDigiCollection);
00066     // run the algorithm
00067     hbhe_->suppress(*(digi.product()),*zs);
00068     
00069     edm::LogInfo("HcalZeroSuppression") << "Suppression (HBHE) input " << digi->size() << " digis, output " << zs->size() << " digis";
00070     
00071     // return result
00072     e.put(zs);
00073     hbhe_->done();
00074   } 
00075   {
00076     ho_->prepare(&(*conditions));
00077     edm::Handle<HODigiCollection> digi;
00078     e.getByLabel(inputLabel_,digi);
00079     
00080     // create empty output
00081     std::auto_ptr<HODigiCollection> zs(new HODigiCollection);
00082     // run the algorithm
00083     ho_->suppress(*(digi.product()),*zs);
00084 
00085     edm::LogInfo("HcalZeroSuppression") << "Suppression (HO) input " << digi->size() << " digis, output " << zs->size() << " digis";
00086 
00087     // return result
00088     e.put(zs);    
00089     ho_->done();
00090   } 
00091   {
00092     hf_->prepare(&(*conditions));
00093     edm::Handle<HFDigiCollection> digi;
00094     e.getByLabel(inputLabel_,digi);
00095     
00096     // create empty output
00097     std::auto_ptr<HFDigiCollection> zs(new HFDigiCollection);
00098     // run the algorithm
00099     hf_->suppress(*(digi.product()),*zs);
00100 
00101     edm::LogInfo("HcalZeroSuppression") << "Suppression (HF) input " << digi->size() << " digis, output " << zs->size() << " digis";
00102 
00103     // return result
00104     e.put(zs);     
00105     hf_->done();
00106   }
00107 
00108 }