#include <RecoLocalTracker/SiStripMeanCMExtractor/src/SiStripMeanCMExtractor.cc>
Public Member Functions | |
SiStripMeanCMExtractor (const edm::ParameterSet &) | |
~SiStripMeanCMExtractor () | |
Private Member Functions | |
virtual void | beginJob () |
void | CMExtractorFromPedestals (const edm::DetSetVector< SiStripRawDigi > &, std::vector< edm::DetSet< SiStripProcessedRawDigi > > &) |
void | ConvertMeanMapToDetSetVector (std::vector< edm::DetSet< SiStripProcessedRawDigi > > &) |
virtual void | endJob () |
void | init (const edm::EventSetup &) |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
void | StoreMean (const edm::DetSetVector< SiStripProcessedRawDigi > &) |
Private Attributes | |
uint16_t | _actualEvent |
std::string | _Algorithm |
CMMap | _CMMap |
edm::InputTag | _inputTag |
uint16_t | _nEventsToUse |
uint32_t | pedestal_cache_id_ |
edm::ESHandle< SiStripPedestals > | pedestalHandle_ |
Description: [one line class summary]
Implementation: [Notes on implementation]
Definition at line 54 of file SiStripMeanCMExtractor.cc.
SiStripMeanCMExtractor::SiStripMeanCMExtractor | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 81 of file SiStripMeanCMExtractor.cc.
References _nEventsToUse.
: _inputTag(conf.getParameter<edm::InputTag> ("CMCollection")), _Algorithm(conf.getParameter<std::string>("Algorithm")), _nEventsToUse(conf.getParameter<uint32_t>("NEvents")) { if(_nEventsToUse < 1) _nEventsToUse=1; produces< edm::DetSetVector<SiStripProcessedRawDigi> > ("MEANAPVCM"); }
SiStripMeanCMExtractor::~SiStripMeanCMExtractor | ( | ) |
Definition at line 93 of file SiStripMeanCMExtractor.cc.
{ }
void SiStripMeanCMExtractor::beginJob | ( | void | ) | [private, virtual] |
Reimplemented from edm::EDProducer.
Definition at line 212 of file SiStripMeanCMExtractor.cc.
References _actualEvent, and _CMMap.
{ _actualEvent =1; _CMMap.clear(); }
void SiStripMeanCMExtractor::CMExtractorFromPedestals | ( | const edm::DetSetVector< SiStripRawDigi > & | input, |
std::vector< edm::DetSet< SiStripProcessedRawDigi > > & | meancm | ||
) | [private] |
Definition at line 145 of file SiStripMeanCMExtractor.cc.
References sistrip::APV, edm::DetSetVector< T >::begin(), edm::DetSetVector< T >::end(), pedestalHandle_, edm::DetSet< T >::push_back(), and strip().
Referenced by produce().
{ meancm.clear(); meancm.reserve(15000); for ( edm::DetSetVector<SiStripRawDigi>::const_iterator rawDigis = input.begin(); rawDigis != input.end(); rawDigis++) { SiStripPedestals::Range detPedestalRange = pedestalHandle_->getRange(rawDigis->id); edm::DetSet<SiStripProcessedRawDigi> MeanCMDetSet(rawDigis->id); for(uint16_t APV = 0; APV < rawDigis->size()/128; ++APV){ uint16_t MinPed =0; for(uint16_t strip = APV*128; strip< (APV+1)*128; ++strip){ uint16_t ped = (uint16_t)pedestalHandle_->getPed(strip,detPedestalRange); if(ped < MinPed) MinPed = ped; } if(MinPed>128) MinPed=128; MeanCMDetSet.push_back(MinPed); } meancm.push_back(MeanCMDetSet); } }
void SiStripMeanCMExtractor::ConvertMeanMapToDetSetVector | ( | std::vector< edm::DetSet< SiStripProcessedRawDigi > > & | meancm | ) | [private] |
Definition at line 197 of file SiStripMeanCMExtractor.cc.
References _actualEvent, _CMMap, end, and edm::DetSet< T >::push_back().
Referenced by produce().
{ CMMap::iterator itMap; std::vector<float>::const_iterator itMapVector; meancm.clear(); meancm.reserve(15000); for(itMap = _CMMap.begin(); itMap != _CMMap.end(); ++itMap){ edm::DetSet<SiStripProcessedRawDigi> MeanCMDetSet(itMap->first); for(itMapVector = (itMap->second).begin(); itMapVector != (itMap->second).end(); ++itMapVector) MeanCMDetSet.push_back(*itMapVector/(float)_actualEvent); meancm.push_back(MeanCMDetSet); } }
void SiStripMeanCMExtractor::endJob | ( | void | ) | [private, virtual] |
void SiStripMeanCMExtractor::init | ( | const edm::EventSetup & | es | ) | [private] |
Definition at line 98 of file SiStripMeanCMExtractor.cc.
References edm::EventSetup::get(), pedestal_cache_id_, and pedestalHandle_.
Referenced by produce().
{ uint32_t p_cache_id = es.get<SiStripPedestalsRcd>().cacheIdentifier(); if(p_cache_id != pedestal_cache_id_) { es.get<SiStripPedestalsRcd>().get( pedestalHandle_ ); pedestal_cache_id_ = p_cache_id; } }
void SiStripMeanCMExtractor::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [private, virtual] |
Implements edm::EDProducer.
Definition at line 110 of file SiStripMeanCMExtractor.cc.
References _actualEvent, _Algorithm, _inputTag, CMExtractorFromPedestals(), ConvertMeanMapToDetSetVector(), edm::Event::getByLabel(), init(), collect_tpl::input, edm::Event::put(), and StoreMean().
{ using namespace edm; //if(_actualEvent > _nEventsToUse) return; std::vector<edm::DetSet<SiStripProcessedRawDigi> > meancm; if(_Algorithm == "StoredCM"){ edm::Handle< edm::DetSetVector<SiStripProcessedRawDigi> > inputCM; iEvent.getByLabel(_inputTag,inputCM); this->StoreMean(*inputCM); this->ConvertMeanMapToDetSetVector(meancm); } else if (_Algorithm == "Pedestals"){ this->init(iSetup); edm::Handle< edm::DetSetVector<SiStripRawDigi> > input; iEvent.getByLabel(_inputTag,input); this->CMExtractorFromPedestals(*input,meancm); } ++_actualEvent; std::auto_ptr< edm::DetSetVector<SiStripProcessedRawDigi> > outputMeanCM(new edm::DetSetVector<SiStripProcessedRawDigi>(meancm) ); iEvent.put( outputMeanCM,"MEANAPVCM"); }
void SiStripMeanCMExtractor::StoreMean | ( | const edm::DetSetVector< SiStripProcessedRawDigi > & | Input | ) | [private] |
Definition at line 168 of file SiStripMeanCMExtractor.cc.
References _CMMap, edm::DetSetVector< T >::begin(), and edm::DetSetVector< T >::end().
Referenced by produce().
{ uint32_t detId; CMMap::iterator itMap; edm::DetSetVector<SiStripProcessedRawDigi>::const_iterator itInput; for(itInput = Input.begin(); itInput != Input.end(); ++itInput){ detId = itInput->id; itMap = _CMMap.find(detId); edm::DetSet<SiStripProcessedRawDigi>::const_iterator itCM; std::vector<float> MeanCMNValue; MeanCMNValue.clear(); if(itMap!=_CMMap.end()){ //the detId was already found std::vector< float >& MapContent = itMap->second; std::vector<float>::iterator itMapVector = MapContent.begin(); for(itCM = itInput->begin(); itCM != itInput->end(); ++itCM, ++itMapVector){ MeanCMNValue.push_back(itCM->adc() + *itMapVector); } _CMMap.erase(itMap); _CMMap.insert(itMap, std::pair<uint32_t, std::vector<float> >(detId,MeanCMNValue)); } else { //no detId found for(itCM = itInput->begin(); itCM != itInput->end(); ++itCM) MeanCMNValue.push_back(itCM->adc()); _CMMap.insert(std::pair<uint32_t, std::vector<float> >(detId,MeanCMNValue)); } } }
uint16_t SiStripMeanCMExtractor::_actualEvent [private] |
Definition at line 75 of file SiStripMeanCMExtractor.cc.
Referenced by beginJob(), ConvertMeanMapToDetSetVector(), and produce().
std::string SiStripMeanCMExtractor::_Algorithm [private] |
Definition at line 73 of file SiStripMeanCMExtractor.cc.
Referenced by produce().
CMMap SiStripMeanCMExtractor::_CMMap [private] |
Definition at line 77 of file SiStripMeanCMExtractor.cc.
Referenced by beginJob(), ConvertMeanMapToDetSetVector(), and StoreMean().
Definition at line 72 of file SiStripMeanCMExtractor.cc.
Referenced by produce().
uint16_t SiStripMeanCMExtractor::_nEventsToUse [private] |
Definition at line 74 of file SiStripMeanCMExtractor.cc.
Referenced by SiStripMeanCMExtractor().
uint32_t SiStripMeanCMExtractor::pedestal_cache_id_ [private] |
Definition at line 67 of file SiStripMeanCMExtractor.cc.
Referenced by init().
Definition at line 66 of file SiStripMeanCMExtractor.cc.
Referenced by CMExtractorFromPedestals(), and init().