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