![]() |
![]() |
#include <SiPixelRawToDigi.h>
Public Member Functions | |
virtual void | endJob () |
dummy end of job | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
get data, convert to digis attach againe to Event | |
SiPixelRawToDigi (const edm::ParameterSet &) | |
ctor | |
virtual | ~SiPixelRawToDigi () |
dtor | |
Private Attributes | |
const SiPixelQuality * | badPixelInfo_ |
const SiPixelFedCabling * | cabling_ |
edm::ParameterSet | config_ |
bool | debug |
std::vector< unsigned int > | fedIds |
TH1D * | hCPU |
TH1D * | hDigi |
bool | includeErrors |
edm::InputTag | label |
int | ndigis |
int | nwords |
edm::ESWatcher< SiPixelQualityRcd > | qualityWatcher |
edm::ESWatcher < SiPixelFedCablingMapRcd > | recordWatcher |
R2DTimerObserver * | theTimer |
bool | useCablingTree_ |
bool | useQuality |
Definition at line 23 of file SiPixelRawToDigi.h.
SiPixelRawToDigi::SiPixelRawToDigi | ( | const edm::ParameterSet & | conf | ) | [explicit] |
ctor
Definition at line 38 of file SiPixelRawToDigi.cc.
References config_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), hCPU, hDigi, includeErrors, ndigis, nwords, theTimer, useCablingTree_, and useQuality.
: config_(conf), cabling_(0), badPixelInfo_(0), hCPU(0), hDigi(0), theTimer(0) { includeErrors = config_.getParameter<bool>("IncludeErrors"); useQuality = config_.getParameter<bool>("UseQualityInfo"); useCablingTree_ = config_.getUntrackedParameter<bool>("UseCablingTree",true); //start counters ndigis = 0; nwords = 0; // Products produces< edm::DetSetVector<PixelDigi> >(); if(includeErrors) produces< edm::DetSetVector<SiPixelRawDataError> >(); // Timing bool timing = config_.getUntrackedParameter<bool>("Timing",false); if (timing) { theTimer = new R2DTimerObserver("**** MY TIMING REPORT ***"); hCPU = new TH1D ("hCPU","hCPU",100,0.,0.050); hDigi = new TH1D("hDigi","hDigi",50,0.,15000.); } }
SiPixelRawToDigi::~SiPixelRawToDigi | ( | ) | [virtual] |
dtor
Definition at line 68 of file SiPixelRawToDigi.cc.
References cabling_, hCPU, hDigi, BuildWebpage::rootFile, theTimer, and useCablingTree_.
{ edm::LogInfo("SiPixelRawToDigi") << " HERE ** SiPixelRawToDigi destructor!"; if(useCablingTree_) delete cabling_; if (theTimer) { TFile rootFile("analysis.root", "RECREATE", "my histograms"); hCPU->Write(); hDigi->Write(); delete theTimer; } }
virtual void SiPixelRawToDigi::endJob | ( | void | ) | [inline, virtual] |
dummy end of job
Reimplemented from edm::EDProducer.
Definition at line 34 of file SiPixelRawToDigi.h.
{}
void SiPixelRawToDigi::produce | ( | edm::Event & | ev, |
const edm::EventSetup & | es | ||
) | [virtual] |
get data, convert to digis attach againe to Event
Implements edm::EDProducer.
Definition at line 87 of file SiPixelRawToDigi.cc.
References badPixelInfo_, cabling_, edm::ESWatcher< T >::check(), runEdmFileComparison::collection, config_, edm::DetSet< T >::data, debug, cond::rpcobgas::detid, benchmark_cfg::errors, fedIds, edm::EventSetup::get(), edm::Event::getByLabel(), edm::ParameterSet::getParameter(), hCPU, hDigi, includeErrors, edm::MessageDrop::instance(), PixelDataFormatter::interpretRawData(), label, R2DTimerObserver::lastMeasurement(), LogDebug, PixelDataFormatter::nDigis(), ndigis, nwords, PixelDataFormatter::nWords(), edm::ESTransientHandle< T >::product(), edm::ESHandle< T >::product(), edm::Event::put(), qualityWatcher, recordWatcher, PixelDataFormatter::setErrorStatus(), PixelDataFormatter::setQualityStatus(), R2DTimerObserver::start(), R2DTimerObserver::stop(), theTimer, useCablingTree_, useQuality, and SiPixelFedCabling::version().
{ const uint32_t dummydetid = 0xffffffff; debug = edm::MessageDrop::instance()->debugEnabled; // initialize cabling map or update if necessary if (recordWatcher.check( es )) { // cabling map, which maps online address (fed->link->ROC->local pixel) to offline (DetId->global pixel) edm::ESTransientHandle<SiPixelFedCablingMap> cablingMap; es.get<SiPixelFedCablingMapRcd>().get( cablingMap ); fedIds = cablingMap->fedIds(); if (useCablingTree_ && cabling_) delete cabling_; if (useCablingTree_) cabling_ = cablingMap->cablingTree(); else cabling_ = cablingMap.product(); LogDebug("map version:")<< cabling_->version(); } // initialize quality record or update if necessary if (qualityWatcher.check( es )&&useQuality) { // quality info for dead pixel modules or ROCs edm::ESHandle<SiPixelQuality> qualityInfo; es.get<SiPixelQualityRcd>().get( qualityInfo ); badPixelInfo_ = qualityInfo.product(); if (!badPixelInfo_) { edm::LogError("**SiPixelRawToDigi**")<<" Configured to use SiPixelQuality, but SiPixelQuality not present"<<endl; } } edm::Handle<FEDRawDataCollection> buffers; label = config_.getParameter<edm::InputTag>("InputLabel"); ev.getByLabel( label, buffers); // create product (digis & errors) std::auto_ptr< edm::DetSetVector<PixelDigi> > collection( new edm::DetSetVector<PixelDigi> ); std::auto_ptr< edm::DetSetVector<SiPixelRawDataError> > errorcollection( new edm::DetSetVector<SiPixelRawDataError> ); PixelDataFormatter formatter(cabling_); formatter.setErrorStatus(includeErrors); if (useQuality) formatter.setQualityStatus(useQuality, badPixelInfo_); if (theTimer) theTimer->start(); bool errorsInEvent = false; PixelDataFormatter::DetErrors nodeterrors; typedef std::vector<unsigned int>::const_iterator IF; for (IF aFed = fedIds.begin(); aFed != fedIds.end(); ++aFed) { int fedId = *aFed; if(debug) LogDebug("SiPixelRawToDigi")<< " PRODUCE DIGI FOR FED: " << fedId << endl; PixelDataFormatter::Digis digis; PixelDataFormatter::Errors errors; //get event data for this fed const FEDRawData& fedRawData = buffers->FEDData( fedId ); //convert data to digi and strip off errors formatter.interpretRawData( errorsInEvent, fedId, fedRawData, digis, errors); //pack digi into collection typedef PixelDataFormatter::Digis::iterator ID; for (ID it = digis.begin(); it != digis.end(); it++) { uint32_t detid = it->first; edm::DetSet<PixelDigi>& detSet = collection->find_or_insert(detid); detSet.data = it->second; } //pack errors into collection if(includeErrors) { typedef PixelDataFormatter::Errors::iterator IE; for (IE is = errors.begin(); is != errors.end(); is++) { uint32_t errordetid = is->first; if (errordetid==dummydetid) { // errors given dummy detId must be sorted by Fed nodeterrors.insert( nodeterrors.end(), errors[errordetid].begin(), errors[errordetid].end() ); } else { edm::DetSet<SiPixelRawDataError>& errorDetSet = errorcollection->find_or_insert(errordetid); errorDetSet.data = is->second; } } } } if(includeErrors) { edm::DetSet<SiPixelRawDataError>& errorDetSet = errorcollection->find_or_insert(dummydetid); errorDetSet.data = nodeterrors; } if (errorsInEvent) LogDebug("SiPixelRawToDigi") << "Error words were stored in this event"; if (theTimer) { theTimer->stop(); LogDebug("SiPixelRawToDigi") << "TIMING IS: (real)" << theTimer->lastMeasurement().real() ; ndigis += formatter.nDigis(); nwords += formatter.nWords(); LogDebug("SiPixelRawToDigi") << " (Words/Digis) this ev: " <<formatter.nWords()<<"/"<<formatter.nDigis() << "--- all :"<<nwords<<"/"<<ndigis; hCPU->Fill( theTimer->lastMeasurement().real() ); hDigi->Fill(formatter.nDigis()); } //send digis and errors back to framework ev.put( collection ); if(includeErrors) ev.put( errorcollection ); }
const SiPixelQuality* SiPixelRawToDigi::badPixelInfo_ [private] |
Definition at line 43 of file SiPixelRawToDigi.h.
Referenced by produce().
const SiPixelFedCabling* SiPixelRawToDigi::cabling_ [private] |
Definition at line 42 of file SiPixelRawToDigi.h.
Referenced by produce(), and ~SiPixelRawToDigi().
edm::ParameterSet SiPixelRawToDigi::config_ [private] |
Definition at line 41 of file SiPixelRawToDigi.h.
Referenced by produce(), and SiPixelRawToDigi().
bool SiPixelRawToDigi::debug [private] |
Definition at line 49 of file SiPixelRawToDigi.h.
Referenced by produce().
std::vector<unsigned int> SiPixelRawToDigi::fedIds [private] |
Definition at line 50 of file SiPixelRawToDigi.h.
Referenced by produce().
TH1D* SiPixelRawToDigi::hCPU [private] |
Definition at line 45 of file SiPixelRawToDigi.h.
Referenced by produce(), SiPixelRawToDigi(), and ~SiPixelRawToDigi().
TH1D * SiPixelRawToDigi::hDigi [private] |
Definition at line 45 of file SiPixelRawToDigi.h.
Referenced by produce(), SiPixelRawToDigi(), and ~SiPixelRawToDigi().
bool SiPixelRawToDigi::includeErrors [private] |
Definition at line 47 of file SiPixelRawToDigi.h.
Referenced by produce(), and SiPixelRawToDigi().
edm::InputTag SiPixelRawToDigi::label [private] |
Definition at line 53 of file SiPixelRawToDigi.h.
Referenced by produce().
int SiPixelRawToDigi::ndigis [private] |
Definition at line 54 of file SiPixelRawToDigi.h.
Referenced by produce(), and SiPixelRawToDigi().
int SiPixelRawToDigi::nwords [private] |
Definition at line 55 of file SiPixelRawToDigi.h.
Referenced by produce(), and SiPixelRawToDigi().
Definition at line 52 of file SiPixelRawToDigi.h.
Referenced by produce().
Definition at line 51 of file SiPixelRawToDigi.h.
Referenced by produce().
R2DTimerObserver* SiPixelRawToDigi::theTimer [private] |
Definition at line 46 of file SiPixelRawToDigi.h.
Referenced by produce(), SiPixelRawToDigi(), and ~SiPixelRawToDigi().
bool SiPixelRawToDigi::useCablingTree_ [private] |
Definition at line 44 of file SiPixelRawToDigi.h.
Referenced by produce(), SiPixelRawToDigi(), and ~SiPixelRawToDigi().
bool SiPixelRawToDigi::useQuality [private] |
Definition at line 48 of file SiPixelRawToDigi.h.
Referenced by produce(), and SiPixelRawToDigi().