#include <SiStripRegFEDSelector.h>
Public Member Functions | |
SiStripRegFEDSelector (const edm::ParameterSet &) | |
~SiStripRegFEDSelector () | |
Public Attributes | |
double | delta_ |
edm::InputTag | rawInLabel_ |
edm::InputTag | seedLabel_ |
edm::ESHandle < SiStripRegionCabling > | strip_cabling |
Private Member Functions | |
virtual void | beginJob () |
virtual void | endJob () |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
Definition at line 23 of file SiStripRegFEDSelector.h.
SiStripRegFEDSelector::SiStripRegFEDSelector | ( | const edm::ParameterSet & | iConfig | ) |
Definition at line 9 of file SiStripRegFEDSelector.cc.
References delta_, edm::ParameterSet::getParameter(), rawInLabel_, and seedLabel_.
{ seedLabel_=iConfig.getParameter<edm::InputTag>("regSeedLabel"); delta_=iConfig.getParameter<double>("delta"); rawInLabel_=iConfig.getParameter<edm::InputTag>("rawInputLabel"); produces<FEDRawDataCollection>(); }
SiStripRegFEDSelector::~SiStripRegFEDSelector | ( | ) |
Definition at line 20 of file SiStripRegFEDSelector.cc.
{ }
void SiStripRegFEDSelector::beginJob | ( | void | ) | [private, virtual] |
void SiStripRegFEDSelector::endJob | ( | void | ) | [private, virtual] |
void SiStripRegFEDSelector::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [private, virtual] |
Implements edm::EDProducer.
Definition at line 26 of file SiStripRegFEDSelector.cc.
References SiStripRegionCabling::ALLLAYERS, SiStripRegionCabling::ALLSUBDETS, FEDRawData::data(), data, delta_, FEDRawDataCollection::FEDData(), edm::EventSetup::get(), edm::Event::getByLabel(), i, j, gen::k, FEDNumbering::MAXFEDID, AlCaHLTBitMon_ParallelJobs::p, pos, funct::pow(), edm::Handle< T >::product(), edm::Event::put(), dttmaxenums::R, rawInLabel_, FEDRawData::resize(), seedLabel_, findQualityFiles::size, FEDRawData::size(), mathSSE::sqrt(), strip_cabling, and trigger::TriggerTrack.
{ std::auto_ptr<FEDRawDataCollection> producedData(new FEDRawDataCollection); edm::Handle<trigger::TriggerFilterObjectWithRefs> trigSeedTrks; iEvent.getByLabel(seedLabel_,trigSeedTrks); std::vector< edm::Ref<reco::IsolatedPixelTrackCandidateCollection> > isoPixTrackRefs; trigSeedTrks->getObjects(trigger::TriggerTrack, isoPixTrackRefs); edm::Handle<FEDRawDataCollection> rawIn; iEvent.getByLabel(rawInLabel_,rawIn); iSetup.get<SiStripRegionCablingRcd>().get(strip_cabling); std::vector<int> stripFEDVec; //get vector of regions const SiStripRegionCabling::Cabling ccab=strip_cabling->getRegionCabling(); //size of region (eta,phi) const std::pair<double,double> regDim=strip_cabling->regionDimensions(); const SiStripRegionCabling::ElementCabling elcabling; bool fedSaved[1000]; for (int i=0; i<1000; i++) fedSaved[i]=false; //cycle on seeds for (uint32_t p=0; p<isoPixTrackRefs.size(); p++) { double etaObj_=isoPixTrackRefs[p]->track()->eta(); double phiObj_=isoPixTrackRefs[p]->track()->phi(); //cycle on regions for (uint32_t i=0; i<ccab.size(); i++) { SiStripRegionCabling::Position pos=strip_cabling->position(i); double dphi=fabs(pos.second-phiObj_); if (dphi>acos(-1)) dphi=2*acos(-1)-dphi; double R=sqrt(pow(pos.first-etaObj_,2)+dphi*dphi); if (R-sqrt(pow(regDim.first/2,2)+pow(regDim.second/2,2))>delta_) continue; //get vector of subdets within region const SiStripRegionCabling::RegionCabling regSubdets= ccab[i]; //cycle on subdets for (uint32_t idet=0; idet<SiStripRegionCabling::ALLSUBDETS; idet++) { //get vector of layers within subdet of region const SiStripRegionCabling::WedgeCabling regSubdetLayers=regSubdets[idet]; for (uint32_t ilayer=0; ilayer<SiStripRegionCabling::ALLLAYERS; ilayer++) { //get map of vectors of feds withing the layer of subdet of region const SiStripRegionCabling::ElementCabling fedVectorMap=regSubdetLayers[ilayer]; SiStripRegionCabling::ElementCabling::const_iterator it=fedVectorMap.begin(); for( ; it!=fedVectorMap.end(); it++) { for (uint32_t op=0; op<(it->second).size(); op++) { //get fed id int fediid=(it->second)[op].fedId(); if (!fedSaved[fediid]) { stripFEDVec.push_back(fediid); } fedSaved[fediid]=true; } } } } } } const FEDRawDataCollection *rdc=rawIn.product(); // if ( ( rawData[i].provenance()->processName() != e.processHistory().rbegin()->processName() ) ) // continue ; // skip all raw collections not produced by the current process for ( int j=0; j< FEDNumbering::MAXFEDID; ++j ) { bool rightFED=false; for (uint32_t k=0; k<stripFEDVec.size(); k++) { if (j==stripFEDVec[k]) { rightFED=true; } } if (!rightFED) continue; const FEDRawData & fedData = rdc->FEDData(j); size_t size=fedData.size(); if ( size > 0 ) { // this fed has data -- lets copy it FEDRawData & fedDataProd = producedData->FEDData(j); if ( fedDataProd.size() != 0 ) { // std::cout << " More than one FEDRawDataCollection with data in FED "; // std::cout << j << " Skipping the 2nd\n"; continue; } fedDataProd.resize(size); unsigned char *dataProd=fedDataProd.data(); const unsigned char *data=fedData.data(); for ( unsigned int k=0; k<size; ++k ) { dataProd[k]=data[k]; } } } iEvent.put(producedData); }
Definition at line 31 of file SiStripRegFEDSelector.h.
Referenced by produce(), and SiStripRegFEDSelector().
Definition at line 33 of file SiStripRegFEDSelector.h.
Referenced by produce(), and SiStripRegFEDSelector().
Definition at line 30 of file SiStripRegFEDSelector.h.
Referenced by produce(), and SiStripRegFEDSelector().
Definition at line 28 of file SiStripRegFEDSelector.h.
Referenced by produce().