test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ClusterTask.cc
Go to the documentation of this file.
1 #include "../interface/ClusterTask.h"
2 
14 
19 
20 namespace ecaldqm
21 {
23  DQWorkerTask(),
24  ebHits_(0),
25  eeHits_(0),
26  // ievt_(0),
27  // massCalcPrescale_(_workerParams.getUntrackedParameter<int>("massCalcPrescale")),
28  doExtra_(true),
29  energyThreshold_(0.),
30  swissCrossMaxThreshold_(3.),
31  egTriggerAlgos_(),
32  trigTypeToME_{0, 1, 2, 3, 4},
33  L1GlobalTriggerReadoutRecordTag_(),
34  L1MuGMTReadoutCollectionTag_(),
35  L1GlobalTriggerReadoutRecordToken_(),
36  L1MuGMTReadoutCollectionToken_()
37  {
38  }
39 
40  void
42  {
43  doExtra_ = _params.getUntrackedParameter<bool>("doExtra");
44 
45  if(!doExtra_){
46  MEs_.erase(std::string("SCSizeVsEnergy"));
47  MEs_.erase(std::string("SCSeedOccupancyHighE"));
48  MEs_.erase(std::string("SCSeedOccupancyTrig"));
49  MEs_.erase(std::string("SCSeedTimeTrigEx"));
50  MEs_.erase(std::string("SCSeedTimeMapTrigEx"));
51  MEs_.erase(std::string("SCOccupancyProjEta"));
52  MEs_.erase(std::string("SCOccupancyProjPhi"));
53  MEs_.erase(std::string("SCSwissCross"));
54  MEs_.erase(std::string("Triggers"));
55  MEs_.erase(std::string("ExclusiveTriggers"));
56 
57  return;
58  }
59 
60  energyThreshold_ = _params.getUntrackedParameter<double>("energyThreshold");
61  swissCrossMaxThreshold_ = _params.getUntrackedParameter<double>("swissCrossMaxThreshold");
62  egTriggerAlgos_ = _params.getUntrackedParameter<std::vector<std::string> >("egTriggerAlgos");
63  L1GlobalTriggerReadoutRecordTag_ = _params.getUntrackedParameter<edm::InputTag>("L1GlobalTriggerReadoutRecordTag");
64  L1MuGMTReadoutCollectionTag_ = _params.getUntrackedParameter<edm::InputTag>("L1MuGMTReadoutCollectionTag");
65 
67 
68  std::string triggerTypeNames[nTriggerTypes] = {
69  "ECAL",
70  "HCAL",
71  "CSC",
72  "DT",
73  "RPC"
74  };
75 
76  MESetMulti& occupancy(static_cast<MESetMulti&>(MEs_.at("SCSeedOccupancyTrig")));
77  for(unsigned iT(0); iT != nTriggerTypes; ++iT){
78  repl["trig"] = triggerTypeNames[iT];
79  trigTypeToME_[iT] = occupancy.getIndex(repl);
80  }
81  }
82 
83  void
85  {
88  }
89 
90  void
92  {
93  if(!doExtra_) return;
94 
95  triggered_.reset();
96 
97  // TODO IS THIS THE MOST UP-TO-DATE ACCESSOR TO L1 INFO?
98 
101  DecisionWord const& dWord(l1GTHndl->decisionWord());
102 
103  //Ecal
105  _es.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
106  L1GtTriggerMenu const* menu(menuRcd.product());
107 
108  for(unsigned iT(0); iT != egTriggerAlgos_.size(); ++iT){
109  if(menu->gtAlgorithmResult(egTriggerAlgos_[iT], dWord)){
111  break;
112  }
113  }
114 
115  //Hcal
116  bool hcal_top = false;
117  bool hcal_bot = false;
118  const L1GtPsbWord psb = l1GTHndl->gtPsbWord(0xbb0d, 0);
119  std::vector<int> valid_phi;
120  if((psb.aData(4)&0x3f) >= 1) {valid_phi.push_back( (psb.aData(4)>>10)&0x1f ); }
121  if((psb.bData(4)&0x3f) >= 1) {valid_phi.push_back( (psb.bData(4)>>10)&0x1f ); }
122  if((psb.aData(5)&0x3f) >= 1) {valid_phi.push_back( (psb.aData(5)>>10)&0x1f ); }
123  if((psb.bData(5)&0x3f) >= 1) {valid_phi.push_back( (psb.bData(5)>>10)&0x1f ); }
124  std::vector<int>::const_iterator iphi;
125  for(iphi=valid_phi.begin(); iphi!=valid_phi.end(); iphi++) {
126  if(*iphi<9) hcal_top=true;
127  if(*iphi>8) hcal_bot=true;
128  }
129  if(hcal_top && hcal_bot) triggered_.set(kHcalTrigger);
130 
131  //Muons
133  if(!_evt.getByToken(L1MuGMTReadoutCollectionToken_, l1MuHndl)) return;
134  std::vector<L1MuGMTReadoutRecord> const& records(l1MuHndl->getRecords());
135 
136  for(unsigned iR(0); iR != records.size(); ++iR){
137  if(records[iR].getBxInEvent() != 0) continue;
138 
139  unsigned iC(0);
140 
141  //DT triggers
142  std::vector<L1MuRegionalCand> dtBXCands(records[iR].getDTBXCands());
143  for(iC = 0; iC != dtBXCands.size(); ++iC)
144  if(!dtBXCands[iC].empty()) break;
145  if(iC != dtBXCands.size()) triggered_.set(kDTTrigger);
146 
147  //RPC triggers
148  std::vector<L1MuRegionalCand> brlRPCCands(records[iR].getBrlRPCCands());
149  for(iC = 0; iC != brlRPCCands.size(); ++iC)
150  if(!brlRPCCands[iC].empty()) break;
151  if(iC != brlRPCCands.size()) triggered_.set(kRPCTrigger);
152 
153  //CSC Triggers
154  std::vector<L1MuRegionalCand> cscCands(records[iR].getCSCCands());
155  for(iC = 0; iC != cscCands.size(); ++iC)
156  if(!cscCands[iC].empty()) break;
157  if(iC != cscCands.size()) triggered_.set(kCSCTrigger);
158  }
159 
160  if(triggered_.none()) return;
161 
162  MESet& meTriggers(MEs_.at("Triggers"));
163  MESet& meExclusiveTriggers(MEs_.at("ExclusiveTriggers"));
164 
165  for(unsigned iT(0); iT != nTriggerTypes; ++iT){
166  if(!triggered_[iT]) continue;
167  meTriggers.fill(iT + 0.5);
168  if(triggered_.count() == 1)
169  meExclusiveTriggers.fill(iT + 0.5);
170  }
171  }
172 
173  void
175  {
176  // ++ievt_;
177 
178  ebHits_ = 0;
179  eeHits_ = 0;
180  }
181 
182  bool
183  ClusterTask::filterRunType(short const* _runType)
184  {
185  for(unsigned iFED(0); iFED != nDCC; iFED++){
186  if(_runType[iFED] == EcalDCCHeaderBlock::COSMIC ||
187  _runType[iFED] == EcalDCCHeaderBlock::MTCC ||
188  _runType[iFED] == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
189  _runType[iFED] == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
190  _runType[iFED] == EcalDCCHeaderBlock::COSMICS_LOCAL ||
191  _runType[iFED] == EcalDCCHeaderBlock::PHYSICS_LOCAL) return true;
192  }
193 
194  return false;
195  }
196 
197  void
199  {
200  switch(_collection){
201  case kEBRecHit:
202  ebHits_ = &_hits;
203  break;
204  case kEERecHit:
205  eeHits_ = &_hits;
206  break;
207  default:
208  break;
209  }
210  }
211 
212  void
214  {
215  MESet& meBCE(MEs_.at("BCE"));
216  MESet& meBCEMap(MEs_.at("BCEMap"));
217  MESet& meBCEMapProjEta(MEs_.at("BCEMapProjEta"));
218  MESet& meBCEMapProjPhi(MEs_.at("BCEMapProjPhi"));
219  MESet& meBCEtMapProjEta(MEs_.at("BCEtMapProjEta"));
220  MESet& meBCEtMapProjPhi(MEs_.at("BCEtMapProjPhi"));
221  MESet& meBCOccupancy(MEs_.at("BCOccupancy"));
222  MESet& meBCOccupancyProjEta(MEs_.at("BCOccupancyProjEta"));
223  MESet& meBCOccupancyProjPhi(MEs_.at("BCOccupancyProjPhi"));
224  MESet& meBCSize(MEs_.at("BCSize"));
225  MESet& meTrendBCSize(MEs_.at("TrendBCSize"));
226  MESet& meBCSizeMap(MEs_.at("BCSizeMap"));
227  MESet& meBCSizeMapProjEta(MEs_.at("BCSizeMapProjEta"));
228  MESet& meBCSizeMapProjPhi(MEs_.at("BCSizeMapProjPhi"));
229  MESet& meBCNum(MEs_.at("BCNum"));
230  MESet& meTrendNBC(MEs_.at("TrendNBC"));
231 
232  int nBC[] = {0, 0};
233  bool isBarrel(_collection == kEBBasicCluster);
234 
235  // vector<reco::BasicCluster const*> lowMassCands;
236 
237  for(edm::View<reco::CaloCluster>::const_iterator bcItr(_bcs.begin()); bcItr != _bcs.end(); ++bcItr){
238  if(bcItr->caloID().detectors() != 0){
239  if(isBarrel && !bcItr->caloID().detector(reco::CaloID::DET_ECAL_BARREL)) continue;
240  if(!isBarrel && !bcItr->caloID().detector(reco::CaloID::DET_ECAL_ENDCAP)) continue;
241  }
242 
243  math::XYZPoint const& position(bcItr->position());
244 
245  DetId id(bcItr->seed());
246  if(id.null()){
247  GlobalPoint gp(position.x(), position.y(), position.z());
248  CaloSubdetectorGeometry const* subgeom(getGeometry()->getSubdetectorGeometry(DetId::Ecal, isBarrel ? EcalBarrel : EcalEndcap));
249 
250  id = subgeom->getClosestCell(gp);
251  }
252 
253  if(id.null() || (id.subdetId() == EcalBarrel && !isBarrel) || (id.subdetId() == EcalEndcap && isBarrel)) continue;
254 
255  float energy(bcItr->energy());
256  float posEta(position.eta());
257  float posPhi(phi(position.phi()));
258  float et(energy / std::cosh(posEta));
259  int subdet(isBarrel ? EcalBarrel : EcalEndcap);
260  if(subdet == EcalEndcap && position.z() < 0.) subdet = -EcalEndcap;
261 
262  meBCE.fill(id, energy);
263 
264  meBCEMap.fill(id, energy);
265  meBCEMapProjEta.fill(posEta, energy);
266  meBCEMapProjPhi.fill(subdet, posPhi, energy);
267  meBCEtMapProjEta.fill(posEta, et);
268  meBCEtMapProjPhi.fill(subdet, posPhi, et);
269 
270  meBCOccupancy.fill(id);
271  meBCOccupancyProjEta.fill(posEta);
272  meBCOccupancyProjPhi.fill(subdet, posPhi);
273 
274  float size(bcItr->size());
275 
276  meBCSize.fill(id, size);
277  meTrendBCSize.fill(id, double(timestamp_.iLumi), size);
278 
279  meBCSizeMap.fill(id, size);
280  meBCSizeMapProjEta.fill(posEta, size);
281  meBCSizeMapProjPhi.fill(subdet, posPhi, size);
282 
283  int zside(position.z() > 0 ? 1 : 0);
284  nBC[zside]++;
285 
286  // if(ievt_ % massCalcPrescale_ != 0) continue;
287 
288  // if(energy > 10.) continue;
289 
290  // EcalRecHitCollection::const_iterator hitItr(isBarrel ? ebHits_->find(id) : eeHits_->find(id));
291  // if(hitItr == (isBarrel ? ebHits_->end() : eeHits_->end())) continue;
292 
293  // // cuts here must be parametrized
294  // if(hitItr->energy() < 0.5) continue;
295 
296  // if(hitItr->energy() / energy > 0.95) continue;
297 
298  // lowMassCands.push_back(&(*bcItr));
299  }
300 
301  if(isBarrel){
302  meBCNum.fill(EcalBarrel, nBC[0] + nBC[1]);
303  meTrendNBC.fill(EcalBarrel, double(timestamp_.iLumi), nBC[0] + nBC[1]);
304  }else{
305  meBCNum.fill(-EcalEndcap, nBC[0]);
306  meBCNum.fill(EcalEndcap, nBC[1]);
307  meTrendNBC.fill(EcalEndcap, double(timestamp_.iLumi), nBC[0] + nBC[1]);
308  }
309 
310  // if(ievt_ % massCalcPrescale_ != 0) return;
311 
312  // double const pi(3.14159265);
313 
314  // for(vector<reco::BasicCluster const*>::iterator bcItr1(lowMassCands.begin()); bcItr1 != lowMassCands.end(); ++bcItr1){
315  // reco::BasicCluster const& bc1(**bcItr1);
316  // float energy1(bc1.energy());
317  // float px1(energy1 * sin(bc1.position().theta()) * cos(bc1.phi()));
318  // float py1(energy1 * sin(bc1.position().theta()) * sin(bc1.phi()));
319  // float pz1(energy1 * cos(bc1.position().theta()));
320 
321  // for(vector<reco::BasicCluster const*>::iterator bcItr2(lowMassCands.begin()); bcItr2 != lowMassCands.end(); ++bcItr2){
322  // if(*bcItr1 == *bcItr2) continue;
323  // reco::BasicCluster const& bc2(**bcItr2);
324  // float energy2(bc2.energy());
325  // float px2(energy2 * sin(bc2.position().theta()) * cos(bc2.phi()));
326  // float py2(energy2 * sin(bc2.position().theta()) * sin(bc2.phi()));
327  // float pz2(energy2 * cos(bc2.position().theta()));
328 
329  // float ptpair(sqrt((px1 + px2) * (px1 + px2) + (py1 + py2) * (py1 + py2)));
330  // if(ptpair < 2.5) continue;
331 
332  // float epair(energy1 + energy2);
333  // float pzpair(abs(pz1 + pz2));
334 
335  // float m2(epair * epair - pzpair * pzpair - ptpair * ptpair);
336  // if(m2 < 0.) continue;
337 
338  // float eta(0.5 * log((epair + pzpair)/(epair - pzpair)));
339  // float phi(atan2(px1 + px2, py1 + py2));
340 
341  // float iso(0.);
342  // for(reco::BasicClusterCollection::const_iterator bcItr(_bcs.begin()); bcItr != _bcs.end(); ++bcItr){
343  // float dEta(bcItr->eta() - eta);
344  // float dPhi(bcItr->phi() - phi);
345  // if(dPhi > 2. * pi) dPhi -= 2. * pi;
346  // else if(dPhi < -2. * pi) dPhi += 2. * pi;
347  // if(sqrt(dEta * dEta + dPhi * dPhi) < 0.2) iso += bcItr->energy() * sin(bcItr->position().theta());
348  // }
349  // if(iso > 0.5) continue;
350 
351  // float mass(sqrt(m2));
352  // MEs_[kPi0]->fill(mass);
353  // MEs_[kJPsi]->fill(mass);
354  // }
355  // }
356  }
357 
358  void
360  {
361  bool isBarrel(_collection == kEBSuperCluster);
362  EcalSubdetector subdet(isBarrel ? EcalBarrel : EcalEndcap);
363 
364  MESet& meSCE(MEs_.at("SCE"));
365  MESet& meSCELow(MEs_.at("SCELow"));
366  MESet& meSCNBCs(MEs_.at("SCNBCs"));
367  MESet& meSCNcrystals(MEs_.at("SCNcrystals"));
368  MESet& meTrendSCSize(MEs_.at("TrendSCSize"));
369  MESet& meSCSeedEnergy(MEs_.at("SCSeedEnergy"));
370  MESet& meSCClusterVsSeed(MEs_.at("SCClusterVsSeed"));
371  MESet& meSCSeedOccupancy(MEs_.at("SCSeedOccupancy"));
372  MESet& meSingleCrystalCluster(MEs_.at("SingleCrystalCluster"));
373  MESet& meSCR9(MEs_.at("SCR9"));
374 
375  MESet* meSCSizeVsEnergy(doExtra_ ? &MEs_.at("SCSizeVsEnergy") : 0);
376  MESet* meSCSeedOccupancyHighE(doExtra_ ? &MEs_.at("SCSeedOccupancyHighE") : 0);
377  MESet* meSCSeedOccupancyTrig(doExtra_ ? &MEs_.at("SCSeedOccupancyTrig") : 0);
378  MESet* meSCSeedTimeTrigEx(doExtra_ ? &MEs_.at("SCSeedTimeTrigEx") : 0);
379  MESet* meSCSeedTimeMapTrigEx(doExtra_ ? &MEs_.at("SCSeedTimeMapTrigEx") : 0);
380  MESet* meSCOccupancyProjEta(doExtra_ ? &MEs_.at("SCOccupancyProjEta") : 0);
381  MESet* meSCOccupancyProjPhi(doExtra_ ? &MEs_.at("SCOccupancyProjPhi") : 0);
382  MESet* meSCSwissCross(doExtra_ ? &MEs_.at("SCSwissCross") : 0);
383 
384  EcalRecHitCollection const* hits(isBarrel ? ebHits_ : eeHits_);
385 
386  // reco::SuperCluster const* leading(0);
387  // reco::SuperCluster const* subLeading(0);
388 
389  int nSC(0);
390 
391  for(reco::SuperClusterCollection::const_iterator scItr(_scs.begin()); scItr != _scs.end(); ++scItr){
392  DetId seedId(scItr->seed()->seed());
393  if(seedId.null()){
394  math::XYZPoint const& position(scItr->position());
395 
396  GlobalPoint gp(position.x(), position.y(), position.z());
397 
398  CaloSubdetectorGeometry const* subgeom(getGeometry()->getSubdetectorGeometry(DetId::Ecal, isBarrel ? EcalBarrel : EcalEndcap));
399 
400  seedId = subgeom->getClosestCell(gp);
401  }
402 
403  if(seedId.null() || (seedId.subdetId() != subdet)) continue;
404 
405  EcalRecHitCollection::const_iterator seedItr(hits->find(seedId));
406  if(seedItr == hits->end()) continue;
407 
408  ++nSC;
409 
410  float energy(scItr->energy());
411  float size(scItr->size());
412 
413  meSCE.fill(seedId, energy);
414  meSCELow.fill(seedId, energy);
415 
416  meSCNBCs.fill(seedId, scItr->clustersSize());
417  meSCNcrystals.fill(seedId, size);
418 
419  if(doExtra_) meSCSizeVsEnergy->fill(subdet, energy, size);
420 
421  meTrendSCSize.fill(seedId, double(timestamp_.iLumi), size);
422 
423  meSCSeedEnergy.fill(seedId, seedItr->energy());
424  meSCClusterVsSeed.fill(seedId, seedItr->energy(), energy);
425 
426  meSCSeedOccupancy.fill(seedId);
427  if(doExtra_ && energy > energyThreshold_) meSCSeedOccupancyHighE->fill(seedId);
428 
429  if(scItr->size() == 1) meSingleCrystalCluster.fill(seedId);
430 
431  float e3x3(EcalClusterTools::e3x3(*scItr->seed(), hits, getTopology()));
432  meSCR9.fill(seedId, e3x3 / energy);
433 
434  if(doExtra_){
435  for(unsigned iT(0); iT != nTriggerTypes; ++iT){
436  if(!triggered_[iT]) continue;
437 
438  static_cast<MESetMulti*>(meSCSeedOccupancyTrig)->use(trigTypeToME_[iT]);
439  meSCSeedOccupancyTrig->fill(seedId);
440 
441  // exclusive
442  if(triggered_.count() == 1){
443  static_cast<MESetMulti*>(meSCSeedTimeTrigEx)->use(trigTypeToME_[iT]);
444  static_cast<MESetMulti*>(meSCSeedTimeMapTrigEx)->use(trigTypeToME_[iT]);
445  meSCSeedTimeTrigEx->fill(subdet, seedItr->time());
446  meSCSeedTimeMapTrigEx->fill(seedId, seedItr->time());
447  }
448  }
449 
450  meSCOccupancyProjEta->fill(subdet, scItr->eta());
451  meSCOccupancyProjPhi->fill(subdet, phi(scItr->phi()));
452 
453  if(isBarrel){
454  float e1(EcalClusterTools::eMax(*scItr, ebHits_));
455  if(e1 > swissCrossMaxThreshold_){
456  float e4(EcalClusterTools::eTop(*scItr, ebHits_, getTopology()) +
457  EcalClusterTools::eRight(*scItr, ebHits_, getTopology()) +
458  EcalClusterTools::eBottom(*scItr, ebHits_, getTopology()) +
459  EcalClusterTools::eLeft(*scItr, ebHits_, getTopology()));
460 
461  meSCSwissCross->fill(1. - e4 / e1);
462  }
463  }
464  }
465 
466  // if(ievt_ % massCalcPrescale_ != 0) continue;
467 
468  // float et(energy * sin(scItr->position().theta()));
469  // if(!leading || et > leading->energy() * sin(leading->position().theta())){
470  // subLeading = leading;
471  // leading = &(*scItr);
472  // }
473  // else if(!subLeading || et > subLeading->energy() * sin(subLeading->position().theta())){
474  // subLeading = &(*scItr);
475  // }
476  }
477 
478  MEs_.at("SCNum").fill(subdet, nSC);
479  MEs_.at("TrendNSC").fill(subdet, double(timestamp_.iLumi), nSC);
480 
481  // if(ievt_ % massCalcPrescale_ != 0) return;
482 
483  // // implement isolation & cuts
484  // if(!leading || !subLeading) return;
485  // float e(leading->energy() + subLeading->energy());
486  // float px(leading->energy() * sin(leading->position().theta()) * cos(leading->phi()) + subLeading->energy() * sin(subLeading->position().theta()) * cos(subLeading->phi()));
487  // float py(leading->energy() * sin(leading->position().theta()) * sin(leading->phi()) + subLeading->energy() * sin(subLeading->position().theta()) * sin(subLeading->phi()));
488  // float pz(leading->energy() * cos(leading->position().theta()) + subLeading->energy() * cos(subLeading->position().theta()));
489  // float m2(e * e - px * px - py * py - pz * pz);
490  // if(m2 < 0.) return;
491  // float mass(sqrt(m2));
492  // MEs_[kZ]->fill(mass);
493  // MEs_[kHighMass]->fill(mass);
494 
495  }
496 
497  void
499  {
502  }
503 
505 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const cms_uint16_t bData(int iB) const
get/set B_DATA_CH_IB
Definition: L1GtPsbWord.cc:323
T getUntrackedParameter(std::string const &, T const &) const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
void runOnBasicClusters(edm::View< reco::CaloCluster > const &, Collections)
Definition: ClusterTask.cc:213
#define DEFINE_ECALDQM_WORKER(TYPE)
Definition: DQWorker.h:108
void endEvent(edm::Event const &, edm::EventSetup const &) override
Definition: ClusterTask.cc:174
edm::LuminosityBlockNumber_t iLumi
Definition: DQWorker.h:35
void addDependencies(DependencySet &) override
Definition: ClusterTask.cc:84
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
EcalRecHitCollection const * ebHits_
Definition: ClusterTask.h:53
std::vector< EcalRecHit >::const_iterator const_iterator
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > L1GlobalTriggerReadoutRecordToken_
Definition: ClusterTask.h:66
int zside(DetId const &)
void fill(DetId const &_id, double _xyw=1., double _yw=1., double _w=1.) override
Definition: MESetMulti.h:30
CaloGeometry const * getGeometry()
void beginEvent(edm::Event const &, edm::EventSetup const &) override
Definition: ClusterTask.cc:91
CaloTopology const * getTopology()
const cms_uint16_t aData(int iA) const
get/set A_DATA_CH_IA
Definition: L1GtPsbWord.cc:228
std::vector< std::string > egTriggerAlgos_
Definition: ClusterTask.h:60
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
float swissCrossMaxThreshold_
Definition: ClusterTask.h:59
std::vector< bool > DecisionWord
typedefs
unsigned trigTypeToME_[nTriggerTypes]
Definition: ClusterTask.h:62
bool filterRunType(short const *) override
Definition: ClusterTask.cc:183
EcalRecHitCollection const * eeHits_
Definition: ClusterTask.h:54
edm::EDGetTokenT< L1MuGMTReadoutCollection > L1MuGMTReadoutCollectionToken_
Definition: ClusterTask.h:67
Definition: DetId.h:18
Timestamp timestamp_
Definition: DQWorker.h:78
void runOnRecHits(EcalRecHitCollection const &, Collections)
Definition: ClusterTask.cc:198
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
const T & get() const
Definition: EventSetup.h:55
virtual void fill(DetId const &, double=1., double=1., double=1.)
Definition: MESet.h:46
MESetCollection MEs_
Definition: DQWorker.h:75
void setTokens(edm::ConsumesCollector &) override
Definition: ClusterTask.cc:498
void runOnSuperClusters(reco::SuperClusterCollection const &, Collections)
Definition: ClusterTask.cc:359
edm::InputTag L1GlobalTriggerReadoutRecordTag_
Definition: ClusterTask.h:64
static int position[264][3]
Definition: ReadPGInfo.cc:509
const_iterator begin() const
const_iterator end() const
std::bitset< nTriggerTypes > triggered_
Definition: ClusterTask.h:61
edm::InputTag L1MuGMTReadoutCollectionTag_
Definition: ClusterTask.h:65
std::map< std::string, std::string > PathReplacements
Definition: MESet.h:31
EcalSubdetector
void push_back(Dependency const &_d)
Definition: DQWorkerTask.h:50
double phi(EBDetId const &)
unsigned getIndex(PathReplacements const &) const
Definition: MESetMulti.cc:155
tuple size
Write out results.
void setParams(edm::ParameterSet const &) override
Definition: ClusterTask.cc:41