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 "CommonTools/SiStripClusterization/interface/SiStripClusterizerFactory.h" 00011 #include "EventFilter/SiStripRawToDigi/interface/SiStripRawToDigiUnpacker.h" 00012 #include "Fed9UUtils.hh" 00013 #include <vector> 00014 #include <list> 00015 00016 class SiStripRawToClustersLazyUnpacker : public edm::LazyUnpacker<SiStripCluster> { 00017 00018 public: 00019 00020 typedef edm::DetSet<SiStripCluster> DetSet; 00021 00022 SiStripRawToClustersLazyUnpacker(const SiStripRegionCabling&, const SiStripClusterizerFactory&, const FEDRawDataCollection&); 00023 00024 virtual ~SiStripRawToClustersLazyUnpacker(); 00025 00026 virtual void fill(const uint32_t&, record_type&); 00027 00028 private: 00029 00030 SiStripRawToClustersLazyUnpacker(); 00031 00033 const FEDRawDataCollection* raw_; 00034 00036 const SiStripRegionCabling::Cabling* regions_; 00037 00039 const SiStripClusterizerFactory* clusterizer_; 00040 00042 std::vector< Fed9U::Fed9UEvent* > fedEvents_; 00043 00045 std::vector<sistrip::FedReadoutMode> fedModes_; 00046 00048 SiStripRawToDigiUnpacker rawToDigi_; 00049 00051 std::list<FEDRawData> fedRawData_; 00052 00053 }; 00054 00055 #endif // EventFilter_SiStripRawToDigi_SiStripRawToClustersLazyUnpacker_H