70 template<
typename TEle,
typename TCand>
74 if(iConfig.
existsAs<std::vector<edm::InputTag> >(
"electronTags")){
75 electronTags_ = iConfig.
getParameter<std::vector<edm::InputTag>>(
"electronTags");
76 if(electronTags_.empty())
77 throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] empty electron collection is given --> at least one \n";
79 else throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] no electron collection are given --> need at least one \n";
82 LogDebug(
"SelectedElectronFEDListProducer")<<
" Electron Collections"<<std::endl;
83 for( std::vector<edm::InputTag>::const_iterator itEleTag = electronTags_.begin(); itEleTag != electronTags_.end(); ++itEleTag){
84 electronToken_.push_back(consumes<TEleColl>(*itEleTag));
85 LogDebug(
"SelectedElectronFEDListProducer")<<
" Ele collection: "<<*(itEleTag)<<std::endl;
89 if(iConfig.
existsAs<std::vector<edm::InputTag> >(
"recoEcalCandidateTags")){
90 recoEcalCandidateTags_ = iConfig.
getParameter<std::vector<edm::InputTag>>(
"recoEcalCandidateTags");
91 if(recoEcalCandidateTags_.empty())
92 throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] empty ecal candidate collections collection is given --> at least one \n";
94 else throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] no electron reco ecal candidate collection are given --> need at least one \n";
97 for( std::vector<edm::InputTag>::const_iterator itEcalCandTag = recoEcalCandidateTags_.begin(); itEcalCandTag != recoEcalCandidateTags_.end(); ++itEcalCandTag){
98 recoEcalCandidateToken_.push_back(consumes<trigger::TriggerFilterObjectWithRefs>(*itEcalCandTag));
99 LogDebug(
"SelectedElectronFEDListProducer")<<
" Reco ecal candidate collection: "<<*(itEcalCandTag)<<std::endl;
103 if(iConfig.
existsAs<std::vector<int>>(
"isGsfElectronCollection")){
104 isGsfElectronCollection_ = iConfig.
getParameter<std::vector<int>>(
"isGsfElectronCollection");
105 if(isGsfElectronCollection_.empty())
106 throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] empty electron flag collection --> at least one \n";
108 else throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] no electron flag are given --> need at least one \n";
110 if(isGsfElectronCollection_.size() != electronTags_.size()
or isGsfElectronCollection_.size() != recoEcalCandidateTags_.size())
111 throw cms::Exception(
"Configuration")<<
"[SelectedElectronFEDListProducer] electron flag , electron collection and reco ecal cand collection must have the same size ! \n";
118 if(!(beamSpotTag_ ==
edm::InputTag(
""))) beamSpotToken_ = consumes<reco::BeamSpot>(beamSpotTag_);
120 LogDebug(
"SelectedElectronFEDListProducer")<<
" Beam Spot Tag "<<beamSpotTag_<<std::endl;
127 if(!(HBHERecHitTag_ ==
edm::InputTag(
""))) hbheRecHitToken_ = consumes<HBHERecHitCollection>(HBHERecHitTag_);
134 if(!(rawDataTag_ ==
edm::InputTag(
""))) rawDataToken_ = consumes<FEDRawDataCollection>(rawDataTag_);
136 LogDebug(
"SelectedElectronFEDListProducer")<<
" RawDataInput "<<rawDataTag_<<std::endl;
140 if(iConfig.
existsAs<std::vector<int>>(
"addThisSelectedFEDs")){
141 addThisSelectedFEDs_ = iConfig.
getParameter<std::vector<int>>(
"addThisSelectedFEDs");
142 if(addThisSelectedFEDs_.empty())
143 addThisSelectedFEDs_.push_back(-1);
145 else addThisSelectedFEDs_.push_back(-1);
147 std::vector<int>::const_iterator AddFed = addThisSelectedFEDs_.begin();
148 for( ; AddFed !=addThisSelectedFEDs_.end() ; ++AddFed)
149 LogDebug(
"SelectedElectronFEDListProducer")<<
" Additional FED: "<<*(AddFed)<<std::endl;
155 else ESLookupTable_ =
edm::FileInPath(
"EventFilter/ESDigiToRaw/data/ES_lookup_table.dat");
160 else outputLabelModule_ =
"streamElectronRawData" ;
162 LogDebug(
"SelectedElectronFEDListProducer")<<
" Output Label "<<outputLabelModule_<<std::endl;
165 if(iConfig.
existsAs<
double>(
"dRStripRegion"))
166 dRStripRegion_ = iConfig.
getParameter<
double>(
"dRStripRegion");
167 else dRStripRegion_ = 0.5 ;
169 LogDebug(
"SelectedElectronFEDListProducer")<<
" dRStripRegion "<<dRStripRegion_<<std::endl;
172 if(iConfig.
existsAs<
double>(
"dRHcalRegion"))
173 dRHcalRegion_ = iConfig.
getParameter<
double>(
"dRHcalRegion");
174 else dRHcalRegion_ = 0.5 ;
177 if(iConfig.
existsAs<
double>(
"dPhiPixelRegion"))
178 dPhiPixelRegion_ = iConfig.
getParameter<
double>(
"dPhiPixelRegion");
179 else dPhiPixelRegion_ = 0.5 ;
181 if(iConfig.
existsAs<
double>(
"dEtaPixelRegion"))
182 dEtaPixelRegion_ = iConfig.
getParameter<
double>(
"dEtaPixelRegion");
183 else dEtaPixelRegion_ = 0.5 ;
185 if(iConfig.
existsAs<
double>(
"maxZPixelRegion"))
186 maxZPixelRegion_ = iConfig.
getParameter<
double>(
"maxZPixelRegion");
187 else maxZPixelRegion_ = 24. ;
189 LogDebug(
"SelectedElectronFEDListProducer")<<
" dPhiPixelRegion "<<dPhiPixelRegion_<<
" dEtaPixelRegion "<<dEtaPixelRegion_<<
" MaxZPixelRegion "<<maxZPixelRegion_<<std::endl;
192 if( iConfig.
existsAs<
bool>(
"dumpSelectedEcalFed"))
193 dumpSelectedEcalFed_ = iConfig.
getParameter<
bool >(
"dumpSelectedEcalFed");
194 else dumpSelectedEcalFed_ =
true ;
196 if(iConfig.
existsAs<
bool>(
"dumpSelectedSiStripFed"))
197 dumpSelectedSiStripFed_ = iConfig.
getParameter<
bool>(
"dumpSelectedSiStripFed");
198 else dumpSelectedSiStripFed_ =
true ;
200 if(iConfig.
existsAs<
bool>(
"dumpSelectedSiPixelFed"))
201 dumpSelectedSiPixelFed_ = iConfig.
getParameter<
bool>(
"dumpSelectedSiPixelFed");
202 else dumpSelectedSiPixelFed_ =
true ;
204 if(iConfig.
existsAs<
bool>(
"dumpSelectedHCALFed"))
205 dumpSelectedHCALFed_ = iConfig.
getParameter<
bool>(
"dumpSelectedHCALFed");
206 else dumpSelectedHCALFed_ =
true ;
208 LogDebug(
"SelectedElectronFEDListProducer")<<
" DumpEcalFedList set to "<<dumpSelectedEcalFed_<<
" DumpSelectedSiStripFed "<<dumpSelectedSiStripFed_<<
" DumpSelectedSiPixelFed "<<dumpSelectedSiPixelFed_<<std::endl;
210 if(iConfig.
existsAs<
bool>(
"dumpAllEcalFed"))
211 dumpAllEcalFed_ = iConfig.
getParameter<
bool>(
"dumpAllEcalFed");
212 else dumpAllEcalFed_ =
false ;
214 if(iConfig.
existsAs<
bool>(
"dumpAllTrackerFed"))
215 dumpAllTrackerFed_ = iConfig.
getParameter<
bool>(
"dumpAllTrackerFed");
216 else dumpAllTrackerFed_ =
false ;
218 if(iConfig.
existsAs<
bool>(
"dumpAllHCALFed"))
219 dumpAllHCALFed_ = iConfig.
getParameter<
bool>(
"dumpAllHCALFed");
220 else dumpAllHCALFed_ =
false ;
222 LogDebug(
"SelectedElectronFEDListProducer")<<
" DumpAllEcalFed "<<dumpAllEcalFed_<<
" DumpAllTrackerFed "<<dumpAllTrackerFed_<<
" Dump all HCAL fed "<<dumpAllHCALFed_<<std::endl;
225 for (
int i=0;
i<2; ++
i)
for (
int j=0; j<2; ++j)
for (
int k=0 ;
k<40; ++
k)
for (
int m=0;
m<40;
m++) ES_fedId_[
i][j][
k][
m] = -1;
228 int nLines, iz, ip, ix, iy, fed, kchip, pace, bundle, fiber, optorx;
229 std::ifstream ES_file;
230 ES_file.open(ESLookupTable_.fullPath().c_str());
231 LogDebug(
"SelectedElectronFEDListProducer")<<
" Look Up table for ES "<<ESLookupTable_.fullPath().c_str()<<std::endl;
232 if( ES_file.is_open() ) {
234 for (
int i=0;
i<nLines; ++
i) {
235 ES_file >> iz >> ip >> ix >> iy >> fed >> kchip >> pace >> bundle >> fiber >> optorx ;
236 ES_fedId_[(3-iz)/2-1][ip-1][ix-1][iy-1] = fed;
239 else LogDebug(
"SelectedElectronFEDListProducer")<<
" Look up table file can not be found in "<<ESLookupTable_.fullPath().c_str() <<std::endl;
243 produces<FEDRawDataCollection>(outputLabelModule_);
247 template<
typename TEle,
typename TCand>
250 if(!electronTags_.empty()) electronTags_.clear() ;
251 if(!recoEcalCandidateTags_.empty()) recoEcalCandidateTags_.clear() ;
252 if(!recoEcalCandidateToken_.empty()) recoEcalCandidateToken_.clear();
253 if(!electronToken_.empty()) electronToken_.clear();
254 if(!fedList_.empty()) fedList_.clear() ;
255 if(!pixelModuleVector_.empty()) pixelModuleVector_.clear();
258 template<
typename TEle,
typename TCand>
260 LogDebug(
"SelectedElectronFEDListProducer")<<
" Begin of the Job "<<std::endl;
264 template<
typename TEle,
typename TCand>
275 EcalMapping_ = ecalmapping.
product();
280 GeometryCalo_ = caloGeometry.
product();
288 PixelCabling_.reset();
294 if(pixelModuleVector_.empty()){
297 std::vector<const GeomDet*>::const_iterator itTracker = trackerGeometry->
dets().begin();
298 for( ; itTracker !=trackerGeometry->
dets().end() ; ++itTracker){
299 int subdet = (*itTracker)->geographicalId().subdetId();
302 module.
x = (*itTracker)->position().x();
303 module.
y = (*itTracker)->position().y();
304 module.
z = (*itTracker)->position().z();
305 module.
Phi = (*itTracker)->position().phi();
306 module.
Eta = (*itTracker)->position().eta();
307 module.
DetId = (*itTracker)->geographicalId().rawId();
308 const std::vector<sipixelobjects::CablingPathToDetUnit> path2det = PixelCabling_->pathToDetUnit(module.
DetId);
309 module.
Fed = path2det[0].fed;
311 pixelModuleVector_.push_back(module);
313 std::sort(pixelModuleVector_.begin(),pixelModuleVector_.end());
318 StripRegionCabling_ = SiStripCablingHandle.product();
321 SiStripCabling = StripRegionCabling_->getRegionCabling();
322 regionDimension_ = StripRegionCabling_->regionDimensions();
333 else beamSpotPosition_.SetXYZ(0,0,0);
339 if(!hbheRecHitHandle.
failedToGet()) hcalRecHitCollection = hbheRecHitHandle.
product();
341 double radTodeg = 180. /
Geom::pi();
345 fedList_.push_back(iEcalFed);
347 fedList_.push_back(iESFed);
350 if(dumpAllTrackerFed_){
352 fedList_.push_back(iPixelFed);
354 fedList_.push_back(iStripFed);
359 fedList_.push_back(iHcalFed);
367 std::vector<edm::Ref<TCandColl>> recoEcalCandColl;
370 typename std::vector<edm::EDGetTokenT<TEleColl> >::const_iterator itElectronColl = electronToken_.begin();
371 std::vector<int>::const_iterator itElectronCollFlag = isGsfElectronCollection_.begin();
372 std::vector<edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> >::const_iterator itRecoEcalCandColl = recoEcalCandidateToken_.begin();
375 if( !dumpAllTrackerFed_ || !dumpAllEcalFed_ ){
378 for( ; itRecoEcalCandColl != recoEcalCandidateToken_.end() and itElectronColl != electronToken_.end() and itElectronCollFlag != isGsfElectronCollection_.end();
379 ++itElectronColl , ++itElectronCollFlag, ++itRecoEcalCandColl){
382 iEvent.
getByToken(*itRecoEcalCandColl,triggerRecoEcalCandidateCollection);
383 if(triggerRecoEcalCandidateCollection.
failedToGet())
continue ;
393 typename std::vector<edm::Ref<TCandColl>>::const_iterator itRecoEcalCand = recoEcalCandColl.begin();
396 for( ; itRecoEcalCand != recoEcalCandColl.end() ; ++itRecoEcalCand){
397 recoEcalCand = (*itRecoEcalCand);
400 typename TEleColl::const_iterator itEle = electrons->begin();
401 for( ; itEle!=electrons->end() ; ++itEle){
405 if ( scRefRecoEcalCand != scRef ) continue ;
407 const std::vector<std::pair<DetId,float> >&
hits = scRef->hitsAndFractions();
409 std::vector<std::pair<DetId,float> >::const_iterator itSChits = hits.begin();
410 if(!dumpAllEcalFed_){
411 for( ; itSChits!=hits.end() ; ++itSChits){
412 if((*itSChits).first.subdetId()==
EcalBarrel){
413 EBDetId idEBRaw ((*itSChits).first);
418 LogDebug(
"SelectedElectronFEDListProducer")<<
" electron hit detID Barrel "<<(*itSChits).first.rawId()<<
" eta "<<double(point.
eta())<<
" phi "<<
double(point.
phi())*radTodeg <<
" FED "<<hitFED<<std::endl;
420 if(dumpSelectedEcalFed_){
421 if(!fedList_.empty()){
422 if(
std::find(fedList_.begin(),fedList_.end(),hitFED) == fedList_.end())
423 fedList_.push_back(hitFED);
425 else fedList_.push_back(hitFED);
428 else if((*itSChits).first.subdetId()==
EcalEndcap){
429 EEDetId idEERaw ((*itSChits).first);
434 LogDebug(
"SelectedElectronFEDListProducer")<<
" electron hit detID Endcap "<<(*itSChits).first.rawId()<<
" eta "<<double(point.
eta())<<
" phi "<<
double(point.
phi())*radTodeg <<
" FED "<<hitFED<<std::endl;
435 if(dumpSelectedEcalFed_){
436 if(!fedList_.empty()){
437 if(
std::find(fedList_.begin(),fedList_.end(),hitFED) == fedList_.end())
438 fedList_.push_back(hitFED);
440 else fedList_.push_back(hitFED);
445 int hitFED = ES_fedId_[(3-stripX.
zside())/2-1][stripX.
plane()-1][stripX.
six()-1][stripX.
siy()-1];
446 LogDebug(
"SelectedElectronFEDListProducer")<<
" ES hit plane X (deiID) "<<stripX.
rawId()<<
" six "<<stripX.
six()<<
" siy "<<stripX.
siy()<<
" plane "<<stripX.
plane()<<
" FED ID "<<hitFED<<std::endl;
448 if(hitFED < 0)
continue;
449 if(!fedList_.empty()){
450 if(
std::find(fedList_.begin(),fedList_.end(),hitFED) == fedList_.end())
451 fedList_.push_back(hitFED);
453 else fedList_.push_back(hitFED);
457 hitFED = ES_fedId_[(3-stripY.
zside())/2-1][stripY.
plane()-1][stripY.
six()-1][stripY.
siy()-1];
458 if(hitFED < FEDNumbering::MINPreShowerFEDID || hitFED > FEDNumbering::MAXPreShowerFEDID)
continue;
459 LogDebug(
"SelectedElectronFEDListProducer")<<
" ES hit plane Y (deiID) "<<stripY.
rawId()<<
" six "<<stripY.
six()<<
" siy "<<stripY.
siy()<<
" plane "<<stripY.
plane()<<
" FED ID "<<hitFED<<std::endl;
460 if(hitFED < 0)
continue;
461 if(!fedList_.empty()){
462 if(
std::find(fedList_.begin(),fedList_.end(),hitFED) == fedList_.end())
463 fedList_.push_back(hitFED);
465 else fedList_.push_back(hitFED);
471 if(dumpSelectedHCALFed_) {
473 for( ; itHcalRecHit != hcalRecHitCollection->
end() ; ++itHcalRecHit) {
475 const HcalGeometry* cellGeometry =
static_cast<const HcalGeometry*
>(GeometryCalo_->getSubdetectorGeometry(recHitId));
476 float dR =
reco::deltaR(scRef->eta(),scRef->phi(),cellGeometry->getPosition(recHitId).eta(),cellGeometry->getPosition(recHitId).phi());
477 if(dR <= dRHcalRegion_) {
480 LogDebug(
"SelectedElectronFEDListProducer")<<
" matched hcal recHit : HcalDetId "<<recHitId<<
" HcalElectronicsId "<<electronicId<<
" dcc id "<<electronicId.
dccid()<<
" spigot "<<electronicId.
spigot()<<
" fiber channel "<<electronicId.
fiberChanId()<<
" fiber index "<<electronicId.
fiberIndex()<<std::endl;
485 if(!fedList_.empty()) {
486 if(
std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
487 fedList_.push_back(hitFED);
490 fedList_.push_back(hitFED);
497 if( !dumpAllTrackerFed_ ){
499 if(dumpSelectedSiStripFed_){
502 if(*itElectronCollFlag){
503 eta = electron.gsfTrack()->eta();
504 phi = electron.gsfTrack()->phi();
507 eta = electron.track()->eta();
508 phi = electron.track()->phi();
510 for(uint32_t iCabling = 0; iCabling < SiStripCabling.size(); iCabling++){
512 double dphi=fabs(pos.second-phi);
513 if (dphi>acos(-1)) dphi=2*acos(-1)-dphi;
514 double R =
sqrt(
pow(pos.first-eta,2)+dphi*dphi);
515 if (R-
sqrt(
pow(regionDimension_.first/2,2)+
pow(regionDimension_.second/2,2))>dRStripRegion_)
continue;
525 SiStripRegionCabling::ElementCabling::const_iterator itFedMap = fedVectorMap.begin();
526 for( ; itFedMap!=fedVectorMap.end(); itFedMap++){
527 for (uint32_t op=0; op<(itFedMap->second).
size(); op++){
528 int hitFED = (itFedMap->second)[op].
fedId();
530 LogDebug(
"SelectedElectronFEDListProducer")<<
" SiStrip (FedID) "<<hitFED<<std::endl;
531 if(!fedList_.empty()){
532 if(
std::find(fedList_.begin(),fedList_.end(),hitFED)==fedList_.end()) fedList_.push_back(hitFED);
534 else fedList_.push_back(hitFED);
541 if(dumpSelectedSiPixelFed_){
543 if(*itElectronCollFlag) momentum = electron.gsfTrack()->momentum();
544 else momentum = electron.track()->momentum();
545 PixelRegion region (momentum,dPhiPixelRegion_,dEtaPixelRegion_,maxZPixelRegion_);
549 std::vector<PixelModule>::const_iterator itUp, itDn ;
550 if(lowerBound.Phi >= -
M_PI && upperBound.Phi <=
M_PI ){
551 itDn = std::lower_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),lowerBound);
552 itUp = std::upper_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),upperBound);
553 pixelFedDump(itDn,itUp,region);
556 if(lowerBound.Phi < -
M_PI) lowerBound.Phi = lowerBound.Phi+2*
M_PI;
558 itDn = std::lower_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),lowerBound);
559 itUp = std::upper_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),phi_p);
560 pixelFedDump(itDn,itUp,region);
562 if(upperBound.Phi < -
M_PI) upperBound.Phi = upperBound.Phi-2*
M_PI;
564 itDn = std::lower_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),phi_m);
565 itUp = std::upper_bound(pixelModuleVector_.begin(),pixelModuleVector_.end(),upperBound);
566 pixelFedDump(itDn,itUp,region);
575 for(
unsigned int iFed = 0 ; iFed < addThisSelectedFEDs_.size() ; iFed++){
576 if(addThisSelectedFEDs_.at(iFed) == -1 )
continue ;
577 fedList_.push_back(addThisSelectedFEDs_.at(iFed));
581 auto streamFEDRawProduct = std::make_unique<FEDRawDataCollection>();
582 std::sort(fedList_.begin(),fedList_.end());
583 std::vector<uint32_t>::const_iterator itfedList = fedList_.begin();
584 for( ; itfedList!=fedList_.end() ; ++itfedList){
585 LogDebug(
"SelectedElectronFEDListProducer")<<
" fed point "<<*itfedList<<
" ";
588 FEDRawData& fedData = streamFEDRawProduct->FEDData(*itfedList);
594 iEvent.
put(
std::move(streamFEDRawProduct),outputLabelModule_);
596 if(!fedList_.empty()) fedList_.clear();
601 template<
typename TEle,
typename TCand>
603 LogDebug(
"SelectedElectronFEDListProducer")<<
" End of the Job "<<std::endl;
606 template<
typename TEle,
typename TCand>
608 std::vector<PixelModule>::const_iterator & itUp,
611 for( ; itDn != itUp ; ++itDn){
612 float zmodule = itDn->z-((itDn->x-beamSpotPosition_.x())*region.
cosphi+(itDn->y-beamSpotPosition_.y())*region.
sinphi)*region.
atantheta;
614 int hitFED = itDn->Fed;
616 LogDebug(
"SelectedElectronFEDListProducer")<<
" electron pixel hit "<<itDn->DetId<<
" hitFED "<<hitFED<<std::endl;
617 if(!fedList_.empty()){
618 if(
std::find(fedList_.begin(),fedList_.end(),hitFED)==fedList_.end()) fedList_.push_back(hitFED);
620 else fedList_.push_back(hitFED);
626 template<
typename TEle,
typename TCand>
629 desc.
add<vector<edm::InputTag>>(
"electronTags",{
edm::InputTag(
"hltEgammaGsfElectrons")});
630 desc.
add<vector<edm::InputTag>>(
"recoEcalCandidateTags",{
edm::InputTag(
"hltL1EG25Ele27WP85GsfTrackIsoFilter")});
635 desc.
add<vector<int>>(
"addThisSelectedFEDs",{812,813});
636 desc.
add<vector<int>>(
"isGsfElectronCollection",{
true});
637 desc.
add<
std::string>(
"outputLabelModule",
"StreamElectronRawFed");
638 desc.
add<
bool>(
"dumpSelectedSiPixelFed",
true);
639 desc.
add<
bool>(
"dumpSelectedSiStripFed",
true);
640 desc.
add<
bool>(
"dumpSelectedEcalFed",
true);
641 desc.
add<
bool>(
"dumpSelectedHCALFed",
true);
642 desc.
add<
double>(
"dPhiPixelRegion",0.3);
643 desc.
add<
double>(
"dEtaPixelRegion",0.3);
644 desc.
add<
double>(
"dRStripRegion",0.3);
645 desc.
add<
double>(
"dRHcalRegion",0.3);
646 desc.
add<
double>(
"maxZPixelRegion",24);
647 desc.
add<
bool>(
"dumpAllTrackerFed",
false);
648 desc.
add<
bool>(
"dumpAllEcalFed",
false);
649 desc.
add<
bool>(
"dumpAllHcalFed",
false);
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
SelectedElectronFEDListProducer(const edm::ParameterSet &)
Producer constructor.
Geom::Phi< T > phi() const
constexpr uint32_t rawId() const
get the raw id
std::vector< HBHERecHit >::const_iterator const_iterator
std::vector< Element > ElementCabling
std::string defaultModuleLabel()
constexpr int dccid() const
get the (Hcal local) DCC id for VME, crate number for uTCA
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
size_t size() const
Lenght of the data buffer in bytes.
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
void resize(size_t newsize)
~SelectedElectronFEDListProducer() override
std::vector< ElementCabling > WedgeCabling
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::pair< double, double > Position
Abs< T >::type abs(const T &t)
SelectedElectronFEDListProducer< reco::Electron, reco::RecoEcalCandidate > SelectedElectronFEDListProducerGsf
constexpr int spigot() const
get the spigot (input number on DCC, AMC card number for uTCA)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const_iterator end() const
constexpr int fiberIndex() const
get the fiber index. For VME 1-8 (which of eight fibers carried by a spigot), for uTCA fibers are zer...
std::unique_ptr< SiPixelFedCablingTree > cablingTree() const
T const * product() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void produce(edm::Event &, const edm::EventSetup &) override
char data[epos_bytes_allocation]
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
const HcalElectronicsMap * getHcalMapping() const
const Point & position() const
position
constexpr int fiberChanId() const
get the fiber channel id (which of channels on a fiber)
T const * product() const
std::vector< WedgeCabling > RegionCabling
Readout chain identification for Hcal.
void pixelFedDump(std::vector< PixelModule >::const_iterator &itDn, std::vector< PixelModule >::const_iterator &itUp, const PixelRegion ®ion)
Power< A, B >::type pow(const A &a, const B &b)
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
const_iterator begin() const
std::vector< RegionCabling > Cabling