CMS 3D CMS Logo

SiStripDigiToRawModule.cc

Go to the documentation of this file.
00001 // Last commit: $Id: SiStripDigiToRawModule.cc,v 1.5.2.1 2008/07/04 14:24:22 bainbrid Exp $
00002 
00003 #include "EventFilter/SiStripRawToDigi/plugins/SiStripDigiToRawModule.h"
00004 #include "EventFilter/SiStripRawToDigi/interface/SiStripDigiToRaw.h"
00005 #include "FWCore/Framework/interface/Event.h"
00006 #include "FWCore/Framework/interface/EventSetup.h"
00007 #include "FWCore/Framework/interface/ESHandle.h"
00008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00010 #include "DataFormats/Common/interface/Handle.h"
00011 #include "DataFormats/Common/interface/DetSetVector.h"
00012 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00013 #include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
00014 #include "CondFormats/DataRecord/interface/SiStripFedCablingRcd.h"
00015 #include <cstdlib>
00016 
00017 using namespace std;
00018 
00019 // -----------------------------------------------------------------------------
00023 SiStripDigiToRawModule::SiStripDigiToRawModule( const edm::ParameterSet& pset ) :
00024   inputModuleLabel_( pset.getParameter<std::string>( "InputModuleLabel" ) ),
00025   inputDigiLabel_( pset.getParameter<std::string>( "InputDigiLabel" ) ),
00026   digiToRaw_(0),
00027   eventCounter_(0)
00028 {
00029   if ( edm::isDebugEnabled() ) {
00030     LogDebug("DigiToRaw") 
00031       << "[SiStripDigiToRawModule::SiStripDigiToRawModule]"
00032       << " Constructing object...";
00033   }
00034 
00035   // Create instance of DigiToRaw formatter
00036   std::string mode = pset.getUntrackedParameter<std::string>("FedReadoutMode","VIRGIN_RAW");
00037   int16_t nbytes = pset.getUntrackedParameter<int>("AppendedBytes",0);
00038   bool use_fed_key = pset.getUntrackedParameter<bool>("UseFedKey",false);
00039   digiToRaw_ = new SiStripDigiToRaw( mode, nbytes, use_fed_key );
00040   
00041   produces<FEDRawDataCollection>();
00042 
00043 }
00044 
00045 // -----------------------------------------------------------------------------
00047 SiStripDigiToRawModule::~SiStripDigiToRawModule() {
00048   if ( edm::isDebugEnabled() ) {
00049     LogDebug("DigiToRaw")
00050       << "[SiStripDigiToRawModule::~SiStripDigiToRawModule]"
00051       << " Destructing object...";
00052   }
00053   if ( digiToRaw_ ) delete digiToRaw_;
00054 }
00055 
00056 // -----------------------------------------------------------------------------
00063 void SiStripDigiToRawModule::produce( edm::Event& iEvent, 
00064                                       const edm::EventSetup& iSetup ) {
00065 
00066   eventCounter_++; 
00067   
00068   edm::ESHandle<SiStripFedCabling> cabling;
00069   iSetup.get<SiStripFedCablingRcd>().get( cabling );
00070 
00071   edm::Handle< edm::DetSetVector<SiStripDigi> > digis;
00072   iEvent.getByLabel( inputModuleLabel_, inputDigiLabel_, digis );
00073 
00074   std::auto_ptr<FEDRawDataCollection> buffers( new FEDRawDataCollection );
00075   
00076   digiToRaw_->createFedBuffers( iEvent, cabling, digis, buffers );
00077 
00078   iEvent.put( buffers );
00079   
00080 }

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