CMS 3D CMS Logo

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