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
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
00065 std::auto_ptr<HBHEDigiCollection> zs(new HBHEDigiCollection);
00066
00067 hbhe_->suppress(*(digi.product()),*zs);
00068
00069 edm::LogInfo("HcalZeroSuppression") << "Suppression (HBHE) input " << digi->size() << " digis, output " << zs->size() << " digis";
00070
00071
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
00081 std::auto_ptr<HODigiCollection> zs(new HODigiCollection);
00082
00083 ho_->suppress(*(digi.product()),*zs);
00084
00085 edm::LogInfo("HcalZeroSuppression") << "Suppression (HO) input " << digi->size() << " digis, output " << zs->size() << " digis";
00086
00087
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
00097 std::auto_ptr<HFDigiCollection> zs(new HFDigiCollection);
00098
00099 hf_->suppress(*(digi.product()),*zs);
00100
00101 edm::LogInfo("HcalZeroSuppression") << "Suppression (HF) input " << digi->size() << " digis, output " << zs->size() << " digis";
00102
00103
00104 e.put(zs);
00105 hf_->done();
00106 }
00107
00108 }