00001 #include "FWCore/Framework/interface/EDProducer.h" 00002 #include "FWCore/Framework/interface/Event.h" 00003 #include "DataFormats/Common/interface/Handle.h" 00004 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" 00005 #include "DataFormats/HcalDigi/interface/HcalLaserDigi.h" 00006 #include "RecoLocalCalo/HcalLaserReco/src/HcalLaserUnpacker.h" 00007 #include "DataFormats/Common/interface/EDCollection.h" 00008 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00009 #include <iostream> 00010 #include <fstream> 00011 00012 00013 class HcalLaserReco : public edm::EDProducer { 00014 public: 00015 explicit HcalLaserReco(const edm::ParameterSet& ps); 00016 virtual ~HcalLaserReco(); 00017 virtual void produce(edm::Event& e, const edm::EventSetup& c); 00018 private: 00019 int qdctdcFed_; 00020 HcalLaserUnpacker unpacker_; 00021 }; 00022 00023 HcalLaserReco::HcalLaserReco(edm::ParameterSet const& conf): 00024 qdctdcFed_(conf.getUntrackedParameter<int>("QADCTDCFED",8)) 00025 { 00026 00027 produces<HcalLaserDigi>(); 00028 } 00029 00030 // Virtual destructor needed. 00031 HcalLaserReco::~HcalLaserReco() { } 00032 00033 // Functions that gets called by framework every event 00034 void HcalLaserReco::produce(edm::Event& e, const edm::EventSetup&) 00035 { 00036 // Step A: Get Inputs 00037 edm::Handle<FEDRawDataCollection> rawraw; 00038 // edm::ProcessNameSelector s("PROD"); // HACK! 00039 e.getByType(rawraw); 00040 00041 // Step B: Create empty output 00042 std::auto_ptr<HcalLaserDigi> 00043 digi(new HcalLaserDigi); 00044 00045 if (qdctdcFed_ >=0) { 00046 // Step C: unpack all requested FEDs 00047 const FEDRawData& fed = rawraw->FEDData(qdctdcFed_); 00048 unpacker_.unpack(fed,*digi); 00049 } 00050 00051 // Step D: Put outputs into event 00052 e.put(digi); 00053 } 00054 00055 #include "FWCore/PluginManager/interface/ModuleDef.h" 00056 #include "FWCore/Framework/interface/MakerMacros.h" 00057 00058 DEFINE_FWK_MODULE(HcalLaserReco); 00059