00001 #ifndef SiStripZeroSuppression_h 00002 #define SiStripZeroSuppression_h 00003 #include "FWCore/Framework/interface/EDProducer.h" 00004 #include "FWCore/Framework/interface/Frameworkfwd.h" 00005 00006 #include "FWCore/Framework/interface/Frameworkfwd.h" 00007 #include "FWCore/Utilities/interface/InputTag.h" 00008 #include "DataFormats/Common/interface/DetSet.h" 00009 #include "DataFormats/Common/interface/DetSetVector.h" 00010 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingAlgorithms.h" 00011 #include "DataFormats/SiStripDigi/interface/SiStripProcessedRawDigi.h" 00012 00013 class SiStripDigi; 00014 class SiStripRawDigi; 00015 00016 class SiStripZeroSuppression : public edm::EDProducer 00017 { 00018 00019 public: 00020 00021 explicit SiStripZeroSuppression(const edm::ParameterSet&); 00022 virtual void produce(edm::Event& , const edm::EventSetup& ); 00023 00024 private: 00025 00026 void processRaw(const edm::InputTag&, const edm::DetSetVector<SiStripRawDigi>&); 00027 void storeExtraOutput(uint32_t, int16_t); 00028 void formatRawDigis(edm::DetSetVector<SiStripRawDigi>::const_iterator, edm::DetSet<SiStripRawDigi>&); 00029 void storeCMN(uint32_t, const std::vector< std::pair<short,float> >&); 00030 void storeBaseline(uint32_t, const std::vector< std::pair<short,float> >&); 00031 void storeBaselinePoints(uint32_t); 00032 void StandardZeroSuppression(edm::Event&); 00033 void CollectionMergedZeroSuppression(edm::Event&); 00034 void MergeCollectionsZeroSuppression(edm::Event&); 00035 00036 std::vector<edm::InputTag> inputTags; 00037 edm::InputTag DigisToMergeZS; 00038 edm::InputTag DigisToMergeVR; 00039 00040 typedef std::vector<edm::InputTag>::const_iterator tag_iterator_t; 00041 std::vector<edm::DetSet<SiStripDigi> > output_base; 00042 std::vector<edm::DetSet<SiStripRawDigi> > output_base_raw; 00043 std::vector< edm::DetSet<SiStripProcessedRawDigi> > output_apvcm; 00044 std::vector< edm::DetSet<SiStripProcessedRawDigi> > output_baseline; 00045 std::vector< edm::DetSet<SiStripDigi> > output_baseline_points; 00046 std::auto_ptr<SiStripRawProcessingAlgorithms> algorithms; 00047 00048 bool storeCM; 00049 bool produceRawDigis; 00050 bool produceCalculatedBaseline; 00051 bool produceBaselinePoints; 00052 bool storeInZScollBadAPV; 00053 bool mergeCollections; 00054 bool fixCM; 00055 00056 }; 00057 #endif 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079