00001 #ifndef AnalysisAlgos_SiStripClusterInfoProducer_SiStripProcessedRawDigiProducer_H 00002 #define AnalysisAlgos_SiStripClusterInfoProducer_SiStripProcessedRawDigiProducer_H 00003 00004 #include "FWCore/Framework/interface/Frameworkfwd.h" 00005 #include "FWCore/Framework/interface/EDProducer.h" 00006 #include "FWCore/Framework/interface/ESHandle.h" 00007 #include "FWCore/Utilities/interface/InputTag.h" 00008 00009 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripPedestalsSubtractor.h" 00010 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripCommonModeNoiseSubtractor.h" 00011 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingFactory.h" 00012 00013 #include "DataFormats/Common/interface/DetSetVector.h" 00014 #include <memory> 00015 #include <string> 00016 00017 class SiStripGain; 00018 class SiStripDigi; 00019 class SiStripRawDigi; 00020 class SiStripProcessedRawDigi; 00021 00022 class SiStripProcessedRawDigiProducer : public edm::EDProducer { 00023 00024 public: 00025 00026 explicit SiStripProcessedRawDigiProducer(edm::ParameterSet const&); 00027 00028 private: 00029 00030 void produce(edm::Event& e, const edm::EventSetup& es); 00031 template<class T> std::string findInput(edm::Handle<T>& handle, const edm::Event& e); 00032 00033 void vr_process(const edm::DetSetVector<SiStripRawDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&); 00034 void pr_process(const edm::DetSetVector<SiStripRawDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&); 00035 void zs_process(const edm::DetSetVector<SiStripDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&); 00036 void common_process( const uint32_t, std::vector<float>&, edm::DetSetVector<SiStripProcessedRawDigi>&); 00037 00038 00039 std::vector<edm::InputTag> inputTags; 00040 edm::ESHandle<SiStripGain> gainHandle; 00041 00042 std::auto_ptr<SiStripPedestalsSubtractor> subtractorPed; 00043 std::auto_ptr<SiStripCommonModeNoiseSubtractor> subtractorCMN; 00044 00045 }; 00046 #endif 00047