00001 #ifndef EventFilter_SiStripRawToDigi_SiStripRawToClustersLazyUnpacker_H 00002 #define EventFilter_SiStripRawToDigi_SiStripRawToClustersLazyUnpacker_H 00003 00004 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00005 #include "DataFormats/Common/interface/LazyGetter.h" 00006 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h" 00007 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" 00008 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h" 00009 #include "CalibFormats/SiStripObjects/interface/SiStripRegionCabling.h" 00010 #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithm.h" 00011 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingAlgorithms.h" 00012 #include "EventFilter/SiStripRawToDigi/interface/SiStripRawToDigiUnpacker.h" 00013 #include "EventFilter/SiStripRawToDigi/interface/SiStripFEDBuffer.h" 00014 #include <vector> 00015 #include <list> 00016 00017 00018 namespace sistrip { 00019 00020 class RawToClustersLazyUnpacker : public edm::LazyUnpacker<SiStripCluster> { 00021 00022 public: 00023 00024 typedef edm::DetSet<SiStripCluster> DetSet; 00025 00026 RawToClustersLazyUnpacker(const SiStripRegionCabling&, StripClusterizerAlgorithm&, SiStripRawProcessingAlgorithms&, const FEDRawDataCollection&, bool = false); 00027 00028 virtual ~RawToClustersLazyUnpacker(); 00029 00030 virtual void fill(const uint32_t&, record_type&); 00031 00032 inline void doAPVEmulatorCheck( bool do_APVEmulator_check) { 00033 doAPVEmulatorCheck_ = do_APVEmulator_check; 00034 }; 00035 00036 private: 00037 00039 RawToClustersLazyUnpacker(); 00040 00042 const FEDRawDataCollection* raw_; 00043 00045 const SiStripRegionCabling::Cabling* regions_; 00046 00048 StripClusterizerAlgorithm* const clusterizer_; 00049 00051 SiStripRawProcessingAlgorithms* const rawAlgos_; 00052 00054 std::vector< sistrip::FEDBuffer* > buffers_; 00055 00057 RawToDigiUnpacker rawToDigi_; 00058 00060 bool dump_; 00061 00062 //check that APVemulator address is the same as FEMajaddress. 00063 bool doAPVEmulatorCheck_; 00064 00065 }; 00066 00067 } 00068 00069 #endif /// EventFilter_SiStripRawToDigi_SiStripRawToClustersLazyUnpacker_H