CMS 3D CMS Logo

CSCStubMatcher.cc
Go to the documentation of this file.
3 
4 #include <algorithm>
5 
6 using namespace std;
7 
9  const auto& cscCLCT = pSet.getParameter<edm::ParameterSet>("cscCLCT");
10  minBXCLCT_ = cscCLCT.getParameter<int>("minBX");
11  maxBXCLCT_ = cscCLCT.getParameter<int>("maxBX");
12  verboseCLCT_ = cscCLCT.getParameter<int>("verbose");
13  minNHitsChamberCLCT_ = cscCLCT.getParameter<int>("minNHitsChamber");
14 
15  const auto& cscALCT = pSet.getParameter<edm::ParameterSet>("cscALCT");
16  minBXALCT_ = cscALCT.getParameter<int>("minBX");
17  maxBXALCT_ = cscALCT.getParameter<int>("maxBX");
18  verboseALCT_ = cscALCT.getParameter<int>("verbose");
19  minNHitsChamberALCT_ = cscALCT.getParameter<int>("minNHitsChamber");
20 
21  const auto& cscLCT = pSet.getParameter<edm::ParameterSet>("cscLCT");
22  minBXLCT_ = cscLCT.getParameter<int>("minBX");
23  maxBXLCT_ = cscLCT.getParameter<int>("maxBX");
24  verboseLCT_ = cscLCT.getParameter<int>("verbose");
25  minNHitsChamberLCT_ = cscLCT.getParameter<int>("minNHitsChamber");
26  hsFromSimHitMean_ = cscLCT.getParameter<bool>("hsFromSimHitMean");
27 
28  const auto& cscMPLCT = pSet.getParameter<edm::ParameterSet>("cscMPLCT");
29  minBXMPLCT_ = cscMPLCT.getParameter<int>("minBX");
30  maxBXMPLCT_ = cscMPLCT.getParameter<int>("maxBX");
31  verboseMPLCT_ = cscMPLCT.getParameter<int>("verbose");
32  minNHitsChamberMPLCT_ = cscMPLCT.getParameter<int>("minNHitsChamber");
33 
34  gemDigiMatcher_.reset(new GEMDigiMatcher(pSet, std::move(iC)));
35  cscDigiMatcher_.reset(new CSCDigiMatcher(pSet, std::move(iC)));
36 
37  clctToken_ = iC.consumes<CSCCLCTDigiCollection>(cscCLCT.getParameter<edm::InputTag>("inputTag"));
38  alctToken_ = iC.consumes<CSCALCTDigiCollection>(cscALCT.getParameter<edm::InputTag>("inputTag"));
39  lctToken_ = iC.consumes<CSCCorrelatedLCTDigiCollection>(cscLCT.getParameter<edm::InputTag>("inputTag"));
40  mplctToken_ = iC.consumes<CSCCorrelatedLCTDigiCollection>(cscMPLCT.getParameter<edm::InputTag>("inputTag"));
41 }
42 
44  gemDigiMatcher_->init(iEvent, iSetup);
45  cscDigiMatcher_->init(iEvent, iSetup);
46 
47  iEvent.getByToken(clctToken_, clctsH_);
48  iEvent.getByToken(alctToken_, alctsH_);
49  iEvent.getByToken(lctToken_, lctsH_);
50  iEvent.getByToken(mplctToken_, mplctsH_);
51 
52  iSetup.get<MuonGeometryRecord>().get(csc_geom_);
53  if (csc_geom_.isValid()) {
54  cscGeometry_ = &*csc_geom_;
55  } else {
56  std::cout << "+++ Info: CSC geometry is unavailable. +++\n";
57  }
58 }
59 
60 // do the matching
61 void CSCStubMatcher::match(const SimTrack& t, const SimVertex& v) {
62  // match simhits first
63  gemDigiMatcher_->match(t, v);
64  cscDigiMatcher_->match(t, v);
65 
66  const CSCCLCTDigiCollection& clcts = *clctsH_.product();
67  const CSCALCTDigiCollection& alcts = *alctsH_.product();
68  const CSCCorrelatedLCTDigiCollection& lcts = *lctsH_.product();
69  const CSCCorrelatedLCTDigiCollection& mplcts = *mplctsH_.product();
70 
71  matchCLCTsToSimTrack(clcts);
72  matchALCTsToSimTrack(alcts);
73  matchLCTsToSimTrack(lcts);
74  matchMPLCTsToSimTrack(mplcts);
75 }
76 
78  const auto& cathode_ids = cscDigiMatcher_->chamberIdsStrip(0);
79  int n_minLayers = 0;
80  for (const auto& id : cathode_ids) {
81  CSCDetId ch_id(id);
82  if (verboseCLCT_) {
83  cout << "To check CSC chamber " << ch_id << endl;
84  }
85  if (cscDigiMatcher_->nLayersWithStripInChamber(id) >= minNHitsChamberCLCT_)
86  ++n_minLayers;
87 
88  // fill 1 half-strip wide gaps
89  const auto& digi_strips = cscDigiMatcher_->stripsInChamber(id, 1);
90  if (verboseCLCT_) {
91  cout << "clct: digi_strips " << ch_id << " Nlayers " << cscDigiMatcher_->nLayersWithStripInChamber(id) << " ";
92  copy(digi_strips.begin(), digi_strips.end(), ostream_iterator<int>(cout, " "));
93  cout << endl;
94  }
95 
96  int ring = ch_id.ring();
97  if (ring == 4)
98  ring = 1; //use ME1b id to get CLCTs
99  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
100 
101  const auto& clcts_in_det = clcts.get(ch_id2);
102 
103  for (auto c = clcts_in_det.first; c != clcts_in_det.second; ++c) {
104  if (verboseCLCT_)
105  cout << "clct " << ch_id << " " << *c << endl;
106 
107  if (!c->isValid())
108  continue;
109 
110  // check that the BX for this stub wasn't too early or too late
111  if (c->getBX() < minBXCLCT_ || c->getBX() > maxBXCLCT_)
112  continue;
113 
114  int half_strip = c->getKeyStrip() + 1; // CLCT halfstrip numbers start from 0
115  if (ch_id.ring() == 4 and ch_id.station() == 1 and half_strip > 128)
116  half_strip = half_strip - 128;
117 
118  // store all CLCTs in this chamber
119  chamber_to_clcts_all_[id].push_back(*c);
120 
121  // match by half-strip with the digis
122  if (digi_strips.find(half_strip) == digi_strips.end()) {
123  if (verboseCLCT_)
124  cout << "clctBAD, half_strip " << half_strip << endl;
125  continue;
126  }
127  if (verboseCLCT_)
128  cout << "clctGOOD" << endl;
129 
130  // store matching CLCTs in this chamber
131  chamber_to_clcts_[id].push_back(*c);
132  }
133  if (chamber_to_clcts_[id].size() > 2) {
134  cout << "WARNING!!! too many CLCTs " << chamber_to_clcts_[id].size() << " in " << ch_id << endl;
135  for (auto& c : chamber_to_clcts_[id])
136  cout << " " << c << endl;
137  }
138  }
139 }
140 
142  const auto& anode_ids = cscDigiMatcher_->chamberIdsWire(0);
143  int n_minLayers = 0;
144  for (const auto& id : anode_ids) {
145  if (cscDigiMatcher_->nLayersWithWireInChamber(id) >= minNHitsChamberALCT_)
146  ++n_minLayers;
147  CSCDetId ch_id(id);
148 
149  // fill 1 WG wide gaps
150  const auto& digi_wgs = cscDigiMatcher_->wiregroupsInChamber(id, 1);
151  if (verboseALCT_) {
152  cout << "alct: digi_wgs " << ch_id << " ";
153  copy(digi_wgs.begin(), digi_wgs.end(), ostream_iterator<int>(cout, " "));
154  cout << endl;
155  }
156 
157  int ring = ch_id.ring();
158  if (ring == 4)
159  ring = 1; //use ME1b id to get CLCTs
160  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
161 
162  const auto& alcts_in_det = alcts.get(ch_id2);
163  for (auto a = alcts_in_det.first; a != alcts_in_det.second; ++a) {
164  if (!a->isValid())
165  continue;
166 
167  if (verboseALCT_)
168  cout << "alct " << ch_id << " " << *a << endl;
169 
170  // check that the BX for stub wasn't too early or too late
171  if (a->getBX() < minBXALCT_ || a->getBX() > maxBXALCT_)
172  continue;
173 
174  int wg = a->getKeyWG() + 1; // as ALCT wiregroups numbers start from 0
175 
176  // store all ALCTs in this chamber
177  chamber_to_alcts_all_[id].push_back(*a);
178 
179  // match by wiregroup with the digis
180  if (digi_wgs.find(wg) == digi_wgs.end()) {
181  if (verboseALCT_)
182  cout << "alctBAD" << endl;
183  continue;
184  }
185  if (verboseALCT_)
186  cout << "alctGOOD" << endl;
187 
188  // store matching ALCTs in this chamber
189  chamber_to_alcts_[id].push_back(*a);
190  }
191  if (chamber_to_alcts_[id].size() > 2) {
192  cout << "WARNING!!! too many ALCTs " << chamber_to_alcts_[id].size() << " in " << ch_id << endl;
193  for (auto& a : chamber_to_alcts_[id])
194  cout << " " << a << endl;
195  }
196  }
197 }
198 
200  // only look for stubs in chambers that already have CLCT and ALCT
201  const auto& cathode_ids = chamberIdsAllCLCT(0);
202  const auto& anode_ids = chamberIdsAllALCT(0);
203 
204  std::set<int> cathode_and_anode_ids;
205  std::set_union(cathode_ids.begin(),
206  cathode_ids.end(),
207  anode_ids.begin(),
208  anode_ids.end(),
209  std::inserter(cathode_and_anode_ids, cathode_and_anode_ids.end()));
210 
211  for (const auto& id : cathode_and_anode_ids) {
212  int iLct = -1;
213 
214  CSCDetId ch_id(id);
215 
216  //use ME1b id to get LCTs
217  int ring = ch_id.ring();
218  if (ring == 4)
219  ring = 1;
220  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
221 
222  const auto& lcts_in_det = lcts.get(ch_id2);
223 
224  // collect all LCTs in a handy container
226  for (auto lct = lcts_in_det.first; lct != lcts_in_det.second; ++lct) {
227  lcts_tmp.push_back(*lct);
228  }
229 
230  for (const auto& lct : lcts_tmp) {
231  iLct++;
232 
233  bool lct_matched(false);
234  bool lct_clct_match(false);
235  bool lct_alct_match(false);
236  bool lct_gem1_match(false);
237  bool lct_gem2_match(false);
238 
239  if (verboseLCT_)
240  cout << "in LCT, getCLCT " << lct.getCLCT() << " getALCT " << lct.getALCT() << endl;
241 
242  // Check if matched to an CLCT
243  for (const auto& p : clctsInChamber(id)) {
244  if (p == lct.getCLCT()) {
245  lct_clct_match = true;
246  break;
247  }
248  }
249 
250  // Check if matched to an ALCT
251  for (const auto& p : alctsInChamber(id)) {
252  if (p == lct.getALCT()) {
253  lct_alct_match = true;
254  break;
255  }
256  }
257 
258  // fixME here: double check the timing of GEMPad
259  if (ch_id.ring() == 1 and (ch_id.station() == 1 or ch_id.station() == 2)) {
260  // Check if matched to an GEM pad L1
261  const GEMDetId gemDetIdL1(ch_id.zendcap(), 1, ch_id.station(), 1, ch_id.chamber(), 0);
262  for (const auto& p : gemDigiMatcher_->padsInChamber(gemDetIdL1.rawId())) {
263  if (p == lct.getGEM1()) {
264  lct_gem1_match = true;
265  break;
266  }
267  }
268 
269  // Check if matched to an GEM pad L2
270  const GEMDetId gemDetIdL2(ch_id.zendcap(), 1, ch_id.station(), 2, ch_id.chamber(), 0);
271  for (const auto& p : gemDigiMatcher_->padsInChamber(gemDetIdL2.rawId())) {
272  if (p == lct.getGEM2()) {
273  lct_gem2_match = true;
274  break;
275  }
276  }
277  }
278 
279  lct_matched = ((lct_clct_match and lct_alct_match) or (lct_alct_match and lct_gem1_match and lct_gem2_match) or
280  (lct_clct_match and lct_gem1_match and lct_gem2_match));
281 
282  if (lct_matched) {
283  if (verboseLCT_)
284  cout << "this LCT matched to simtrack in chamber " << ch_id << endl;
285  chamber_to_lcts_[id].emplace_back(lct);
286  }
287  } // lct loop over
288  }
289 }
290 
292  // match simtrack to MPC LCT by looking only in chambers
293  // that already have LCTs matched to this simtrack
294  const auto& lcts_ids = chamberIdsLCT(0);
295 
296  // loop on the detids
297  for (const auto& id : lcts_ids) {
298  const auto& mplcts_in_det = mplcts.get(id);
299 
300  // loop on the MPC LCTs in this detid
301  for (auto lct = mplcts_in_det.first; lct != mplcts_in_det.second; ++lct) {
302  if (!lct->isValid())
303  continue;
304 
305  // std::cout << "MPC Stub ALL " << *lct << std::endl;
306  chamber_to_mplcts_all_[id].emplace_back(*lct);
307 
308  // check if this stub corresponds with a previously matched stub
309  for (const auto& sim_stub : lctsInChamber(id)) {
310  if (sim_stub == *lct) {
311  chamber_to_mplcts_[id].emplace_back(*lct);
312  }
313  }
314  }
315  }
316 }
317 
318 std::set<unsigned int> CSCStubMatcher::chamberIdsAllCLCT(int csc_type) const {
319  return selectDetIds(chamber_to_clcts_all_, csc_type);
320 }
321 
322 std::set<unsigned int> CSCStubMatcher::chamberIdsAllALCT(int csc_type) const {
323  return selectDetIds(chamber_to_alcts_all_, csc_type);
324 }
325 
326 std::set<unsigned int> CSCStubMatcher::chamberIdsAllLCT(int csc_type) const {
327  return selectDetIds(chamber_to_lcts_all_, csc_type);
328 }
329 
330 std::set<unsigned int> CSCStubMatcher::chamberIdsAllMPLCT(int csc_type) const {
331  return selectDetIds(chamber_to_mplcts_all_, csc_type);
332 }
333 
334 std::set<unsigned int> CSCStubMatcher::chamberIdsCLCT(int csc_type) const {
335  return selectDetIds(chamber_to_clcts_, csc_type);
336 }
337 
338 std::set<unsigned int> CSCStubMatcher::chamberIdsALCT(int csc_type) const {
339  return selectDetIds(chamber_to_alcts_, csc_type);
340 }
341 
342 std::set<unsigned int> CSCStubMatcher::chamberIdsLCT(int csc_type) const {
343  return selectDetIds(chamber_to_lcts_, csc_type);
344 }
345 
346 std::set<unsigned int> CSCStubMatcher::chamberIdsMPLCT(int csc_type) const {
347  return selectDetIds(chamber_to_mplcts_, csc_type);
348 }
349 
350 const CSCCLCTDigiContainer& CSCStubMatcher::allCLCTsInChamber(unsigned int detid) const {
351  if (chamber_to_clcts_all_.find(detid) == chamber_to_clcts_all_.end())
352  return no_clcts_;
353  return chamber_to_clcts_all_.at(detid);
354 }
355 
356 const CSCALCTDigiContainer& CSCStubMatcher::allALCTsInChamber(unsigned int detid) const {
357  if (chamber_to_alcts_all_.find(detid) == chamber_to_alcts_all_.end())
358  return no_alcts_;
359  return chamber_to_alcts_all_.at(detid);
360 }
361 
363  if (chamber_to_lcts_all_.find(detid) == chamber_to_lcts_all_.end())
364  return no_lcts_;
365  return chamber_to_lcts_all_.at(detid);
366 }
367 
369  if (chamber_to_mplcts_all_.find(detid) == chamber_to_mplcts_all_.end())
370  return no_mplcts_;
371  return chamber_to_mplcts_all_.at(detid);
372 }
373 
374 const CSCCLCTDigiContainer& CSCStubMatcher::clctsInChamber(unsigned int detid) const {
375  if (chamber_to_clcts_.find(detid) == chamber_to_clcts_.end())
376  return no_clcts_;
377  return chamber_to_clcts_.at(detid);
378 }
379 
380 const CSCALCTDigiContainer& CSCStubMatcher::alctsInChamber(unsigned int detid) const {
381  if (chamber_to_alcts_.find(detid) == chamber_to_alcts_.end())
382  return no_alcts_;
383  return chamber_to_alcts_.at(detid);
384 }
385 
387  if (chamber_to_lcts_.find(detid) == chamber_to_lcts_.end())
388  return no_lcts_;
389  return chamber_to_lcts_.at(detid);
390 }
391 
393  if (chamber_to_mplcts_.find(detid) == chamber_to_mplcts_.end())
394  return no_mplcts_;
395  return chamber_to_mplcts_.at(detid);
396 }
397 
399  //sort stubs based on quality
400  const auto& input(clctsInChamber(detid));
401  int bestQ = 0;
402  int index = -1;
403  for (unsigned int i = 0; i < input.size(); ++i) {
404  int quality = input[i].getQuality();
405  if (quality > bestQ) {
406  bestQ = quality;
407  index = i;
408  }
409  }
410  if (index != -1)
411  return input[index];
412  return CSCCLCTDigi();
413 }
414 
416  //sort stubs based on quality
417  const auto& input(alctsInChamber(detid));
418  int bestQ = 0;
419  int index = -1;
420  for (unsigned int i = 0; i < input.size(); ++i) {
421  int quality = input[i].getQuality();
422  if (quality > bestQ) {
423  bestQ = quality;
424  index = i;
425  }
426  }
427  if (index != -1)
428  return input[index];
429  return CSCALCTDigi();
430 }
431 
433  //sort stubs based on quality
434  const auto& input(lctsInChamber(detid));
435  int bestQ = 0;
436  int index = -1;
437  for (unsigned int i = 0; i < input.size(); ++i) {
438  int quality = input[i].getQuality();
439  if (quality > bestQ) {
440  bestQ = quality;
441  index = i;
442  }
443  }
444  if (index != -1)
445  return input[index];
446  return CSCCorrelatedLCTDigi();
447 }
448 
449 float CSCStubMatcher::zpositionOfLayer(unsigned int detid, int layer) const {
450  const auto& id = CSCDetId(detid);
451  const auto& chamber(cscGeometry_->chamber(id));
452  return fabs(chamber->layer(layer)->centerOfStrip(20).z());
453 }
454 
455 int CSCStubMatcher::nChambersWithCLCT(int min_quality) const {
456  int result = 0;
457  const auto& chamber_ids = chamberIdsCLCT();
458  for (const auto& id : chamber_ids) {
459  int nStubChamber = 0;
460  const auto& clcts = clctsInChamber(id);
461  for (const auto& clct : clcts) {
462  if (!clct.isValid())
463  continue;
464  if (clct.getQuality() >= min_quality) {
465  nStubChamber++;
466  }
467  }
468  if (nStubChamber > 0) {
469  ++result;
470  }
471  }
472  return result;
473 }
474 
475 int CSCStubMatcher::nChambersWithALCT(int min_quality) const {
476  int result = 0;
477  const auto& chamber_ids = chamberIdsALCT();
478  for (const auto& id : chamber_ids) {
479  int nStubChamber = 0;
480  const auto& alcts = alctsInChamber(id);
481  for (const auto& alct : alcts) {
482  if (!alct.isValid())
483  continue;
484  if (alct.getQuality() >= min_quality) {
485  nStubChamber++;
486  }
487  }
488  if (nStubChamber > 0) {
489  ++result;
490  }
491  }
492  return result;
493 }
494 
495 int CSCStubMatcher::nChambersWithLCT(int min_quality) const {
496  int result = 0;
497  const auto& chamber_ids = chamberIdsLCT();
498  for (const auto& id : chamber_ids) {
499  int nStubChamber = 0;
500  const auto& lcts = lctsInChamber(id);
501  for (const auto& lct : lcts) {
502  if (!lct.isValid())
503  continue;
504  if (lct.getQuality() >= min_quality) {
505  nStubChamber++;
506  }
507  }
508  if (nStubChamber > 0) {
509  ++result;
510  }
511  }
512  return result;
513 }
514 
515 int CSCStubMatcher::nChambersWithMPLCT(int min_quality) const {
516  int result = 0;
517  const auto& chamber_ids = chamberIdsMPLCT();
518  for (const auto& id : chamber_ids) {
519  int nStubChamber = 0;
520  const auto& mplcts = mplctsInChamber(id);
521  for (const auto& mplct : mplcts) {
522  if (!mplct.isValid())
523  continue;
524  if (mplct.getQuality() >= min_quality) {
525  nStubChamber++;
526  }
527  }
528  if (nStubChamber > 0) {
529  ++result;
530  }
531  }
532  return result;
533 }
534 
535 bool CSCStubMatcher::lctInChamber(const CSCDetId& id, const CSCCorrelatedLCTDigi& lct) const {
536  for (const auto& stub : lctsInChamber(id.rawId())) {
537  if (stub == lct)
538  return true;
539  }
540  return false;
541 }
542 
544  CSCDetId cscId(rawId);
545  CSCDetId key_id(cscId.endcap(), cscId.station(), cscId.ring(), cscId.chamber(), CSCConstants::KEY_CLCT_LAYER);
546  const auto& chamber = cscGeometry_->chamber(cscId);
547  float fractional_strip = lct.getFractionalStrip();
548  const auto& layer_geo = chamber->layer(CSCConstants::KEY_CLCT_LAYER)->geometry();
549  // LCT::getKeyWG() also starts from 0
550  float wire = layer_geo->middleWireOfGroup(lct.getKeyWG() + 1);
551  const LocalPoint& csc_intersect = layer_geo->intersectionOfStripAndWire(fractional_strip, wire);
552  const GlobalPoint& csc_gp = cscGeometry_->idToDet(key_id)->surface().toGlobal(csc_intersect);
553  return csc_gp;
554 }
CSCStubMatcher::allLCTsInChamber
const CSCCorrelatedLCTDigiContainer & allLCTsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:362
mps_fire.i
i
Definition: mps_fire.py:355
CSCStubMatcher::bestAlctInChamber
CSCALCTDigi bestAlctInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:415
CSCStubMatcher::alctsInChamber
const CSCALCTDigiContainer & alctsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:380
input
static const std::string input
Definition: EdmProvDump.cc:48
SimVertex
Definition: SimVertex.h:5
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
CSCStubMatcher::getGlobalPosition
GlobalPoint getGlobalPosition(unsigned int rawId, const CSCCorrelatedLCTDigi &lct) const
Definition: CSCStubMatcher.cc:543
CSCDetId::ring
int ring() const
Definition: CSCDetId.h:68
CSCDetId::zendcap
short int zendcap() const
Definition: CSCDetId.h:91
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
gather_cfg.cout
cout
Definition: gather_cfg.py:144
CSCCorrelatedLCTDigi::getKeyWG
uint16_t getKeyWG() const
return the key wire group. counts from 0.
Definition: CSCCorrelatedLCTDigi.h:56
CSCStubMatcher::lctsInChamber
const CSCCorrelatedLCTDigiContainer & lctsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:386
GEMDigiMatcher
Definition: GEMDigiMatcher.h:28
CSCStubMatcher::nChambersWithLCT
int nChambersWithLCT(int min_quality=0) const
Definition: CSCStubMatcher.cc:495
CSCCorrelatedLCTDigiContainer
std::vector< CSCCorrelatedLCTDigi > CSCCorrelatedLCTDigiContainer
Definition: CSCStubMatcher.h:20
CSCCorrelatedLCTDigi::getFractionalStrip
float getFractionalStrip(uint16_t n=2) const
return the fractional strip. counts from 0.25
Definition: CSCCorrelatedLCTDigi.cc:102
findQualityFiles.v
v
Definition: findQualityFiles.py:179
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCStubMatcher::nChambersWithMPLCT
int nChambersWithMPLCT(int min_quality=0) const
Definition: CSCStubMatcher.cc:515
std::size
constexpr auto size(const C &c) -> decltype(c.size())
Definition: cuda_cxx17.h:13
CSCStubMatcher::bestClctInChamber
CSCCLCTDigi bestClctInChamber(unsigned int) const
best matching from a particular crossed chamber
Definition: CSCStubMatcher.cc:398
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
CSCStubMatcher::allCLCTsInChamber
const CSCCLCTDigiContainer & allCLCTsInChamber(unsigned int) const
all stubs (not necessarily matching) from a particular crossed chamber
Definition: CSCStubMatcher.cc:350
CSCStubMatcher::bestLctInChamber
CSCCorrelatedLCTDigi bestLctInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:432
CSCConstants.h
CSCStubMatcher::clctsInChamber
const CSCCLCTDigiContainer & clctsInChamber(unsigned int) const
all matching from a particular crossed chamber
Definition: CSCStubMatcher.cc:374
Point3DBase< float, GlobalTag >
CSCStubMatcher::allMPLCTsInChamber
const CSCCorrelatedLCTDigiContainer & allMPLCTsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:368
OrderedSet.t
t
Definition: OrderedSet.py:90
CSCDigiMatcher
Definition: CSCDigiMatcher.h:25
muonCSCStubPSet.cscMPLCT
cscMPLCT
Definition: muonCSCStubPSet.py:30
CSCCLCTDigiContainer
std::vector< CSCCLCTDigi > CSCCLCTDigiContainer
Definition: CSCStubMatcher.h:19
CSCStubMatcher::matchMPLCTsToSimTrack
void matchMPLCTsToSimTrack(const CSCCorrelatedLCTDigiCollection &)
Definition: CSCStubMatcher.cc:291
CSCStubMatcher::mplctsInChamber
const CSCCorrelatedLCTDigiContainer & mplctsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:392
CSCStubMatcher::matchCLCTsToSimTrack
void matchCLCTsToSimTrack(const CSCCLCTDigiCollection &)
Definition: CSCStubMatcher.cc:77
edm::ParameterSet
Definition: ParameterSet.h:36
a
double a
Definition: hdecay.h:119
CSCStubMatcher.h
CSCStubMatcher::matchALCTsToSimTrack
void matchALCTsToSimTrack(const CSCALCTDigiCollection &)
Definition: CSCStubMatcher.cc:141
GEMDetId
Definition: GEMDetId.h:17
CSCStubMatcher::chamberIdsAllMPLCT
std::set< unsigned int > chamberIdsAllMPLCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:330
CSCDetId
Definition: CSCDetId.h:26
CSCStubMatcher::chamberIdsMPLCT
std::set< unsigned int > chamberIdsMPLCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:346
CSCStubMatcher::init
void init(const edm::Event &e, const edm::EventSetup &eventSetup)
initialize the event
Definition: CSCStubMatcher.cc:43
iEvent
int iEvent
Definition: GenABIO.cc:224
CSCStubMatcher::chamberIdsAllALCT
std::set< unsigned int > chamberIdsAllALCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:322
CSCALCTDigiCollection
CSCStubMatcher::nChambersWithCLCT
int nChambersWithCLCT(int min_quality=0) const
How many CSC chambers with matching stubs of some minimal quality did this SimTrack hit?
Definition: CSCStubMatcher.cc:455
CSCDetId::chamber
int chamber() const
Definition: CSCDetId.h:62
edm::EventSetup
Definition: EventSetup.h:57
CSCCorrelatedLCTDigiCollection
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
muonCSCStubPSet.cscCLCT
cscCLCT
Definition: muonCSCStubPSet.py:5
CSCALCTDigiContainer
std::vector< CSCALCTDigi > CSCALCTDigiContainer
Definition: CSCStubMatcher.h:18
get
#define get
muonCSCStubPSet.cscALCT
cscALCT
Definition: muonCSCStubPSet.py:13
CSCStubMatcher::CSCStubMatcher
CSCStubMatcher(edm::ParameterSet const &iPS, edm::ConsumesCollector &&iC)
Definition: CSCStubMatcher.cc:8
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
CSCStubMatcher::chamberIdsAllCLCT
std::set< unsigned int > chamberIdsAllCLCT(int csc_type=MuonHitHelper::CSC_ALL) const
crossed chamber detIds with not necessarily matching stubs
Definition: CSCStubMatcher.cc:318
muonCSCStubPSet.cscLCT
cscLCT
Definition: muonCSCStubPSet.py:21
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
SimTrack
Definition: SimTrack.h:6
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CSCDetId::endcap
int endcap() const
Definition: CSCDetId.h:85
CSCCLCTDigiCollection
CSCALCTDigi
Definition: CSCALCTDigi.h:16
CSCConstants::KEY_CLCT_LAYER
Definition: CSCConstants.h:46
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
CSCStubMatcher::match
void match(const SimTrack &t, const SimVertex &v)
do the matching
Definition: CSCStubMatcher.cc:61
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
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
CSCStubMatcher::chamberIdsAllLCT
std::set< unsigned int > chamberIdsAllLCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:326
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
CSCStubMatcher::chamberIdsCLCT
std::set< unsigned int > chamberIdsCLCT(int csc_type=MuonHitHelper::CSC_ALL) const
chamber detIds with matching stubs
Definition: CSCStubMatcher.cc:334
mps_fire.result
result
Definition: mps_fire.py:303
CSCDetId::station
int station() const
Definition: CSCDetId.h:79
CSCStubMatcher::zpositionOfLayer
float zpositionOfLayer(unsigned int detid, int layer) const
Definition: CSCStubMatcher.cc:449
CSCStubMatcher::chamberIdsLCT
std::set< unsigned int > chamberIdsLCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:342
CSCStubMatcher::chamberIdsALCT
std::set< unsigned int > chamberIdsALCT(int csc_type=MuonHitHelper::CSC_ALL) const
Definition: CSCStubMatcher.cc:338
edm::Event
Definition: Event.h:73
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
CSCStubMatcher::allALCTsInChamber
const CSCALCTDigiContainer & allALCTsInChamber(unsigned int) const
Definition: CSCStubMatcher.cc:356
CSCCorrelatedLCTDigi
Definition: CSCCorrelatedLCTDigi.h:19
CSCStubMatcher::nChambersWithALCT
int nChambersWithALCT(int min_quality=0) const
Definition: CSCStubMatcher.cc:475
CSCStubMatcher::matchLCTsToSimTrack
void matchLCTsToSimTrack(const CSCCorrelatedLCTDigiCollection &)
Definition: CSCStubMatcher.cc:199
CSCStubMatcher::lctInChamber
bool lctInChamber(const CSCDetId &id, const CSCCorrelatedLCTDigi &lct) const
Definition: CSCStubMatcher.cc:535