CMS 3D CMS Logo

GEMDigiMatcher.cc
Go to the documentation of this file.
2 
3 using namespace std;
4 
6  const auto& gemSimLink = pset.getParameterSet("gemSimLink");
7  simMuOnly_ = gemSimLink.getParameter<bool>("simMuOnly");
8  discardEleHits_ = gemSimLink.getParameter<bool>("discardEleHits");
9  verboseSimLink_ = gemSimLink.getParameter<int>("verbose");
10 
11  const auto& gemDigi = pset.getParameterSet("gemStripDigi");
12  minBXDigi_ = gemDigi.getParameter<int>("minBX");
13  maxBXDigi_ = gemDigi.getParameter<int>("maxBX");
14  matchDeltaStrip_ = gemDigi.getParameter<int>("matchDeltaStrip");
15  verboseDigi_ = gemDigi.getParameter<int>("verbose");
16  matchToSimLink_ = gemDigi.getParameter<bool>("matchToSimLink");
17 
18  const auto& gemPad = pset.getParameterSet("gemPadDigi");
19  minBXPad_ = gemPad.getParameter<int>("minBX");
20  maxBXPad_ = gemPad.getParameter<int>("maxBX");
21  verbosePad_ = gemPad.getParameter<int>("verbose");
22 
23  const auto& gemCluster = pset.getParameterSet("gemPadCluster");
24  minBXCluster_ = gemCluster.getParameter<int>("minBX");
25  maxBXCluster_ = gemCluster.getParameter<int>("maxBX");
26  verboseCluster_ = gemCluster.getParameter<int>("verbose");
27 
28  const auto& gemCoPad = pset.getParameterSet("gemCoPadDigi");
29  minBXCoPad_ = gemCoPad.getParameter<int>("minBX");
30  maxBXCoPad_ = gemCoPad.getParameter<int>("maxBX");
31  verboseCoPad_ = gemCoPad.getParameter<int>("verbose");
32 
33  // make a new simhits matcher
34  muonSimHitMatcher_.reset(new GEMSimHitMatcher(pset, std::move(iC)));
35 
36  if (matchToSimLink_)
37  gemSimLinkToken_ =
38  iC.consumes<edm::DetSetVector<GEMDigiSimLink>>(gemSimLink.getParameter<edm::InputTag>("inputTag"));
39  gemDigiToken_ = iC.consumes<GEMDigiCollection>(gemDigi.getParameter<edm::InputTag>("inputTag"));
40  gemPadToken_ = iC.consumes<GEMPadDigiCollection>(gemPad.getParameter<edm::InputTag>("inputTag"));
41  gemClusterToken_ = iC.consumes<GEMPadDigiClusterCollection>(gemCluster.getParameter<edm::InputTag>("inputTag"));
42  gemCoPadToken_ = iC.consumes<GEMCoPadDigiCollection>(gemCoPad.getParameter<edm::InputTag>("inputTag"));
43 
44  geomToken_ = iC.esConsumes<GEMGeometry, MuonGeometryRecord>();
45 }
46 
48  muonSimHitMatcher_->init(iEvent, iSetup);
49 
50  if (matchToSimLink_)
51  iEvent.getByToken(gemSimLinkToken_, gemDigisSLH_);
52  iEvent.getByToken(gemDigiToken_, gemDigisH_);
53  iEvent.getByToken(gemPadToken_, gemPadsH_);
54  iEvent.getByToken(gemClusterToken_, gemClustersH_);
55  iEvent.getByToken(gemCoPadToken_, gemCoPadsH_);
56 
57  gemGeometry_ = &iSetup.getData(geomToken_);
58 }
59 
61 void GEMDigiMatcher::match(const SimTrack& t, const SimVertex& v) {
62  // match simhits first
63  muonSimHitMatcher_->match(t, v);
64 
65  // get the digi collections
66  const GEMDigiCollection& gemDigis = *gemDigisH_.product();
67  const GEMPadDigiCollection& gemPads = *gemPadsH_.product();
68  const GEMPadDigiClusterCollection& gemClusters = *gemClustersH_.product();
69  const GEMCoPadDigiCollection& gemCoPads = *gemCoPadsH_.product();
70 
71  clear();
72 
73  // hard cut on non-GEM muons
74  if (std::abs(t.momentum().eta()) < 1.55)
75  return;
76 
77  // now match the digis
78  if (matchToSimLink_) {
79  const edm::DetSetVector<GEMDigiSimLink>& gemDigisSL = *gemDigisSLH_.product();
80  matchDigisSLToSimTrack(gemDigisSL);
81  }
82  matchDigisToSimTrack(gemDigis);
83  matchPadsToSimTrack(gemPads);
84  matchClustersToSimTrack(gemClusters);
85  matchCoPadsToSimTrack(gemCoPads);
86 }
87 
89  if (verboseSimLink_)
90  edm::LogInfo("GEMDigiMatcher") << "Matching simtrack to GEM simlinks" << endl;
91 
92  // loop on the simlinks
93  for (auto itsimlink = digisSL.begin(); itsimlink != digisSL.end(); itsimlink++) {
94  for (auto sl = itsimlink->data.begin(); sl != itsimlink->data.end(); ++sl) {
95  GEMDetId p_id(sl->getDetUnitId());
96 
97  // ignore simlinks in non-matched chambers
98  const auto& detids(muonSimHitMatcher_->detIds());
99  if (detids.find(p_id.rawId()) == detids.end())
100  continue;
101 
102  // no simhits in this chamber!
103  if (muonSimHitMatcher_->hitsInDetId(p_id.rawId()).empty())
104  continue;
105 
106  if (verboseSimLink_)
107  edm::LogInfo("GEMDigiMatcher") << "GEMDigiSimLink " << p_id << " " << sl->getStrip() << " " << sl->getBx()
108  << " " << sl->getEnergyLoss() << " " << sl->getTimeOfFlight() << " "
109  << sl->getParticleType() << std::endl;
110 
111  // consider only the muon hits
112  if (simMuOnly_ && std::abs(sl->getParticleType()) != 13)
113  continue;
114 
115  // discard electron hits in the GEM chambers
116  if (discardEleHits_ && std::abs(sl->getParticleType()) == 11)
117  continue;
118 
119  // loop on the matched simhits
120  for (const auto& simhit : muonSimHitMatcher_->hitsInDetId(p_id.rawId())) {
121  // check if the simhit properties agree
122  if (simhit.particleType() == sl->getParticleType() and simhit.trackId() == sl->getTrackId() and
123  std::abs(simhit.energyLoss() - sl->getEnergyLoss()) < 0.001 and
124  std::abs(simhit.timeOfFlight() - sl->getTimeOfFlight()) < 0.001 and
125  simhit.entryPoint() == sl->getEntryPoint() and simhit.momentumAtEntry() == sl->getMomentumAtEntry()) {
126  detid_to_simLinks_[p_id.rawId()].push_back(*sl);
127  if (verboseSimLink_)
128  edm::LogInfo("GEMDigiMatcher") << "...was matched!" << endl;
129  break;
130  }
131  }
132  }
133  }
134 }
135 
137  if (verboseDigi_)
138  edm::LogInfo("GEMDigiMatcher") << "Matching simtrack to GEM digis" << endl;
139  for (auto id : muonSimHitMatcher_->detIds()) {
140  GEMDetId p_id(id);
141  const auto& hit_strips = muonSimHitMatcher_->hitStripsInDetId(id, matchDeltaStrip_);
142  const auto& digis_in_det = digis.get(p_id);
143 
144  for (auto d = digis_in_det.first; d != digis_in_det.second; ++d) {
145  bool isMatched = false;
146 
147  // check that the digi is within BX range
148  if (d->bx() < minBXDigi_ || d->bx() > maxBXDigi_)
149  continue;
150 
151  if (verboseDigi_)
152  edm::LogInfo("GEMDigiMatcher") << "GEMDigi " << p_id << " " << *d << endl;
153 
154  // GEN-SIM-DIGI-RAW monte carlo
155  if (matchToSimLink_) {
156  // check that the digi matches to at least one GEMDigiSimLink
157  for (const auto& sl : detid_to_simLinks_[p_id.rawId()]) {
158  if (sl.getStrip() == d->strip() and sl.getBx() == d->bx()) {
159  isMatched = true;
160  break;
161  }
162  }
163  }
164  // GEN-SIM-RAW monte carlo
165  else {
166  // check that it matches a strip that was hit by SimHits from our track
167  if (hit_strips.find(d->strip()) != hit_strips.end()) {
168  isMatched = true;
169  }
170  }
171  if (isMatched) {
172  detid_to_digis_[p_id.rawId()].push_back(*d);
173  chamber_to_digis_[p_id.chamberId().rawId()].push_back(*d);
174  superchamber_to_digis_[p_id.superChamberId().rawId()].push_back(*d);
175  if (verboseDigi_)
176  edm::LogInfo("GEMDigiMatcher") << "...was matched!" << endl;
177  }
178  }
179  }
180 }
182  const auto& det_ids = muonSimHitMatcher_->detIds();
183  for (const auto& id : det_ids) {
184  GEMDetId p_id(id);
185 
186  const auto& pads_in_det = pads.get(p_id);
187 
188  for (auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) {
189  // ignore 16-partition GE2/1 pads
190  if (p_id.isGE21() and pad->nPartitions() == GEMPadDigi::GE21SplitStrip)
191  continue;
192 
193  // check that the pad BX is within the range
194  if (pad->bx() < minBXPad_ || pad->bx() > maxBXPad_)
195  continue;
196 
197  if (verbosePad_)
198  edm::LogInfo("GEMDigiMatcher") << "GEMPad " << p_id << " " << *pad << endl;
199 
200  // check that it matches a pad that was hit by SimHits from our track
201  for (auto digi : detid_to_digis_[p_id.rawId()]) {
202  if (digi.strip() / 2 == pad->pad()) {
203  detid_to_pads_[p_id.rawId()].push_back(*pad);
204  chamber_to_pads_[p_id.chamberId().rawId()].push_back(*pad);
205  superchamber_to_pads_[p_id.superChamberId().rawId()].push_back(*pad);
206  if (verbosePad_)
207  edm::LogInfo("GEMDigiMatcher") << "...was matched!" << endl;
208  break;
209  }
210  }
211  }
212  }
213 }
214 
216  const auto& det_ids = muonSimHitMatcher_->detIds();
217  for (auto id : det_ids) {
218  GEMDetId p_id(id);
219 
220  auto clusters_in_det = clusters.get(p_id);
221 
222  for (auto cluster = clusters_in_det.first; cluster != clusters_in_det.second; ++cluster) {
223  bool isMatched;
224 
225  // ignore 16-partition GE2/1 pads
226  if (p_id.isGE21() and cluster->nPartitions() == GEMPadDigiCluster::GE21SplitStrip)
227  continue;
228 
229  // check that the cluster BX is within the range
230  if (cluster->bx() < minBXCluster_ || cluster->bx() > maxBXCluster_)
231  continue;
232 
233  if (verboseCluster_)
234  edm::LogInfo("GEMDigiMatcher") << "GEMCluster " << p_id << " " << *cluster << endl;
235 
236  // check that at least one pad was hit by the track
237  for (const auto& p : cluster->pads()) {
238  for (auto pad : detid_to_pads_[id]) {
239  if (pad.pad() == p) {
240  isMatched = true;
241  }
242  }
243  }
244  if (isMatched) {
245  detid_to_clusters_[id].push_back(*cluster);
246  chamber_to_clusters_[p_id.chamberId().rawId()].push_back(*cluster);
247  superchamber_to_clusters_[p_id.superChamberId().rawId()].push_back(*cluster);
248  if (verboseCluster_)
249  edm::LogInfo("GEMDigiMatcher") << "...was matched!" << endl;
250  }
251  }
252  }
253 }
254 
256  // loop on the GEM detids
257  for (auto d : superChamberIdsPad()) {
258  GEMDetId id(d);
259 
260  const auto& co_pads_in_det = co_pads.get(id);
261  for (auto copad = co_pads_in_det.first; copad != co_pads_in_det.second; ++copad) {
262  // check that the cluster BX is within the range
263  if (copad->bx(1) < minBXCoPad_ || copad->bx(1) > maxBXCoPad_)
264  continue;
265 
266  if (verboseCoPad_)
267  edm::LogInfo("GEMDigiMatcher") << "GEMCoPadDigi: " << id << " " << *copad << endl;
268 
269  bool isMatchedL1 = false;
270  bool isMatchedL2 = false;
271  GEMDetId gemL1_id(id.region(), 1, id.station(), 1, id.chamber(), copad->roll());
272  GEMDetId gemL2_id(id.region(), 1, id.station(), 2, id.chamber(), 0);
273 
274  // first pad is tightly matched
275  for (const auto& p : padsInDetId(gemL1_id.rawId())) {
276  if (p == copad->first()) {
277  isMatchedL1 = true;
278  }
279  }
280 
281  // second pad can only be loosely matched
282  for (const auto& p : padsInChamber(gemL2_id.rawId())) {
283  if (p == copad->second()) {
284  isMatchedL2 = true;
285  }
286  }
287  if (isMatchedL1 and isMatchedL2) {
288  superchamber_to_copads_[id.rawId()].push_back(*copad);
289  if (verboseCoPad_)
290  edm::LogInfo("GEMDigiMatcher") << "...was matched! " << endl;
291  }
292  }
293  }
294 }
295 
296 std::set<unsigned int> GEMDigiMatcher::detIdsSimLink(int gem_type) const {
297  return selectDetIds(detid_to_simLinks_, gem_type);
298 }
299 
300 std::set<unsigned int> GEMDigiMatcher::detIdsDigi(int gem_type) const {
301  return selectDetIds(detid_to_digis_, gem_type);
302 }
303 
304 std::set<unsigned int> GEMDigiMatcher::detIdsPad(int gem_type) const { return selectDetIds(detid_to_pads_, gem_type); }
305 
306 std::set<unsigned int> GEMDigiMatcher::detIdsCluster(int gem_type) const {
307  return selectDetIds(detid_to_clusters_, gem_type);
308 }
309 
310 std::set<unsigned int> GEMDigiMatcher::chamberIdsDigi(int gem_type) const {
311  return selectDetIds(chamber_to_digis_, gem_type);
312 }
313 
314 std::set<unsigned int> GEMDigiMatcher::chamberIdsPad(int gem_type) const {
315  return selectDetIds(chamber_to_pads_, gem_type);
316 }
317 
318 std::set<unsigned int> GEMDigiMatcher::chamberIdsCluster(int gem_type) const {
319  return selectDetIds(chamber_to_clusters_, gem_type);
320 }
321 
322 std::set<unsigned int> GEMDigiMatcher::superChamberIdsDigi(int gem_type) const {
323  return selectDetIds(superchamber_to_digis_, gem_type);
324 }
325 
326 std::set<unsigned int> GEMDigiMatcher::superChamberIdsPad(int gem_type) const {
327  return selectDetIds(superchamber_to_pads_, gem_type);
328 }
329 
330 std::set<unsigned int> GEMDigiMatcher::superChamberIdsCluster(int gem_type) const {
331  return selectDetIds(superchamber_to_clusters_, gem_type);
332 }
333 
334 std::set<unsigned int> GEMDigiMatcher::superChamberIdsCoPad(int gem_type) const {
335  return selectDetIds(superchamber_to_copads_, gem_type);
336 }
337 
338 const GEMDigiContainer& GEMDigiMatcher::digisInDetId(unsigned int detid) const {
339  if (detid_to_digis_.find(detid) == detid_to_digis_.end())
340  return no_gem_digis_;
341  return detid_to_digis_.at(detid);
342 }
343 
344 const GEMDigiContainer& GEMDigiMatcher::digisInChamber(unsigned int detid) const {
345  if (chamber_to_digis_.find(detid) == chamber_to_digis_.end())
346  return no_gem_digis_;
347  return chamber_to_digis_.at(detid);
348 }
349 
350 const GEMDigiContainer& GEMDigiMatcher::digisInSuperChamber(unsigned int detid) const {
351  if (superchamber_to_digis_.find(detid) == superchamber_to_digis_.end())
352  return no_gem_digis_;
353  return superchamber_to_digis_.at(detid);
354 }
355 
356 const GEMPadDigiContainer& GEMDigiMatcher::padsInDetId(unsigned int detid) const {
357  if (detid_to_pads_.find(detid) == detid_to_pads_.end())
358  return no_gem_pads_;
359  return detid_to_pads_.at(detid);
360 }
361 
362 const GEMPadDigiContainer& GEMDigiMatcher::padsInChamber(unsigned int detid) const {
363  if (chamber_to_pads_.find(detid) == chamber_to_pads_.end())
364  return no_gem_pads_;
365  return chamber_to_pads_.at(detid);
366 }
367 
368 const GEMPadDigiContainer& GEMDigiMatcher::padsInSuperChamber(unsigned int detid) const {
369  if (superchamber_to_pads_.find(detid) == superchamber_to_pads_.end())
370  return no_gem_pads_;
371  return superchamber_to_pads_.at(detid);
372 }
373 
375  if (detid_to_clusters_.find(detid) == detid_to_clusters_.end())
376  return no_gem_clusters_;
377  return detid_to_clusters_.at(detid);
378 }
379 
381  if (chamber_to_clusters_.find(detid) == chamber_to_clusters_.end())
382  return no_gem_clusters_;
383  return chamber_to_clusters_.at(detid);
384 }
385 
387  if (superchamber_to_clusters_.find(detid) == superchamber_to_clusters_.end())
388  return no_gem_clusters_;
389  return superchamber_to_clusters_.at(detid);
390 }
391 
393  if (superchamber_to_copads_.find(detid) == superchamber_to_copads_.end())
394  return no_gem_copads_;
395  return superchamber_to_copads_.at(detid);
396 }
397 
398 int GEMDigiMatcher::nLayersWithDigisInSuperChamber(unsigned int detid) const {
399  set<int> layers;
400  GEMDetId sch_id(detid);
401  for (int iLayer = 1; iLayer <= 2; iLayer++) {
402  GEMDetId ch_id(sch_id.region(), sch_id.ring(), sch_id.station(), iLayer, sch_id.chamber(), 0);
403  // get the digis in this chamber
404  const auto& digis = digisInChamber(ch_id.rawId());
405  // at least one digi in this layer!
406  if (!digis.empty()) {
407  layers.insert(iLayer);
408  }
409  }
410  return layers.size();
411 }
412 
413 int GEMDigiMatcher::nLayersWithPadsInSuperChamber(unsigned int detid) const {
414  set<int> layers;
415  GEMDetId sch_id(detid);
416  for (int iLayer = 1; iLayer <= 2; iLayer++) {
417  GEMDetId ch_id(sch_id.region(), sch_id.ring(), sch_id.station(), iLayer, sch_id.chamber(), 0);
418  // get the pads in this chamber
419  const auto& pads = padsInChamber(ch_id.rawId());
420  // at least one digi in this layer!
421  if (!pads.empty()) {
422  layers.insert(iLayer);
423  }
424  }
425  return layers.size();
426 }
427 
429  set<int> layers;
430  GEMDetId sch_id(detid);
431  for (int iLayer = 1; iLayer <= 2; iLayer++) {
432  GEMDetId ch_id(sch_id.region(), sch_id.ring(), sch_id.station(), iLayer, sch_id.chamber(), 0);
433  // get the pads in this chamber
434  const auto& clusters = clustersInChamber(ch_id.rawId());
435  // at least one digi in this layer!
436  if (!clusters.empty()) {
437  layers.insert(iLayer);
438  }
439  }
440  return layers.size();
441 }
442 
444  int n = 0;
445  const auto& ids = superChamberIdsPad();
446  for (const auto& id : ids) {
447  n += padsInSuperChamber(id).size();
448  }
449  return n;
450 }
451 
453  int n = 0;
454  const auto& ids = superChamberIdsCoPad();
455  for (const auto& id : ids) {
456  n += coPadsInSuperChamber(id).size();
457  }
458  return n;
459 }
460 
461 std::set<int> GEMDigiMatcher::stripNumbersInDetId(unsigned int detid) const {
462  set<int> result;
463  const auto& digis = digisInDetId(detid);
464  for (const auto& d : digis) {
465  result.insert(d.strip());
466  }
467  return result;
468 }
469 
470 std::set<int> GEMDigiMatcher::padNumbersInDetId(unsigned int detid) const {
471  set<int> result;
472  const auto& digis = padsInDetId(detid);
473  for (const auto& d : digis) {
474  result.insert(d.pad());
475  }
476  return result;
477 }
478 
479 std::set<int> GEMDigiMatcher::partitionNumbers() const {
480  std::set<int> result;
481 
482  const auto& detids = detIdsDigi();
483  for (const auto& id : detids) {
484  const GEMDetId& idd(id);
485  result.insert(idd.roll());
486  }
487  return result;
488 }
489 
491  std::set<int> result;
492 
493  const auto& detids = superChamberIdsCoPad();
494  for (const auto& id : detids) {
495  const GEMDetId& idd(id);
496  result.insert(idd.roll());
497  }
498  return result;
499 }
500 
501 GlobalPoint GEMDigiMatcher::getGlobalPointDigi(unsigned int rawId, const GEMDigi& d) const {
502  GEMDetId gem_id(rawId);
503  const LocalPoint& gem_lp = gemGeometry_->etaPartition(gem_id)->centreOfStrip(d.strip());
504  const GlobalPoint& gem_gp = gemGeometry_->idToDet(gem_id)->surface().toGlobal(gem_lp);
505  return gem_gp;
506 }
507 
508 GlobalPoint GEMDigiMatcher::getGlobalPointPad(unsigned int rawId, const GEMPadDigi& tp) const {
509  GEMDetId gem_id(rawId);
510  const LocalPoint& gem_lp = gemGeometry_->etaPartition(gem_id)->centreOfPad(tp.pad());
511  const GlobalPoint& gem_gp = gemGeometry_->idToDet(gem_id)->surface().toGlobal(gem_lp);
512  return gem_gp;
513 }
514 
516  detid_to_simLinks_.clear();
517 
518  detid_to_digis_.clear();
519  chamber_to_digis_.clear();
520  superchamber_to_digis_.clear();
521 
522  detid_to_pads_.clear();
523  chamber_to_pads_.clear();
524  superchamber_to_pads_.clear();
525 
526  detid_to_clusters_.clear();
527  chamber_to_clusters_.clear();
528  superchamber_to_clusters_.clear();
529 
530  superchamber_to_copads_.clear();
531 }
edm::DetSetVector
Definition: DetSetVector.h:61
GEMDigiMatcher::GEMDigiMatcher
GEMDigiMatcher(edm::ParameterSet const &iPS, edm::ConsumesCollector &&iC)
Definition: GEMDigiMatcher.cc:5
GEMDigiMatcher::match
void match(const SimTrack &t, const SimVertex &v)
do the matching
Definition: GEMDigiMatcher.cc:61
GEMDetId::isGE21
bool isGE21() const
Definition: GEMDetId.cc:11
SimVertex
Definition: SimVertex.h:5
GEMCoPadDigiCollection
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
GEMDetId::ring
constexpr int ring() const
Definition: GEMDetId.h:176
GEMDigiMatcher::superChamberIdsCoPad
std::set< unsigned int > superChamberIdsCoPad(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:334
edm::DetSetVector::end
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
GEMPadDigi
Definition: GEMPadDigi.h:17
GEMDigiMatcher.h
GEMDigiMatcher::chamberIdsDigi
std::set< unsigned int > chamberIdsDigi(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:310
GEMDigiMatcher::init
void init(const edm::Event &e, const edm::EventSetup &eventSetup)
Definition: GEMDigiMatcher.cc:47
GEMDigiMatcher::nCoPads
int nCoPads() const
How many coincidence pads in GEM did this simtrack get in total?
Definition: GEMDigiMatcher.cc:452
GEMDigiMatcher::detIdsSimLink
std::set< unsigned int > detIdsSimLink(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:296
GEMDetId::region
constexpr int region() const
Definition: GEMDetId.h:171
relativeConstraints.station
station
Definition: relativeConstraints.py:67
GEMDigiMatcher::digisInChamber
const GEMDigiContainer & digisInChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:344
GEMDigiMatcher::matchDigisToSimTrack
void matchDigisToSimTrack(const GEMDigiCollection &)
Definition: GEMDigiMatcher.cc:136
GEMDigiMatcher::digisInSuperChamber
const GEMDigiContainer & digisInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:350
GEMCoPadDigiContainer
std::vector< GEMCoPadDigi > GEMCoPadDigiContainer
Definition: GEMDigiMatcher.h:29
GEMPadDigiClusterContainer
std::vector< GEMPadDigiCluster > GEMPadDigiClusterContainer
Definition: GEMDigiMatcher.h:28
GEMDetId::superChamberId
constexpr GEMDetId superChamberId() const
Definition: GEMDetId.h:207
edm::DetSetVector::begin
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
GEMDigiMatcher::padsInChamber
const GEMPadDigiContainer & padsInChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:362
GEMDigiContainer
std::vector< GEMDigi > GEMDigiContainer
Definition: GEMDigiMatcher.h:26
GEMDigiMatcher::partitionNumbers
std::set< int > partitionNumbers() const
Definition: GEMDigiMatcher.cc:479
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
findQualityFiles.v
v
Definition: findQualityFiles.py:179
GEMDigiMatcher::matchCoPadsToSimTrack
void matchCoPadsToSimTrack(const GEMCoPadDigiCollection &)
Definition: GEMDigiMatcher.cc:255
GEMPadDigi::GE21SplitStrip
Definition: GEMPadDigi.h:22
GEMDigiMatcher::matchPadsToSimTrack
void matchPadsToSimTrack(const GEMPadDigiCollection &)
Definition: GEMDigiMatcher.cc:181
GEMDigiMatcher::clear
void clear()
Definition: GEMDigiMatcher.cc:515
GEMPadDigiCollection
GEMDigiMatcher::clustersInChamber
const GEMPadDigiClusterContainer & clustersInChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:380
GEMDigiMatcher::digisInDetId
const GEMDigiContainer & digisInDetId(unsigned int) const
Definition: GEMDigiMatcher.cc:338
Point3DBase< float, GlobalTag >
GEMPadDigiClusterCollection
GEMPadDigiContainer
std::vector< GEMPadDigi > GEMPadDigiContainer
Definition: GEMDigiMatcher.h:27
GEMDigiMatcher::matchDigisSLToSimTrack
void matchDigisSLToSimTrack(const edm::DetSetVector< GEMDigiSimLink > &)
Definition: GEMDigiMatcher.cc:88
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
GEMDigiMatcher::padNumbersInDetId
std::set< int > padNumbersInDetId(unsigned int) const
Definition: GEMDigiMatcher.cc:470
GEMDigiMatcher::detIdsCluster
std::set< unsigned int > detIdsCluster(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:306
GEMDigiMatcher::partitionNumbersWithCoPads
std::set< int > partitionNumbersWithCoPads() const
Definition: GEMDigiMatcher.cc:490
GEMDigiMatcher::matchClustersToSimTrack
void matchClustersToSimTrack(const GEMPadDigiClusterCollection &)
Definition: GEMDigiMatcher.cc:215
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
GEMDetId::chamber
constexpr int chamber() const
Definition: GEMDetId.h:183
trackerHitRTTI::isMatched
bool isMatched(TrackingRecHit const &hit)
Definition: trackerHitRTTI.h:33
GEMDigiMatcher::superChamberIdsPad
std::set< unsigned int > superChamberIdsPad(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:326
edm::ParameterSet
Definition: ParameterSet.h:47
clear
void clear(HadCaloObj &c)
Definition: data.h:124
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
GEMSimHitMatcher
Definition: GEMSimHitMatcher.h:16
GEMDetId::roll
constexpr int roll() const
Definition: GEMDetId.h:194
GEMDetId
Definition: GEMDetId.h:18
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88286
iEvent
int iEvent
Definition: GenABIO.cc:224
GEMDigiMatcher::nLayersWithClustersInSuperChamber
int nLayersWithClustersInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:428
GEMDigiMatcher::chamberIdsCluster
std::set< unsigned int > chamberIdsCluster(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:318
GEMDigiMatcher::nLayersWithDigisInSuperChamber
int nLayersWithDigisInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:398
GEMDigi
Definition: GEMDigi.h:15
GEMDigiMatcher::detIdsPad
std::set< unsigned int > detIdsPad(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:304
edm::EventSetup
Definition: EventSetup.h:58
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
GEMDigiMatcher::chamberIdsPad
std::set< unsigned int > chamberIdsPad(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:314
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
GEMDigiMatcher::coPadsInSuperChamber
const GEMCoPadDigiContainer & coPadsInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:392
GEMDigiMatcher::detIdsDigi
std::set< unsigned int > detIdsDigi(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:300
SimTrack
Definition: SimTrack.h:9
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
GEMDigiMatcher::nLayersWithPadsInSuperChamber
int nLayersWithPadsInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:413
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
GEMDigiMatcher::clustersInSuperChamber
const GEMPadDigiClusterContainer & clustersInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:386
GEMDigiCollection
GEMDetId::chamberId
constexpr GEMDetId chamberId() const
Definition: GEMDetId.h:204
GEMPadDigiCluster::GE21SplitStrip
Definition: GEMPadDigiCluster.h:24
GEMDigiMatcher::stripNumbersInDetId
std::set< int > stripNumbersInDetId(unsigned int) const
Definition: GEMDigiMatcher.cc:461
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
GEMDigiMatcher::getGlobalPointPad
GlobalPoint getGlobalPointPad(unsigned int rawId, const GEMPadDigi &tp) const
Definition: GEMDigiMatcher.cc:508
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:179
GEMGeometry
Definition: GEMGeometry.h:24
ztail.d
d
Definition: ztail.py:151
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
GEMDigiMatcher::getGlobalPointDigi
GlobalPoint getGlobalPointDigi(unsigned int rawId, const GEMDigi &d) const
Definition: GEMDigiMatcher.cc:501
muonGEMDigiPSet.gemSimLink
gemSimLink
Definition: muonGEMDigiPSet.py:4
GEMDigiMatcher::nPads
int nPads() const
How many pads in GEM did this simtrack get in total?
Definition: GEMDigiMatcher.cc:443
GEMDigiMatcher::superChamberIdsDigi
std::set< unsigned int > superChamberIdsDigi(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:322
edm::Event
Definition: Event.h:73
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
edm::InputTag
Definition: InputTag.h:15
GEMDigiMatcher::superChamberIdsCluster
std::set< unsigned int > superChamberIdsCluster(int gem_type=MuonHitHelper::GEM_ALL) const
Definition: GEMDigiMatcher.cc:330
GEMDigiMatcher::padsInSuperChamber
const GEMPadDigiContainer & padsInSuperChamber(unsigned int) const
Definition: GEMDigiMatcher.cc:368
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
GEMDigiMatcher::clustersInDetId
const GEMPadDigiClusterContainer & clustersInDetId(unsigned int) const
Definition: GEMDigiMatcher.cc:374
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
GEMDigiMatcher::padsInDetId
const GEMPadDigiContainer & padsInDetId(unsigned int) const
Definition: GEMDigiMatcher.cc:356