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