CMS 3D CMS Logo

SelectedElectronFEDListProducer.cc
Go to the documentation of this file.
2 
3 #include <fstream>
5 
7 
8 //#include "DataFormats/Common/interface/Handle.h"
9 
12 // raw data
14 //#include "DataFormats/FEDRawData/interface/FEDNumbering.h"
15 
16 // Geometry
20 // strip geometry
23 
24 // egamma objects
31 
32 // Hcal objects
34 
35 // Strip and pixel
38 
39 // detector id
42 // Hcal rec hit
45 // Geometry
52 // strip geometry
55 // Message logger
57 // Strip and pixel
61 
62 // Hcal objects
65 
66 using namespace std;
67 
69 template <typename TEle, typename TCand>
71  // input electron collection Tag
72  if (iConfig.existsAs<std::vector<edm::InputTag>>("electronTags")) {
73  electronTags_ = iConfig.getParameter<std::vector<edm::InputTag>>("electronTags");
74  if (electronTags_.empty())
75  throw cms::Exception("Configuration")
76  << "[SelectedElectronFEDListProducer] empty electron collection is given --> at least one \n";
77  } else
78  throw cms::Exception("Configuration")
79  << "[SelectedElectronFEDListProducer] no electron collection are given --> need at least one \n";
80 
81  // Consumes for the electron collection
82  LogDebug("SelectedElectronFEDListProducer") << " Electron Collections" << std::endl;
83  for (std::vector<edm::InputTag>::const_iterator itEleTag = electronTags_.begin(); itEleTag != electronTags_.end();
84  ++itEleTag) {
85  electronToken_.push_back(consumes<TEleColl>(*itEleTag));
86  LogDebug("SelectedElectronFEDListProducer") << " Ele collection: " << *(itEleTag) << std::endl;
87  }
88 
89  // input RecoEcalCandidate collection Tag
90  if (iConfig.existsAs<std::vector<edm::InputTag>>("recoEcalCandidateTags")) {
91  recoEcalCandidateTags_ = iConfig.getParameter<std::vector<edm::InputTag>>("recoEcalCandidateTags");
92  if (recoEcalCandidateTags_.empty())
93  throw cms::Exception("Configuration") << "[SelectedElectronFEDListProducer] empty ecal candidate collections "
94  "collection is given --> at least one \n";
95  } else
96  throw cms::Exception("Configuration") << "[SelectedElectronFEDListProducer] no electron reco ecal candidate "
97  "collection are given --> need at least one \n";
98 
99  // Consumes for the recoEcal candidate collection
100  for (std::vector<edm::InputTag>::const_iterator itEcalCandTag = recoEcalCandidateTags_.begin();
101  itEcalCandTag != recoEcalCandidateTags_.end();
102  ++itEcalCandTag) {
103  recoEcalCandidateToken_.push_back(consumes<trigger::TriggerFilterObjectWithRefs>(*itEcalCandTag));
104  LogDebug("SelectedElectronFEDListProducer") << " Reco ecal candidate collection: " << *(itEcalCandTag) << std::endl;
105  }
106 
107  // list of gsf collections
108  if (iConfig.existsAs<std::vector<int>>("isGsfElectronCollection")) {
109  isGsfElectronCollection_ = iConfig.getParameter<std::vector<int>>("isGsfElectronCollection");
110  if (isGsfElectronCollection_.empty())
111  throw cms::Exception("Configuration")
112  << "[SelectedElectronFEDListProducer] empty electron flag collection --> at least one \n";
113  } else
114  throw cms::Exception("Configuration")
115  << "[SelectedElectronFEDListProducer] no electron flag are given --> need at least one \n";
116 
117  if (isGsfElectronCollection_.size() != electronTags_.size() or
118  isGsfElectronCollection_.size() != recoEcalCandidateTags_.size())
119  throw cms::Exception("Configuration") << "[SelectedElectronFEDListProducer] electron flag , electron collection "
120  "and reco ecal cand collection must have the same size ! \n";
121 
122  // take the beam spot Tag
123  if (iConfig.existsAs<edm::InputTag>("beamSpot"))
124  beamSpotTag_ = iConfig.getParameter<edm::InputTag>("beamSpot");
125  else
126  beamSpotTag_ = edm::InputTag("hltOnlineBeamSpot");
127 
128  if (!(beamSpotTag_ == edm::InputTag("")))
129  beamSpotToken_ = consumes<reco::BeamSpot>(beamSpotTag_);
130 
131  LogDebug("SelectedElectronFEDListProducer") << " Beam Spot Tag " << beamSpotTag_ << std::endl;
132 
133  // take the HBHE recHit Tag
134  if (iConfig.existsAs<edm::InputTag>("HBHERecHitTag"))
135  HBHERecHitTag_ = iConfig.getParameter<edm::InputTag>("HBHERecHitTag");
136  else
137  HBHERecHitTag_ = edm::InputTag("hltHbhereco");
138 
139  if (!(HBHERecHitTag_ == edm::InputTag("")))
140  hbheRecHitToken_ = consumes<HBHERecHitCollection>(HBHERecHitTag_);
141 
142  // raw data collector label
143  if (iConfig.existsAs<edm::InputTag>("rawDataTag"))
144  rawDataTag_ = iConfig.getParameter<edm::InputTag>("rawDataTag");
145  else
146  rawDataTag_ = edm::InputTag("rawDataCollector");
147 
148  if (!(rawDataTag_ == edm::InputTag("")))
149  rawDataToken_ = consumes<FEDRawDataCollection>(rawDataTag_);
150 
151  LogDebug("SelectedElectronFEDListProducer") << " RawDataInput " << rawDataTag_ << std::endl;
152 
153  // add a set of selected feds
154  if (iConfig.existsAs<std::vector<int>>("addThisSelectedFEDs")) {
155  addThisSelectedFEDs_ = iConfig.getParameter<std::vector<int>>("addThisSelectedFEDs");
156  if (addThisSelectedFEDs_.empty())
157  addThisSelectedFEDs_.push_back(-1);
158  } else
159  addThisSelectedFEDs_.push_back(-1);
160 
161  std::vector<int>::const_iterator AddFed = addThisSelectedFEDs_.begin();
162  for (; AddFed != addThisSelectedFEDs_.end(); ++AddFed)
163  LogDebug("SelectedElectronFEDListProducer") << " Additional FED: " << *(AddFed) << std::endl;
164 
165  // ES look up table path
166  if (iConfig.existsAs<std::string>("ESLookupTable"))
167  ESLookupTable_ = iConfig.getParameter<edm::FileInPath>("ESLookupTable");
168  else
169  ESLookupTable_ = edm::FileInPath("EventFilter/ESDigiToRaw/data/ES_lookup_table.dat");
170 
171  // output model label
172  if (iConfig.existsAs<std::string>("outputLabelModule"))
173  outputLabelModule_ = iConfig.getParameter<std::string>("outputLabelModule");
174  else
175  outputLabelModule_ = "streamElectronRawData";
176 
177  LogDebug("SelectedElectronFEDListProducer") << " Output Label " << outputLabelModule_ << std::endl;
178 
179  // dR for the strip region
180  if (iConfig.existsAs<double>("dRStripRegion"))
181  dRStripRegion_ = iConfig.getParameter<double>("dRStripRegion");
182  else
183  dRStripRegion_ = 0.5;
184 
185  LogDebug("SelectedElectronFEDListProducer") << " dRStripRegion " << dRStripRegion_ << std::endl;
186 
187  // dR for the hcal region
188  if (iConfig.existsAs<double>("dRHcalRegion"))
189  dRHcalRegion_ = iConfig.getParameter<double>("dRHcalRegion");
190  else
191  dRHcalRegion_ = 0.5;
192 
193  // dPhi, dEta and maxZ for pixel dump
194  if (iConfig.existsAs<double>("dPhiPixelRegion"))
195  dPhiPixelRegion_ = iConfig.getParameter<double>("dPhiPixelRegion");
196  else
197  dPhiPixelRegion_ = 0.5;
198 
199  if (iConfig.existsAs<double>("dEtaPixelRegion"))
200  dEtaPixelRegion_ = iConfig.getParameter<double>("dEtaPixelRegion");
201  else
202  dEtaPixelRegion_ = 0.5;
203 
204  if (iConfig.existsAs<double>("maxZPixelRegion"))
205  maxZPixelRegion_ = iConfig.getParameter<double>("maxZPixelRegion");
206  else
207  maxZPixelRegion_ = 24.;
208 
209  LogDebug("SelectedElectronFEDListProducer")
210  << " dPhiPixelRegion " << dPhiPixelRegion_ << " dEtaPixelRegion " << dEtaPixelRegion_ << " MaxZPixelRegion "
211  << maxZPixelRegion_ << std::endl;
212 
213  // bool
214  if (iConfig.existsAs<bool>("dumpSelectedEcalFed"))
215  dumpSelectedEcalFed_ = iConfig.getParameter<bool>("dumpSelectedEcalFed");
216  else
217  dumpSelectedEcalFed_ = true;
218 
219  if (iConfig.existsAs<bool>("dumpSelectedSiStripFed"))
220  dumpSelectedSiStripFed_ = iConfig.getParameter<bool>("dumpSelectedSiStripFed");
221  else
222  dumpSelectedSiStripFed_ = true;
223 
224  if (iConfig.existsAs<bool>("dumpSelectedSiPixelFed"))
225  dumpSelectedSiPixelFed_ = iConfig.getParameter<bool>("dumpSelectedSiPixelFed");
226  else
227  dumpSelectedSiPixelFed_ = true;
228 
229  if (iConfig.existsAs<bool>("dumpSelectedHCALFed"))
230  dumpSelectedHCALFed_ = iConfig.getParameter<bool>("dumpSelectedHCALFed");
231  else
232  dumpSelectedHCALFed_ = true;
233 
234  LogDebug("SelectedElectronFEDListProducer")
235  << " DumpEcalFedList set to " << dumpSelectedEcalFed_ << " DumpSelectedSiStripFed " << dumpSelectedSiStripFed_
236  << " DumpSelectedSiPixelFed " << dumpSelectedSiPixelFed_ << std::endl;
237 
238  if (iConfig.existsAs<bool>("dumpAllEcalFed"))
239  dumpAllEcalFed_ = iConfig.getParameter<bool>("dumpAllEcalFed");
240  else
241  dumpAllEcalFed_ = false;
242 
243  if (iConfig.existsAs<bool>("dumpAllTrackerFed"))
244  dumpAllTrackerFed_ = iConfig.getParameter<bool>("dumpAllTrackerFed");
245  else
246  dumpAllTrackerFed_ = false;
247 
248  if (iConfig.existsAs<bool>("dumpAllHCALFed"))
249  dumpAllHCALFed_ = iConfig.getParameter<bool>("dumpAllHCALFed");
250  else
251  dumpAllHCALFed_ = false;
252 
253  LogDebug("SelectedElectronFEDListProducer")
254  << " DumpAllEcalFed " << dumpAllEcalFed_ << " DumpAllTrackerFed " << dumpAllTrackerFed_ << " Dump all HCAL fed "
255  << dumpAllHCALFed_ << std::endl;
256 
257  // initialize pre-shower fed id --> look up table
258  for (int i = 0; i < 2; ++i)
259  for (int j = 0; j < 2; ++j)
260  for (int k = 0; k < 40; ++k)
261  for (int m = 0; m < 40; m++)
262  ES_fedId_[i][j][k][m] = -1;
263 
264  // read in look-up table
265  int nLines, iz, ip, ix, iy, fed, kchip, pace, bundle, fiber, optorx;
266  std::ifstream ES_file;
267  ES_file.open(ESLookupTable_.fullPath().c_str());
268  LogDebug("SelectedElectronFEDListProducer")
269  << " Look Up table for ES " << ESLookupTable_.fullPath().c_str() << std::endl;
270  if (ES_file.is_open()) {
271  ES_file >> nLines;
272  for (int i = 0; i < nLines; ++i) {
273  ES_file >> iz >> ip >> ix >> iy >> fed >> kchip >> pace >> bundle >> fiber >> optorx;
274  ES_fedId_[(3 - iz) / 2 - 1][ip - 1][ix - 1][iy - 1] = fed;
275  }
276  } else
277  LogDebug("SelectedElectronFEDListProducer")
278  << " Look up table file can not be found in " << ESLookupTable_.fullPath().c_str() << std::endl;
279  ES_file.close();
280 
281  // produce the final collection
282  produces<FEDRawDataCollection>(outputLabelModule_); // produce exit collection
283 }
284 
285 template <typename TEle, typename TCand>
287  if (!electronTags_.empty())
288  electronTags_.clear();
289  if (!recoEcalCandidateTags_.empty())
290  recoEcalCandidateTags_.clear();
291  if (!recoEcalCandidateToken_.empty())
292  recoEcalCandidateToken_.clear();
293  if (!electronToken_.empty())
294  electronToken_.clear();
295  if (!fedList_.empty())
296  fedList_.clear();
297  if (!pixelModuleVector_.empty())
298  pixelModuleVector_.clear();
299 }
300 
301 template <typename TEle, typename TCand>
303  LogDebug("SelectedElectronFEDListProducer") << " Begin of the Job " << std::endl;
304 }
305 
306 template <typename TEle, typename TCand>
308  // get the hcal electronics map
310  iSetup.get<HcalDbRecord>().get(pSetup);
311  HcalReadoutMap_ = pSetup->getHcalMapping();
312 
313  // get the ecal electronics map
315  iSetup.get<EcalMappingRcd>().get(ecalmapping);
316  EcalMapping_ = ecalmapping.product();
317 
318  // get the calo geometry
319  edm::ESHandle<CaloGeometry> caloGeometry;
320  iSetup.get<CaloGeometryRecord>().get(caloGeometry);
321  GeometryCalo_ = caloGeometry.product();
322 
323  //ES geometry
324  GeometryES_ = caloGeometry->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
325 
326  // pixel tracker cabling map
328  iSetup.get<SiPixelFedCablingMapRcd>().get(pixelCablingMap);
329  PixelCabling_.reset();
330  PixelCabling_ = pixelCablingMap->cablingTree();
331 
332  edm::ESHandle<TrackerGeometry> trackerGeometry;
333  iSetup.get<TrackerDigiGeometryRecord>().get(trackerGeometry);
334 
335  if (pixelModuleVector_.empty()) {
336  // build the tracker pixel module map
337  std::vector<const GeomDet*>::const_iterator itTracker = trackerGeometry->dets().begin();
338  for (; itTracker != trackerGeometry->dets().end(); ++itTracker) {
339  int subdet = (*itTracker)->geographicalId().subdetId();
340  if (!(subdet == PixelSubdetector::PixelBarrel || subdet == PixelSubdetector::PixelEndcap))
341  continue;
342  PixelModule module;
343  module.x = (*itTracker)->position().x();
344  module.y = (*itTracker)->position().y();
345  module.z = (*itTracker)->position().z();
346  module.Phi = (*itTracker)->position().phi();
347  module.Eta = (*itTracker)->position().eta();
348  module.DetId = (*itTracker)->geographicalId().rawId();
349  const std::vector<sipixelobjects::CablingPathToDetUnit> path2det = PixelCabling_->pathToDetUnit(module.DetId);
350  module.Fed = path2det[0].fed;
351 
352  pixelModuleVector_.push_back(module);
353  }
354  std::sort(pixelModuleVector_.begin(), pixelModuleVector_.end());
355  }
356 
357  edm::ESHandle<SiStripRegionCabling> SiStripCablingHandle;
358  iSetup.get<SiStripRegionCablingRcd>().get(SiStripCablingHandle);
359  StripRegionCabling_ = SiStripCablingHandle.product();
360 
361  SiStripRegionCabling::Cabling SiStripCabling;
362  SiStripCabling = StripRegionCabling_->getRegionCabling();
363  regionDimension_ = StripRegionCabling_->regionDimensions();
364 
365  // event by event analysis
366  // Get event raw data
368  if (!(rawDataTag_ == edm::InputTag("")))
369  iEvent.getByToken(rawDataToken_, rawdata);
370 
371  // take the beam spot position
373  if (!(beamSpotTag_ == edm::InputTag("")))
374  iEvent.getByToken(beamSpotToken_, beamSpot);
375  if (!beamSpot.failedToGet())
376  beamSpotPosition_ = beamSpot->position();
377  else
378  beamSpotPosition_.SetXYZ(0, 0, 0);
379 
380  // take the calo tower collection
381  edm::Handle<HBHERecHitCollection> hbheRecHitHandle;
382  if (!(HBHERecHitTag_ == edm::InputTag("")))
383  iEvent.getByToken(hbheRecHitToken_, hbheRecHitHandle);
384  const HBHERecHitCollection* hcalRecHitCollection = nullptr;
385  if (!hbheRecHitHandle.failedToGet())
386  hcalRecHitCollection = hbheRecHitHandle.product();
387 
388  double radTodeg = 180. / Geom::pi();
389 
390  if (dumpAllEcalFed_) {
391  for (uint32_t iEcalFed = FEDNumbering::MINECALFEDID; iEcalFed <= FEDNumbering::MAXECALFEDID; iEcalFed++)
392  fedList_.push_back(iEcalFed);
393  for (uint32_t iESFed = FEDNumbering::MINPreShowerFEDID; iESFed <= FEDNumbering::MAXPreShowerFEDID; iESFed++)
394  fedList_.push_back(iESFed);
395  }
396 
397  if (dumpAllTrackerFed_) {
398  for (uint32_t iPixelFed = FEDNumbering::MINSiPixelFEDID; iPixelFed <= FEDNumbering::MAXSiPixelFEDID; iPixelFed++)
399  fedList_.push_back(iPixelFed);
400  for (uint32_t iStripFed = FEDNumbering::MINSiStripFEDID; iStripFed <= FEDNumbering::MAXSiStripFEDID; iStripFed++)
401  fedList_.push_back(iStripFed);
402  }
403 
404  if (dumpAllHCALFed_) {
405  for (uint32_t iHcalFed = FEDNumbering::MINHCALFEDID; iHcalFed <= FEDNumbering::MAXHCALFEDID; iHcalFed++)
406  fedList_.push_back(iHcalFed);
407  }
408 
409  // loop on the input electron collection vector
410  TEle electron;
411  edm::Ref<TCandColl> recoEcalCand;
413  edm::Handle<trigger::TriggerFilterObjectWithRefs> triggerRecoEcalCandidateCollection;
414  std::vector<edm::Ref<TCandColl>> recoEcalCandColl;
415 
416  // iterator to electron and ecal candidate collections
417  typename std::vector<edm::EDGetTokenT<TEleColl>>::const_iterator itElectronColl = electronToken_.begin();
418  std::vector<int>::const_iterator itElectronCollFlag = isGsfElectronCollection_.begin();
419  std::vector<edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>>::const_iterator itRecoEcalCandColl =
420  recoEcalCandidateToken_.begin();
421 
422  // if you want to dump just FED related to the triggering electron/s
423  if (!dumpAllTrackerFed_ || !dumpAllEcalFed_) {
424  // loop on the same time on ecal candidate and elctron collection and boolean for Gsf ones
425  for (; itRecoEcalCandColl != recoEcalCandidateToken_.end() and itElectronColl != electronToken_.end() and
426  itElectronCollFlag != isGsfElectronCollection_.end();
427  ++itElectronColl, ++itElectronCollFlag, ++itRecoEcalCandColl) {
428  // get ecal candidate collection
429  iEvent.getByToken(*itRecoEcalCandColl, triggerRecoEcalCandidateCollection);
430  if (triggerRecoEcalCandidateCollection.failedToGet())
431  continue;
432 
433  // get gsf electron collection
434  iEvent.getByToken(*itElectronColl, electrons);
435  if (electrons.failedToGet())
436  continue;
437 
438  triggerRecoEcalCandidateCollection->getObjects(trigger::TriggerCluster, recoEcalCandColl);
439  if (recoEcalCandColl.empty())
440  triggerRecoEcalCandidateCollection->getObjects(trigger::TriggerPhoton, recoEcalCandColl);
441  if (recoEcalCandColl.empty())
442  triggerRecoEcalCandidateCollection->getObjects(trigger::TriggerElectron, recoEcalCandColl);
443 
444  typename std::vector<edm::Ref<TCandColl>>::const_iterator itRecoEcalCand =
445  recoEcalCandColl.begin(); // loop on recoEcalCandidate objects
446 
447  // loop on the recoEcalCandidates
448  for (; itRecoEcalCand != recoEcalCandColl.end(); ++itRecoEcalCand) {
449  recoEcalCand = (*itRecoEcalCand);
450  reco::SuperClusterRef scRefRecoEcalCand =
451  recoEcalCand->superCluster(); // take the supercluster in order to match with electron objects
452 
453  typename TEleColl::const_iterator itEle = electrons->begin();
454  for (; itEle != electrons->end(); ++itEle) { // loop on all the electrons inside a collection
455  // get electron supercluster and the associated hit -> detID
456  electron = (*itEle);
457  reco::SuperClusterRef scRef = electron.superCluster();
458  if (scRefRecoEcalCand != scRef)
459  continue; // mathching
460 
461  const std::vector<std::pair<DetId, float>>& hits = scRef->hitsAndFractions();
462  // start in dump the ecal FED associated to the electron
463  std::vector<std::pair<DetId, float>>::const_iterator itSChits = hits.begin();
464  if (!dumpAllEcalFed_) {
465  for (; itSChits != hits.end(); ++itSChits) {
466  if ((*itSChits).first.subdetId() == EcalBarrel) { // barrel part
467  EBDetId idEBRaw((*itSChits).first);
468  GlobalPoint point = GeometryCalo_->getPosition(idEBRaw);
469  int hitFED = FEDNumbering::MINECALFEDID +
470  EcalMapping_->GetFED(double(point.eta()), double(point.phi()) * radTodeg);
471  if (hitFED < FEDNumbering::MINECALFEDID || hitFED > FEDNumbering::MAXECALFEDID)
472  continue;
473 
474  LogDebug("SelectedElectronFEDListProducer")
475  << " electron hit detID Barrel " << (*itSChits).first.rawId() << " eta " << double(point.eta())
476  << " phi " << double(point.phi()) * radTodeg << " FED " << hitFED << std::endl;
477 
478  if (dumpSelectedEcalFed_) {
479  if (!fedList_.empty()) {
480  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
481  fedList_.push_back(hitFED); // in order not to duplicate info
482  } else
483  fedList_.push_back(hitFED);
484  }
485  } else if ((*itSChits).first.subdetId() == EcalEndcap) { // endcap one
486  EEDetId idEERaw((*itSChits).first);
487  GlobalPoint point = GeometryCalo_->getPosition(idEERaw);
488  int hitFED = FEDNumbering::MINECALFEDID +
489  EcalMapping_->GetFED(double(point.eta()), double(point.phi()) * radTodeg);
490  if (hitFED < FEDNumbering::MINECALFEDID || hitFED > FEDNumbering::MAXECALFEDID)
491  continue;
492 
493  LogDebug("SelectedElectronFEDListProducer")
494  << " electron hit detID Endcap " << (*itSChits).first.rawId() << " eta " << double(point.eta())
495  << " phi " << double(point.phi()) * radTodeg << " FED " << hitFED << std::endl;
496  if (dumpSelectedEcalFed_) {
497  if (!fedList_.empty()) {
498  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
499  fedList_.push_back(hitFED);
500  } else
501  fedList_.push_back(hitFED);
502 
503  // preshower hit for each ecal endcap hit
504  DetId tmpX =
505  (dynamic_cast<const EcalPreshowerGeometry*>(GeometryES_))->getClosestCellInPlane(point, 1);
506  ESDetId stripX = (tmpX == DetId(0)) ? ESDetId(0) : ESDetId(tmpX);
507  int hitFED =
508  ES_fedId_[(3 - stripX.zside()) / 2 - 1][stripX.plane() - 1][stripX.six() - 1][stripX.siy() - 1];
509  LogDebug("SelectedElectronFEDListProducer")
510  << " ES hit plane X (deiID) " << stripX.rawId() << " six " << stripX.six() << " siy "
511  << stripX.siy() << " plane " << stripX.plane() << " FED ID " << hitFED << std::endl;
512  if (hitFED < FEDNumbering::MINPreShowerFEDID || hitFED > FEDNumbering::MAXPreShowerFEDID)
513  continue;
514  if (hitFED < 0)
515  continue;
516  if (!fedList_.empty()) {
517  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
518  fedList_.push_back(hitFED);
519  } else
520  fedList_.push_back(hitFED);
521 
522  DetId tmpY =
523  (dynamic_cast<const EcalPreshowerGeometry*>(GeometryES_))->getClosestCellInPlane(point, 2);
524  ESDetId stripY = (tmpY == DetId(0)) ? ESDetId(0) : ESDetId(tmpY);
525  hitFED =
526  ES_fedId_[(3 - stripY.zside()) / 2 - 1][stripY.plane() - 1][stripY.six() - 1][stripY.siy() - 1];
527  if (hitFED < FEDNumbering::MINPreShowerFEDID || hitFED > FEDNumbering::MAXPreShowerFEDID)
528  continue;
529  LogDebug("SelectedElectronFEDListProducer")
530  << " ES hit plane Y (deiID) " << stripY.rawId() << " six " << stripY.six() << " siy "
531  << stripY.siy() << " plane " << stripY.plane() << " FED ID " << hitFED << std::endl;
532  if (hitFED < 0)
533  continue;
534  if (!fedList_.empty()) {
535  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
536  fedList_.push_back(hitFED);
537  } else
538  fedList_.push_back(hitFED);
539  }
540  } // end endcap
541  } // end loop on SC hit
542 
543  // check HCAL behind each hit
544  if (dumpSelectedHCALFed_) {
545  HBHERecHitCollection::const_iterator itHcalRecHit = hcalRecHitCollection->begin();
546  for (; itHcalRecHit != hcalRecHitCollection->end(); ++itHcalRecHit) {
547  HcalDetId recHitId(itHcalRecHit->id());
548  const HcalGeometry* cellGeometry =
549  static_cast<const HcalGeometry*>(GeometryCalo_->getSubdetectorGeometry(recHitId));
550  float dR = reco::deltaR(scRef->eta(),
551  scRef->phi(),
552  cellGeometry->getPosition(recHitId).eta(),
553  cellGeometry->getPosition(recHitId).phi());
554  if (dR <= dRHcalRegion_) {
555  const HcalElectronicsId electronicId = HcalReadoutMap_->lookup(recHitId);
556  int hitFED = electronicId.dccid() + FEDNumbering::MINHCALFEDID;
557  LogDebug("SelectedElectronFEDListProducer")
558  << " matched hcal recHit : HcalDetId " << recHitId << " HcalElectronicsId " << electronicId
559  << " dcc id " << electronicId.dccid() << " spigot " << electronicId.spigot() << " fiber channel "
560  << electronicId.fiberChanId() << " fiber index " << electronicId.fiberIndex() << std::endl;
561  if (hitFED < FEDNumbering::MINHCALFEDID || hitFED > FEDNumbering::MAXHCALFEDID)
562  continue; //first eighteen feds are for HBHE
563  if (hitFED < 0)
564  continue;
565  if (!fedList_.empty()) {
566  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
567  fedList_.push_back(hitFED);
568  } else
569  fedList_.push_back(hitFED);
570  }
571  }
572  } // End Hcal
573  } // End Ecal
574 
575  // get the electron track
576  if (!dumpAllTrackerFed_) {
577  //loop on the region
578  if (dumpSelectedSiStripFed_) {
579  double eta;
580  double phi;
581  if (*itElectronCollFlag) {
582  eta = electron.gsfTrack()->eta();
583  phi = electron.gsfTrack()->phi();
584  } else {
585  eta = electron.track()->eta();
586  phi = electron.track()->phi();
587  }
588  for (uint32_t iCabling = 0; iCabling < SiStripCabling.size(); iCabling++) {
589  SiStripRegionCabling::Position pos = StripRegionCabling_->position(iCabling);
590  double dphi = fabs(pos.second - phi);
591  if (dphi > acos(-1))
592  dphi = 2 * acos(-1) - dphi;
593  double R = sqrt(pow(pos.first - eta, 2) + dphi * dphi);
594  if (R - sqrt(pow(regionDimension_.first / 2, 2) + pow(regionDimension_.second / 2, 2)) > dRStripRegion_)
595  continue;
596  //get vector of subdets within region
597  const SiStripRegionCabling::RegionCabling regSubdets = SiStripCabling[iCabling];
598  //cycle on subdets
599  for (uint32_t idet = 0; idet < SiStripRegionCabling::ALLSUBDETS; idet++) { //cicle between 1 and 4
600  //get vector of layers whin subdet of region
601  const SiStripRegionCabling::WedgeCabling regSubdetLayers = regSubdets[idet]; // at most 10 layers
602  for (uint32_t ilayer = 0; ilayer < SiStripRegionCabling::ALLLAYERS; ilayer++) {
603  //get map of vectors of feds withing the layer of subdet of region
604  const SiStripRegionCabling::ElementCabling fedVectorMap =
605  regSubdetLayers[ilayer]; // vector of the fed
606  SiStripRegionCabling::ElementCabling::const_iterator itFedMap = fedVectorMap.begin();
607  for (; itFedMap != fedVectorMap.end(); itFedMap++) {
608  for (uint32_t op = 0; op < (itFedMap->second).size(); op++) {
609  int hitFED = (itFedMap->second)[op].fedId();
610  if (hitFED < FEDNumbering::MINSiStripFEDID || hitFED > FEDNumbering::MAXSiStripFEDID)
611  continue;
612  LogDebug("SelectedElectronFEDListProducer") << " SiStrip (FedID) " << hitFED << std::endl;
613  if (!fedList_.empty()) {
614  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
615  fedList_.push_back(hitFED);
616  } else
617  fedList_.push_back(hitFED);
618  }
619  }
620  }
621  }
622  }
623  } // end si strip
624  if (dumpSelectedSiPixelFed_) {
625  math::XYZVector momentum;
626  if (*itElectronCollFlag)
627  momentum = electron.gsfTrack()->momentum();
628  else
629  momentum = electron.track()->momentum();
630  PixelRegion region(momentum, dPhiPixelRegion_, dEtaPixelRegion_, maxZPixelRegion_);
631  PixelModule lowerBound(region.vector.phi() - region.dPhi, region.vector.eta() - region.dEta);
632  PixelModule upperBound(region.vector.phi() + region.dPhi, region.vector.eta() + region.dEta);
633 
634  std::vector<PixelModule>::const_iterator itUp, itDn;
635  if (lowerBound.Phi >= -M_PI && upperBound.Phi <= M_PI) {
636  itDn = std::lower_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), lowerBound);
637  itUp = std::upper_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), upperBound);
638  pixelFedDump(itDn, itUp, region);
639  } else {
640  if (lowerBound.Phi < -M_PI)
641  lowerBound.Phi = lowerBound.Phi + 2 * M_PI;
642  PixelModule phi_p(M_PI, region.vector.eta() - region.dEta);
643  itDn = std::lower_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), lowerBound);
644  itUp = std::upper_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), phi_p);
645  pixelFedDump(itDn, itUp, region);
646 
647  if (upperBound.Phi < -M_PI)
648  upperBound.Phi = upperBound.Phi - 2 * M_PI;
649  PixelModule phi_m(-M_PI, region.vector.eta() - region.dEta);
650  itDn = std::lower_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), phi_m);
651  itUp = std::upper_bound(pixelModuleVector_.begin(), pixelModuleVector_.end(), upperBound);
652  pixelFedDump(itDn, itUp, region);
653  }
654  }
655  } // end tracker analysis
656  } // end loop on the electron candidate
657  } // end loop on the electron collection collection
658  } // end loop on the recoEcal candidate
659  } // end loop on the recoEcal candidate collection
660  // add a set of chosen FED
661  for (unsigned int iFed = 0; iFed < addThisSelectedFEDs_.size(); iFed++) {
662  if (addThisSelectedFEDs_.at(iFed) == -1)
663  continue;
664  fedList_.push_back(addThisSelectedFEDs_.at(iFed));
665  }
666 
667  // make the final raw data collection
668  auto streamFEDRawProduct = std::make_unique<FEDRawDataCollection>();
669  std::sort(fedList_.begin(), fedList_.end());
670  std::vector<uint32_t>::const_iterator itfedList = fedList_.begin();
671  for (; itfedList != fedList_.end(); ++itfedList) {
672  LogDebug("SelectedElectronFEDListProducer") << " fed point " << *itfedList << " ";
673  const FEDRawData& data = rawdata->FEDData(*itfedList);
674  if (data.size() > 0) {
675  FEDRawData& fedData = streamFEDRawProduct->FEDData(*itfedList);
676  fedData.resize(data.size());
677  memcpy(fedData.data(), data.data(), data.size());
678  }
679  }
680 
681  iEvent.put(std::move(streamFEDRawProduct), outputLabelModule_);
682 
683  if (!fedList_.empty())
684  fedList_.clear();
685 }
686 
687 template <typename TEle, typename TCand>
689  LogDebug("SelectedElectronFEDListProducer") << " End of the Job " << std::endl;
690 }
691 
692 template <typename TEle, typename TCand>
693 void SelectedElectronFEDListProducer<TEle, TCand>::pixelFedDump(std::vector<PixelModule>::const_iterator& itDn,
694  std::vector<PixelModule>::const_iterator& itUp,
695  const PixelRegion& region) {
696  for (; itDn != itUp; ++itDn) {
697  float zmodule = itDn->z - ((itDn->x - beamSpotPosition_.x()) * region.cosphi +
698  (itDn->y - beamSpotPosition_.y()) * region.sinphi) *
699  region.atantheta;
700  if (std::abs(zmodule) > region.maxZ)
701  continue;
702  int hitFED = itDn->Fed;
703  if (hitFED < FEDNumbering::MINSiPixelFEDID || hitFED > FEDNumbering::MAXSiPixelFEDID)
704  continue;
705  LogDebug("SelectedElectronFEDListProducer")
706  << " electron pixel hit " << itDn->DetId << " hitFED " << hitFED << std::endl;
707  if (!fedList_.empty()) {
708  if (std::find(fedList_.begin(), fedList_.end(), hitFED) == fedList_.end())
709  fedList_.push_back(hitFED);
710  } else
711  fedList_.push_back(hitFED);
712  }
713 
714  return;
715 }
716 
717 template <typename TEle, typename TCand>
720  desc.add<vector<edm::InputTag>>("electronTags", {edm::InputTag("hltEgammaGsfElectrons")});
721  desc.add<vector<edm::InputTag>>("recoEcalCandidateTags", {edm::InputTag("hltL1EG25Ele27WP85GsfTrackIsoFilter")});
722  desc.add<edm::FileInPath>("ESLookupTable", edm::FileInPath("EventFilter/ESDigiToRaw/data/ES_lookup_table.dat"));
723  desc.add<edm::InputTag>("HBHERecHitTag", edm::InputTag("hltHbhereco"));
724  desc.add<edm::InputTag>("beamSpotTag", edm::InputTag("hltOnlineBeamSpot"));
725  desc.add<edm::InputTag>("rawDataTag", edm::InputTag("rawDataCollector"));
726  desc.add<vector<int>>("addThisSelectedFEDs", {812, 813});
727  desc.add<vector<int>>("isGsfElectronCollection", {true});
728  desc.add<std::string>("outputLabelModule", "StreamElectronRawFed");
729  desc.add<bool>("dumpSelectedSiPixelFed", true);
730  desc.add<bool>("dumpSelectedSiStripFed", true);
731  desc.add<bool>("dumpSelectedEcalFed", true);
732  desc.add<bool>("dumpSelectedHCALFed", true);
733  desc.add<double>("dPhiPixelRegion", 0.3);
734  desc.add<double>("dEtaPixelRegion", 0.3);
735  desc.add<double>("dRStripRegion", 0.3);
736  desc.add<double>("dRHcalRegion", 0.3);
737  desc.add<double>("maxZPixelRegion", 24);
738  desc.add<bool>("dumpAllTrackerFed", false);
739  desc.add<bool>("dumpAllEcalFed", false);
740  desc.add<bool>("dumpAllHcalFed", false);
741 
743 }
744 
defaultModuleLabel.h
HcalElectronicsMap.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiStripRegionCabling::Position
std::pair< double, double > Position
Definition: SiStripRegionCabling.h:38
SiStripRegionCabling::RegionCabling
std::vector< WedgeCabling > RegionCabling
Definition: SiStripRegionCabling.h:33
SiStripRegionCabling::ALLLAYERS
Definition: SiStripRegionCabling.h:27
pfDeepBoostedJetPreprocessParams_cfi.upper_bound
upper_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:16
FEDNumbering::MINECALFEDID
Definition: FEDNumbering.h:43
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
trigger::TriggerElectron
Definition: TriggerTypeDefs.h:78
ESTransientHandle.h
MessageLogger.h
SiStripRegionCabling::WedgeCabling
std::vector< ElementCabling > WedgeCabling
Definition: SiStripRegionCabling.h:32
SelectedElectronFEDListProducer::pixelFedDump
void pixelFedDump(std::vector< PixelModule >::const_iterator &itDn, std::vector< PixelModule >::const_iterator &itUp, const PixelRegion &region)
Definition: SelectedElectronFEDListProducer.cc:693
SiStripRegionCabling::getRegionCabling
const Cabling & getRegionCabling() const
Definition: SiStripRegionCabling.h:118
PixelModule::DetId
unsigned int DetId
Definition: SelectedElectronFEDListProducer.h:70
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
TrackerGeometry.h
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
edm::Handle::product
T const * product() const
Definition: Handle.h:70
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
SelectedElectronFEDListProducer.h
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EBDetId
Definition: EBDetId.h:17
pos
Definition: PixelAliasList.h:18
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
SiStripFedCabling.h
SiStripRegionCabling::ALLSUBDETS
Definition: SiStripRegionCabling.h:26
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
edm::SortedCollection
Definition: SortedCollection.h:49
SiPixelFedCablingMap.h
FEDNumbering::MINPreShowerFEDID
Definition: FEDNumbering.h:31
TrackingRecHitFwd.h
ESDetId
Definition: ESDetId.h:15
SiPixelFedCablingTree.h
edm::ParameterSet::existsAs
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:171
SelectedElectronFEDListProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: SelectedElectronFEDListProducer.cc:718
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
FEDRawData.h
edm::Handle< FEDRawDataCollection >
submitDQMOfflineCAF.nLines
nLines
Definition: submitDQMOfflineCAF.py:676
trigger::TriggerRefsCollections::getObjects
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
Definition: TriggerRefsCollections.h:590
EcalBarrel
Definition: EcalSubdetector.h:10
FEDRawData::data
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
HcalGeometry.h
HcalDbService::getHcalMapping
const HcalElectronicsMap * getHcalMapping() const
Definition: HcalDbService.cc:343
FEDRawData
Definition: FEDRawData.h:19
CaloRecHit.h
edm::Ref
Definition: AssociativeIterator.h:58
HcalElectronicsId::fiberIndex
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...
Definition: HcalElectronicsId.h:78
PixelModule::Phi
float Phi
Definition: SelectedElectronFEDListProducer.h:68
DetId
Definition: DetId.h:17
edm::FileInPath
Definition: FileInPath.h:64
MakerMacros.h
SiStripDetCabling.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
FEDNumbering::MAXSiPixelFEDID
Definition: FEDNumbering.h:28
edm::SortedCollection::begin
const_iterator begin() const
Definition: SortedCollection.h:262
PVValHelper::eta
Definition: PVValidationHelpers.h:70
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
EcalMappingRcd.h
metsig::electron
Definition: SignAlgoResolutions.h:48
edm::ESHandle< HcalDbService >
HcalElectronicsId
Readout chain identification for Hcal.
Definition: HcalElectronicsId.h:32
Geom::pi
constexpr double pi()
Definition: Pi.h:31
EcalPreshowerGeometry.h
SelectedElectronFEDListProducer
Definition: SelectedElectronFEDListProducer.h:76
dqmdumpme.k
k
Definition: dqmdumpme.py:60
HcalDbRecord.h
Point3DBase< float, GlobalTag >
FEDRawDataCollection::FEDData
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
Definition: FEDRawDataCollection.cc:19
EEDetId
Definition: EEDetId.h:14
CaloGeometryRecord.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
PixelModule
Definition: SelectedElectronFEDListProducer.h:54
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiPixelFedCablingMap::cablingTree
std::unique_ptr< SiPixelFedCablingTree > cablingTree() const
Definition: SiPixelFedCablingMap.cc:103
EcalEndcap
Definition: EcalSubdetector.h:10
pfDeepBoostedJetPreprocessParams_cfi.lower_bound
lower_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:15
TrackerDigiGeometryRecord.h
ElectronFwd.h
FEDNumbering::MAXSiStripFEDID
Definition: FEDNumbering.h:30
PixelModule::x
float x
Definition: SelectedElectronFEDListProducer.h:69
edm::HandleBase::failedToGet
bool failedToGet() const
Definition: HandleBase.h:72
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
defaultModuleLabel
std::string defaultModuleLabel()
Definition: defaultModuleLabel.h:16
SiPixelFedCablingMapRcd.h
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
SelectedElectronFEDListProducer::endJob
virtual void endJob()
Definition: SelectedElectronFEDListProducer.cc:688
HcalDetId.h
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
CaloTopologyRecord.h
EcalElectronicsMapping.h
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88271
HcalDetId
Definition: HcalDetId.h:12
ModuleDef.h
iEvent
int iEvent
Definition: GenABIO.cc:224
FEDRawDataCollection.h
PixelRegion
Definition: SelectedElectronFEDListProducer.h:36
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
edm::EventSetup
Definition: EventSetup.h:58
SiStripRegionCablingRcd
Definition: SiStripDependentRecords.h:23
TrackerGeometry::dets
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
Definition: TrackerGeometry.h:62
l1tstage2_dqm_sourceclient-live_cfg.fedId
fedId
Definition: l1tstage2_dqm_sourceclient-live_cfg.py:88
FEDNumbering::MAXPreShowerFEDID
Definition: FEDNumbering.h:32
SelectedElectronFEDListProducer::SelectedElectronFEDListProducer
SelectedElectronFEDListProducer(const edm::ParameterSet &)
Producer constructor.
Definition: SelectedElectronFEDListProducer.cc:70
DetId::Ecal
Definition: DetId.h:27
trigger::TriggerCluster
Definition: TriggerTypeDefs.h:88
get
#define get
HcalElectronicsId.h
SiStripRegionCabling.h
PixelModule::y
float y
Definition: SelectedElectronFEDListProducer.h:69
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
FEDNumbering::MINSiPixelFEDID
Definition: FEDNumbering.h:27
InputTag.h
ESDetId::plane
int plane() const
Definition: ESDetId.h:41
EcalPreshower
Definition: EcalSubdetector.h:10
ESDetId::six
int six() const
Definition: ESDetId.h:43
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
Electron.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
SiStripRegionCablingRcd.h
SiStripRegionCabling::Cabling
std::vector< RegionCabling > Cabling
Definition: SiStripRegionCabling.h:34
RecoEcalCandidate.h
EcalMappingRcd
Definition: EcalMappingRcd.h:15
SelectedElectronFEDListProducer::~SelectedElectronFEDListProducer
~SelectedElectronFEDListProducer() override
Definition: SelectedElectronFEDListProducer.cc:286
SuperClusterFwd.h
pwdgSkimBPark_cfi.electrons
electrons
Definition: pwdgSkimBPark_cfi.py:6
FedChannelConnection.h
PixelModule::z
float z
Definition: SelectedElectronFEDListProducer.h:69
SuperCluster.h
Exception
Definition: hltDiff.cc:245
CaloGeometry.h
FEDNumbering::MINHCALFEDID
Definition: FEDNumbering.h:47
FEDRawData::resize
void resize(size_t newsize)
Definition: FEDRawData.cc:28
ESDetId::siy
int siy() const
Definition: ESDetId.h:45
SelectedElectronFEDListProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: SelectedElectronFEDListProducer.cc:307
or
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
Definition: Activities.doc:12
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
RecoEcalCandidateFwd.h
HcalDbService.h
SelectedElectronFEDListProducer::beginJob
virtual void beginJob()
Definition: SelectedElectronFEDListProducer.cc:302
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
HcalElectronicsId::spigot
constexpr int spigot() const
get the spigot (input number on DCC, AMC card number for uTCA)
Definition: HcalElectronicsId.h:93
HcalElectronicsId::dccid
constexpr int dccid() const
get the (Hcal local) DCC id for VME, crate number for uTCA
Definition: HcalElectronicsId.h:95
cms::Exception
Definition: Exception.h:70
trigger::TriggerPhoton
HLT.
Definition: TriggerTypeDefs.h:77
SiStripDetCablingRcd.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HcalDbRecord
Definition: HcalDbRecord.h:30
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
PixelModule::Eta
float Eta
Definition: SelectedElectronFEDListProducer.h:68
FEDNumbering::MAXHCALFEDID
Definition: FEDNumbering.h:48
PixelModule::Fed
unsigned int Fed
Definition: SelectedElectronFEDListProducer.h:71
SiPixelFedCablingMapRcd
Definition: SiPixelFedCablingMapRcd.h:5
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HcalElectronicsId::fiberChanId
constexpr int fiberChanId() const
get the fiber channel id (which of channels on a fiber)
Definition: HcalElectronicsId.h:76
point
*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
Definition: invegas.h:5
edm::Event
Definition: Event.h:73
SiStripRegionCabling::ElementCabling
std::vector< Element > ElementCabling
Definition: SiStripRegionCabling.h:31
HcalGeometry
Definition: HcalGeometry.h:17
dttmaxenums::R
Definition: DTTMax.h:29
edm::InputTag
Definition: InputTag.h:15
ESDetId::zside
int zside() const
Definition: ESDetId.h:39
FEDNumbering::MAXECALFEDID
Definition: FEDNumbering.h:44
SelectedElectronFEDListProducerGsf
SelectedElectronFEDListProducer< reco::Electron, reco::RecoEcalCandidate > SelectedElectronFEDListProducerGsf
Definition: SelectedElectronFEDListProducer.cc:747
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
FEDNumbering::MINSiStripFEDID
Definition: FEDNumbering.h:29