#include <DataMixingSiStripRawWorker.h>
Public Member Functions | |
void | addSiStripPileups (const int bcr, edm::EventPrincipal *, unsigned int EventId) |
void | addSiStripSignals (const edm::Event &e) |
DataMixingSiStripRawWorker (const edm::ParameterSet &ps) | |
DataMixingSiStripRawWorker () | |
void | putSiStrip (edm::Event &e) |
virtual | ~DataMixingSiStripRawWorker () |
Private Types | |
typedef std::vector< SiStripDigi > | OneDetectorMap |
typedef std::map< uint32_t, OneDetectorMap > | SiGlobalIndex |
Private Attributes | |
const edm::DetSetVector < SiStripDigi > * | digicollection_ |
std::string | label_ |
const edm::DetSetVector < SiStripRawDigi > * | rawdigicollection_ |
Selector * | sel_ |
SiGlobalIndex | SiHitStorage_ |
edm::InputTag | Sistripdigi_collectionSig_ |
std::string | SiStripDigiCollectionDM_ |
edm::InputTag | SistripLabelSig_ |
edm::InputTag | SiStripPileInputTag_ |
std::string | SiStripRawDigiSource_ |
edm::InputTag | SiStripRawInputTag_ |
Definition at line 37 of file DataMixingSiStripRawWorker.h.
typedef std::vector<SiStripDigi> edm::DataMixingSiStripRawWorker::OneDetectorMap [private] |
Definition at line 66 of file DataMixingSiStripRawWorker.h.
typedef std::map<uint32_t, OneDetectorMap> edm::DataMixingSiStripRawWorker::SiGlobalIndex [private] |
Definition at line 67 of file DataMixingSiStripRawWorker.h.
DataMixingSiStripRawWorker::DataMixingSiStripRawWorker | ( | ) |
Definition at line 26 of file DataMixingSiStripRawWorker.cc.
{ sel_=0;}
DataMixingSiStripRawWorker::DataMixingSiStripRawWorker | ( | const edm::ParameterSet & | ps | ) | [explicit] |
standard constructor
Definition at line 29 of file DataMixingSiStripRawWorker.cc.
References edm::ParameterSet::getParameter(), label_, sel_, SiHitStorage_, Sistripdigi_collectionSig_, SiStripDigiCollectionDM_, SistripLabelSig_, SiStripPileInputTag_, SiStripRawDigiSource_, and SiStripRawInputTag_.
: label_(ps.getParameter<std::string>("Label")) { // get the subdetector names // this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do... // create input selector if (label_.size()>0){ sel_=new Selector( ModuleLabelSelector(label_)); } else { sel_=new Selector( MatchAllSelector()); } // declare the products to produce Sistripdigi_collectionSig_ = ps.getParameter<edm::InputTag>("SistripdigiCollectionSig"); SistripLabelSig_ = ps.getParameter<edm::InputTag>("SistripLabelSig"); SiStripPileInputTag_ = ps.getParameter<edm::InputTag>("SiStripPileInputTag"); SiStripRawInputTag_ = ps.getParameter<edm::InputTag>("SiStripRawInputTag"); SiStripDigiCollectionDM_ = ps.getParameter<std::string>("SiStripDigiCollectionDM"); SiStripRawDigiSource_ = ps.getParameter<std::string>("SiStripRawDigiSource"); // clear local storage for this event SiHitStorage_.clear(); }
DataMixingSiStripRawWorker::~DataMixingSiStripRawWorker | ( | ) | [virtual] |
void DataMixingSiStripRawWorker::addSiStripPileups | ( | const int | bcr, |
edm::EventPrincipal * | ep, | ||
unsigned int | EventId | ||
) |
Definition at line 92 of file DataMixingSiStripRawWorker.cc.
References gather_cfg::cout, digicollection_, edm::EventPrincipal::id(), LogDebug, rawdigicollection_, SiStripPileInputTag_, SiStripRawDigiSource_, and SiStripRawInputTag_.
Referenced by edm::DataMixingModule::addPileups().
{ LogDebug("DataMixingSiStripRawWorker") << "\n===============> adding pileups from event " << ep->id() << " for bunchcrossing " << bcr; boost::shared_ptr<Wrapper<edm::DetSetVector<SiStripDigi> > const> pSSD; boost::shared_ptr<Wrapper<edm::DetSetVector<SiStripRawDigi> > const> pSSRD; if (SiStripRawDigiSource_=="SIGNAL") { pSSD = getProductByTag<edm::DetSetVector<SiStripDigi> >(*ep, SiStripPileInputTag_); digicollection_ = const_cast< edm::DetSetVector<SiStripDigi> * >(pSSD->product()); } else if (SiStripRawDigiSource_=="PILEUP") { pSSRD = getProductByTag<edm::DetSetVector<SiStripRawDigi> >(*ep, SiStripRawInputTag_ ); rawdigicollection_ = const_cast< edm::DetSetVector<SiStripRawDigi> * >(pSSRD->product()); } else { std::cout << "you shouldn't be here" << std::endl; } } // end of addSiStripPileups
void DataMixingSiStripRawWorker::addSiStripSignals | ( | const edm::Event & | e | ) |
Definition at line 71 of file DataMixingSiStripRawWorker.cc.
References gather_cfg::cout, digicollection_, edm::Event::getByLabel(), edm::InputTag::label(), edm::Handle< T >::product(), rawdigicollection_, Sistripdigi_collectionSig_, SistripLabelSig_, SiStripRawDigiSource_, and SiStripRawInputTag_.
Referenced by edm::DataMixingModule::addSignals().
{ edm::Handle< edm::DetSetVector<SiStripDigi> > hSSD; edm::Handle< edm::DetSetVector<SiStripRawDigi> > hSSRD; if (SiStripRawDigiSource_=="SIGNAL") { e.getByLabel(SiStripRawInputTag_,hSSRD); rawdigicollection_ = hSSRD.product(); } else if (SiStripRawDigiSource_=="PILEUP") { e.getByLabel(Sistripdigi_collectionSig_.label(),SistripLabelSig_.label(),hSSD); digicollection_ = hSSD.product(); } else { std::cout << "you shouldn't be here" << std::endl; } } // end of addSiStripSignals
void DataMixingSiStripRawWorker::putSiStrip | ( | edm::Event & | e | ) |
Definition at line 113 of file DataMixingSiStripRawWorker.cc.
References edm::DetSetVector< T >::begin(), begin, digicollection_, end, edm::DetSetVector< T >::end(), edm::DetSetVector< T >::insert(), LogDebug, edm::DetSet< T >::push_back(), edm::Event::put(), rawdigicollection_, SiHitStorage_, and SiStripDigiCollectionDM_.
Referenced by edm::DataMixingModule::put().
{ //------------------ // (1) Fill a map from the Digi collection // // fill in maps of SiStripDigis OneDetectorMap LocalMap; //loop on all detsets (detectorIDs) inside the input collection edm::DetSetVector<SiStripDigi>::const_iterator DSViter=digicollection_->begin(); for (; DSViter!=digicollection_->end();DSViter++){ #ifdef DEBUG LogDebug("DataMixingSiStripRawWorker") << "Processing DetID " << DSViter->id; #endif LocalMap.clear(); LocalMap.reserve((DSViter->data).size()); LocalMap.insert(LocalMap.end(),(DSViter->data).begin(),(DSViter->data).end()); SiHitStorage_.insert( SiGlobalIndex::value_type( DSViter->id, LocalMap ) ); } //------------------ // (2) Loop over the input RawDigi collection and add the Digis from the map // // collection of RawDigis to put back in the event std::vector< edm::DetSet<SiStripRawDigi> > vSiStripRawDigi; //loop on all detsets (detectorIDs) inside the SiStripRawDigis collection edm::DetSetVector<SiStripRawDigi>::const_iterator rawDSViter=rawdigicollection_->begin(); for (; rawDSViter!=rawdigicollection_->end();rawDSViter++){ // Make empty collection with this detID edm::DetSet<SiStripRawDigi> SSRD(rawDSViter->id); // find local map (if it exists) for this detector ID SiGlobalIndex::const_iterator itest; itest = SiHitStorage_.find(rawDSViter->id); // if detID already has digis in existing map, add them to rawdigis if(itest!=SiHitStorage_.end()) { #ifdef DEBUG LogDebug("DataMixingSiStripRawWorker") << "Pileups: Processing DetID " << rawDSViter->id; #endif // get the map from storage LocalMap = itest->second; OneDetectorMap::const_iterator iLocal = LocalMap.begin(); // loop on all strips in rawdigi detset int currentstrip=0; edm::DetSet<SiStripRawDigi>::const_iterator iRawDigi = rawDSViter->begin(); while( iRawDigi != rawDSViter->end() ) { int ADCSum = iRawDigi->adc(); // if current strip exists in map, add ADC values if(iLocal->strip() == currentstrip) { ADCSum += iLocal->adc(); iLocal++; } // put ADC sum in DetSet and go to next strip SSRD.push_back( SiStripRawDigi(ADCSum) ); iRawDigi++; currentstrip++; } // copy combined digi+rawdigi into rawdigi DetSetVector vSiStripRawDigi.push_back(SSRD); // otherwise, just copy the rawdigis from the background event to the output } else { vSiStripRawDigi.push_back(*rawDSViter); } } //------------------ // (3) Put the new RawDigi collection back into the event // // make new raw digi collection std::auto_ptr< edm::DetSetVector<SiStripRawDigi> > MySiStripRawDigis(new edm::DetSetVector<SiStripRawDigi>(vSiStripRawDigi) ); // put collection e.put( MySiStripRawDigis, SiStripDigiCollectionDM_ ); // clear local storage for this event SiHitStorage_.clear(); }
const edm::DetSetVector<SiStripDigi>* edm::DataMixingSiStripRawWorker::digicollection_ [private] |
Definition at line 72 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripPileups(), addSiStripSignals(), and putSiStrip().
std::string edm::DataMixingSiStripRawWorker::label_ [private] |
Definition at line 76 of file DataMixingSiStripRawWorker.h.
Referenced by DataMixingSiStripRawWorker().
const edm::DetSetVector<SiStripRawDigi>* edm::DataMixingSiStripRawWorker::rawdigicollection_ [private] |
Definition at line 73 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripPileups(), addSiStripSignals(), and putSiStrip().
Selector* edm::DataMixingSiStripRawWorker::sel_ [private] |
Definition at line 75 of file DataMixingSiStripRawWorker.h.
Referenced by DataMixingSiStripRawWorker(), and ~DataMixingSiStripRawWorker().
Definition at line 69 of file DataMixingSiStripRawWorker.h.
Referenced by DataMixingSiStripRawWorker(), and putSiStrip().
Definition at line 57 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripSignals(), and DataMixingSiStripRawWorker().
std::string edm::DataMixingSiStripRawWorker::SiStripDigiCollectionDM_ [private] |
Definition at line 61 of file DataMixingSiStripRawWorker.h.
Referenced by DataMixingSiStripRawWorker(), and putSiStrip().
Definition at line 58 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripSignals(), and DataMixingSiStripRawWorker().
Definition at line 59 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripPileups(), and DataMixingSiStripRawWorker().
std::string edm::DataMixingSiStripRawWorker::SiStripRawDigiSource_ [private] |
Definition at line 62 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripPileups(), addSiStripSignals(), and DataMixingSiStripRawWorker().
Definition at line 60 of file DataMixingSiStripRawWorker.h.
Referenced by addSiStripPileups(), addSiStripSignals(), and DataMixingSiStripRawWorker().