CMS 3D CMS Logo

EcalRawToRecHitFacility.cc

Go to the documentation of this file.
00001 #include "EventFilter/EcalRawToDigi/plugins/EcalRawToRecHitFacility.h"
00002 
00003 EcalRawToRecHitFacility::EcalRawToRecHitFacility(const edm::ParameterSet& iConfig)
00004 {
00005   sourceTag_=iConfig.getParameter<edm::InputTag>("sourceTag");
00006   workerName_=iConfig.getParameter<std::string>("workerName");
00007 
00008   //the lazy getter
00009   produces<EcalRecHitLazyGetter>();
00010 
00011   LogDebug("EcalRawToRecHit|Facility")<<"{ctor} ready to read raw data from: "<<sourceTag_
00012                                       <<"\n using unpacker worker: "<<workerName_
00013                                       <<"\n producing a lazy getter.";
00014 }
00015 
00016 EcalRawToRecHitFacility::~EcalRawToRecHitFacility()
00017 {
00018 }
00019 
00020 
00021 //
00022 // member functions
00023 //
00024 
00025 // ------------ method called to produce the data  ------------
00026 void
00027 EcalRawToRecHitFacility::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
00028 {
00029   MyWatcher watcher("Facility");
00030   LogDebug("EcalRawToRecHit|Facility")<<watcher.lap();
00031 
00032   // get raw data
00033   edm::Handle<FEDRawDataCollection> buffers;
00034   iEvent.getByLabel(sourceTag_, buffers);
00035   LogDebug("EcalRawToRecHit|Facility")<<"raw data from: "<<sourceTag_<<" retrieved."
00036                                       << watcher.lap();
00037   
00038   // retreive cabling
00039   edm::ESHandle<EcalRegionCabling> cabling;
00040   iSetup.get<EcalRegionCablingRecord>().get(cabling);
00041   LogDebug("EcalRawToRecHit|Facility")<<"cabling retrieved."
00042                                       << watcher.lap();
00043     
00044   //retreive worker
00045   edm::ESHandle<EcalUnpackerWorker> worker;
00046   iSetup.get<EcalUnpackerWorkerRecord>().get(workerName_, worker);
00047   LogDebug("EcalRawToRecHit|Facility")<<"worker retrieved."
00048                                       << watcher.lap();
00049 
00050   //need to set the event because the worker will be accessing data from the event
00051   worker->update(iEvent);
00052   LogDebug("EcalRawToRecHit|Facility")<<"worker updated."
00053                                       << watcher.lap();
00054   
00055   //construct a lazy unpacker
00056   boost::shared_ptr<EcalRawToRecHitLazyUnpacker> unpacker(new EcalRawToRecHitLazyUnpacker(*cabling, *worker, *buffers));
00057   LogDebug("EcalRawToRecHit|Facility")<<"lazy unpacker created."
00058                                       << watcher.lap();
00059   
00060   //store the lazy getter
00061   std::auto_ptr<EcalRecHitLazyGetter> collection(new EcalRecHitLazyGetter(EcalRegionCabling::maxElementIndex(),unpacker));
00062   LogDebug("EcalRawToRecHit|Facility")<<"lazy getter created."
00063                                       << watcher.lap();
00064   
00065   edm::OrphanHandle<EcalRecHitLazyGetter> lgetter = iEvent.put(collection);
00066   LogDebug("EcalRawToRecHit|Facility")<<"lazy getter put in the event."
00067                                       << watcher.lap();
00068 }
00069 
00070 // ------------ method called once each job just before starting event loop  ------------
00071 void 
00072 EcalRawToRecHitFacility::beginJob(const edm::EventSetup&)
00073 {
00074 }
00075 
00076 // ------------ method called once each job just after ending the event loop  ------------
00077 void 
00078 EcalRawToRecHitFacility::endJob() {
00079 }

Generated on Tue Jun 9 17:34:32 2009 for CMSSW by  doxygen 1.5.4