CMS 3D CMS Logo

CSCGEMMatcher.cc
Go to the documentation of this file.
8 
9 #include <algorithm>
10 #include <cmath>
11 
13  int endcap, unsigned station, unsigned chamber, const edm::ParameterSet& tmbParams, const edm::ParameterSet& conf)
14  : endcap_(endcap), station_(station), chamber_(chamber) {
15  isEven_ = (chamber_ % 2 == 0);
16 
17  maxDeltaBXALCTGEM_ = tmbParams.getParameter<unsigned>("maxDeltaBXALCTGEM");
18  maxDeltaBXCLCTGEM_ = tmbParams.getParameter<unsigned>("maxDeltaBXCLCTGEM");
19 
20  matchWithHS_ = tmbParams.getParameter<bool>("matchWithHS");
21 
22  maxDeltaHsEven_ = tmbParams.getParameter<unsigned>("maxDeltaHsEven");
23  maxDeltaHsOdd_ = tmbParams.getParameter<unsigned>("maxDeltaHsOdd");
24 
25  if (station_ == 1) {
26  maxDeltaHsEvenME1a_ = tmbParams.getParameter<unsigned>("maxDeltaHsEvenME1a");
27  maxDeltaHsOddME1a_ = tmbParams.getParameter<unsigned>("maxDeltaHsOddME1a");
28  }
29 
30  mitigateSlopeByCosi_ = tmbParams.getParameter<bool>("mitigateSlopeByCosi");
31  assign_gem_csc_bending_ = tmbParams.getParameter<bool>("assignGEMCSCBending");
32 
34  gemCscSlopeCosiFiles_ = conf.getParameter<std::vector<std::string>>("gemCscSlopeCosiFiles");
35 
36  gem_csc_slope_cosi_2to1_L1_ME11_even_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiFiles_[0]);
37  gem_csc_slope_cosi_2to1_L1_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiFiles_[1]);
38  gem_csc_slope_cosi_3to1_L1_ME11_even_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiFiles_[2]);
39  gem_csc_slope_cosi_3to1_L1_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiFiles_[3]);
40 
41  gemCscSlopeCosiCorrectionFiles_ = conf.getParameter<std::vector<std::string>>("gemCscSlopeCosiCorrectionFiles");
42 
45  gem_csc_slope_cosi_corr_L1_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiCorrectionFiles_[2]);
46  gem_csc_slope_cosi_corr_L2_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCosiCorrectionFiles_[3]);
47  } else {
48  gemCscSlopeCorrectionFiles_ = conf.getParameter<std::vector<std::string>>("gemCscSlopeCorrectionFiles");
49 
50  gem_csc_slope_corr_L1_ME11_even_ = std::make_unique<CSCLUTReader>(gemCscSlopeCorrectionFiles_[0]);
51  gem_csc_slope_corr_L2_ME11_even_ = std::make_unique<CSCLUTReader>(gemCscSlopeCorrectionFiles_[1]);
52  gem_csc_slope_corr_L1_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCorrectionFiles_[2]);
53  gem_csc_slope_corr_L2_ME11_odd_ = std::make_unique<CSCLUTReader>(gemCscSlopeCorrectionFiles_[3]);
54  }
55 
57  if (station_ == 1) {
58  esDiffToSlopeME1aFiles_ = conf.getParameter<std::vector<std::string>>("esDiffToSlopeME1aFiles");
59  esDiffToSlopeME1bFiles_ = conf.getParameter<std::vector<std::string>>("esDiffToSlopeME1bFiles");
60 
61  es_diff_slope_L1_ME1a_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1aFiles_[0]);
62  es_diff_slope_L1_ME1a_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1aFiles_[1]);
63  es_diff_slope_L2_ME1a_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1aFiles_[2]);
64  es_diff_slope_L2_ME1a_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1aFiles_[3]);
65 
66  es_diff_slope_L1_ME1b_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1bFiles_[0]);
67  es_diff_slope_L1_ME1b_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1bFiles_[1]);
68  es_diff_slope_L2_ME1b_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1bFiles_[2]);
69  es_diff_slope_L2_ME1b_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME1bFiles_[3]);
70  }
71 
72  if (station_ == 2) {
73  esDiffToSlopeME21Files_ = conf.getParameter<std::vector<std::string>>("esDiffToSlopeME21Files");
74 
75  es_diff_slope_L1_ME21_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME21Files_[0]);
76  es_diff_slope_L1_ME21_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME21Files_[1]);
77  es_diff_slope_L2_ME21_even_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME21Files_[2]);
78  es_diff_slope_L2_ME21_odd_ = std::make_unique<CSCLUTReader>(esDiffToSlopeME21Files_[3]);
79  }
80  }
81 }
82 
83 unsigned CSCGEMMatcher::calculateGEMCSCBending(const CSCCLCTDigi& clct, const GEMInternalCluster& cluster) const {
84  // difference in 1/8-strip number
85  const unsigned diff = std::abs(int(clct.getKeyStrip(8)) - int(cluster.getKeyStrip(8)));
86 
87  unsigned slope = 0;
88 
89  // need LUT to convert differences in 1/8-strips between GEM and CSC to slope
90  if (station_ == 2) {
91  if (isEven_) {
92  if (cluster.id().layer() == 1)
94  else
96  } else {
97  if (cluster.id().layer() == 1)
99  else
101  }
102  }
103 
104  const bool isME1a(station_ == 1 and clct.getKeyStrip() > CSCConstants::MAX_HALF_STRIP_ME1B);
105 
106  if (station_ == 1 and isME1a) {
107  if (isEven_) {
108  if (cluster.id().layer() == 1)
110  else
112  } else {
113  if (cluster.id().layer() == 1)
115  else
117  }
118  } else {
119  if (isEven_) {
120  if (cluster.id().layer() == 1)
122  else
124  } else {
125  if (cluster.id().layer() == 1)
127  else
129  }
130  }
131 
132  return slope;
133 }
134 
135 // match an ALCT to GEMInternalCluster by bunch-crossing
138  GEMInternalClusters& output) const {
139  if (!alct.isValid() or clusters.empty())
140  return;
141 
142  // select clusters matched in time
143  for (const auto& cl : clusters) {
144  const unsigned diff = std::abs(int(alct.getBX()) - cl.bx());
145  if (diff <= maxDeltaBXALCTGEM_)
146  output.push_back(cl);
147  }
148 }
149 
150 // match a CLCT to GEMInternalCluster by bunch-crossing
153  GEMInternalClusters& output) const {
154  if (!clct.isValid() or clusters.empty())
155  return;
156 
157  // select clusters matched in time
158  for (const auto& cl : clusters) {
159  const unsigned diff = std::abs(int(clct.getBX()) - cl.bx());
160  if (diff <= maxDeltaBXCLCTGEM_)
161  output.push_back(cl);
162  }
163 }
164 
165 // match an ALCT and CLCT to GEMInternalCluster by bunch-crossing
167  const CSCCLCTDigi& clct,
169  GEMInternalClusters& output) const {
170  // both need to be valid
171  if (!alct.isValid() or !clct.isValid() or clusters.empty())
172  return;
173 
174  // get the single matches
175  GEMInternalClusters alctClusters, clctClusters;
176  matchingClustersBX(alct, clusters, alctClusters);
177  matchingClustersBX(clct, clusters, clctClusters);
178 
179  // get the intersection
180  for (const auto& p : alctClusters) {
181  for (const auto& q : clctClusters) {
182  if (p == q) {
183  output.push_back(p);
184  }
185  }
186  }
187 }
188 
191  GEMInternalClusters& output) const {
192  if (!alct.isValid() or clusters.empty())
193  return;
194 
195  // select clusters matched in wiregroup
196  for (const auto& cl : clusters) {
197  // for now add 10 wiregroups to make sure the matching can be done
198  // this should be quite generous
199  unsigned deltaWG(station_ == 1 ? 10 : 20);
200  if (cl.min_wg() <= alct.getKeyWG() and alct.getKeyWG() <= cl.max_wg() + deltaWG) {
201  output.push_back(cl);
202  }
203  }
204 }
205 
208  GEMInternalClusters& output) const {
209  if (!clct.isValid() or clusters.empty())
210  return;
211 
212  // select clusters matched by 1/2-strip or 1/8-strip
213  for (const auto& cl : clusters) {
214  const bool isMatched(matchWithHS_ ? matchedClusterLocHS(clct, cl) : matchedClusterLocES(clct, cl));
215  if (isMatched) {
216  output.push_back(cl);
217  }
218  }
219 }
220 
221 // match by 1/2-strip
222 bool CSCGEMMatcher::matchedClusterLocHS(const CSCCLCTDigi& clct, const GEMInternalCluster& cluster) const {
223  const bool isME1a(station_ == 1 and clct.getKeyStrip() > CSCConstants::MAX_HALF_STRIP_ME1B);
224 
225  unsigned halfStripDiff = std::abs(int(clct.getKeyStrip(2)) - int(cluster.getKeyStrip(2)));
226  if (isME1a) {
227  halfStripDiff = std::abs(int(clct.getKeyStrip(2)) - int(cluster.getKeyStripME1a(2)));
228  }
229 
230  // 98% acceptance cuts
231  unsigned halfStripCut;
232  if (isEven_) {
233  if (isME1a)
234  halfStripCut = maxDeltaHsEvenME1a_;
235  else
236  halfStripCut = maxDeltaHsEven_;
237  } else {
238  if (isME1a)
239  halfStripCut = maxDeltaHsOddME1a_;
240  else
241  halfStripCut = maxDeltaHsOdd_;
242  }
243  // 10 degree chamber is ~0.18 radian wide
244  // 98% acceptance for clusters in odd/even chambers for muons with 5 GeV
245  // {5, 0.02123785, 0.00928431}
246  // This corresponds to 0.12 and 0.052 fractions of the chamber
247  // or 16 and 7 half-strips
248 
249  // 20 degree chamber is ~0.35 radian wide
250  // 98% acceptance for clusters in odd/even chambers for muons with 5 GeV
251  // {5, 0.01095490, 0.00631625},
252  // This corresponds to 0.031 and 0.018 fractions of the chamber
253  // or 5 and 3 half-strips
254 
255  return halfStripDiff <= halfStripCut;
256 }
257 
258 // match by 1/8-strip
260  // key 1/8-strip
261  int key_es = -1;
262 
263  //modification of DeltaStrip by CLCT slope
264  int SlopeShift = 0;
265  uint16_t baseSlope = 0;
267  baseSlope = mitigatedSlopeByConsistency(clct);
268  else
269  baseSlope = clct.getSlope();
270  int clctSlope = pow(-1, clct.getBend()) * baseSlope;
271 
272  // for coincidences or single clusters in L1
273  if (cl.isCoincidence() or cl.id().layer() == 1) {
274  key_es = cl.layer1_middle_es();
276  key_es = cl.layer1_middle_es_me1a();
277 
278  //set SlopeShift for L1 or Copad case
279  SlopeShift =
280  CSCGEMSlopeCorrector(true, clctSlope); // fixed to facing detectors, must be determined at motherboard level
281  }
282 
283  // for single clusters in L2
284  else if (cl.id().layer() == 2) {
285  key_es = cl.layer2_middle_es();
287  key_es = cl.layer2_middle_es_me1a();
288 
289  //set SlopeShift for L2 case
290  SlopeShift =
291  CSCGEMSlopeCorrector(false, clctSlope); // fixed to facing detectors, must be determined at motherboard level
292 
293  }
294 
295  else
296  edm::LogWarning("CSCGEMMatcher") << "cluster.id().layer =" << cl.id().layer() << " out of acceptable range 1-2!";
297 
298  // matching by 1/8-strip
299  // determine matching window by chamber, assuming facing chambers only are processed
300  int window = chamber_ % 2 == 0 ? 20 : 40;
301 
302  return std::abs(clct.getKeyStrip(8) - key_es + SlopeShift) < window;
303 }
304 
306  const CSCCLCTDigi& clct,
308  GEMInternalClusters& output) const {
309  // both need to be valid
310  if (!alct.isValid() or !clct.isValid() or clusters.empty())
311  return;
312 
313  // get the single matches
314  GEMInternalClusters alctClusters, clctClusters;
315  matchingClustersLoc(alct, clusters, alctClusters);
316  matchingClustersLoc(clct, clusters, clctClusters);
317 
318  // get the intersection
319  for (const auto& p : alctClusters) {
320  for (const auto& q : clctClusters) {
321  if (p == q) {
322  output.push_back(p);
323  }
324  }
325  }
326 }
327 
330  GEMInternalClusters& output) const {
331  if (!alct.isValid() or clusters.empty())
332  return;
333 
334  // match by BX
335  GEMInternalClusters clustersBX;
336  matchingClustersBX(alct, clusters, clustersBX);
337 
338  // match spatially
339  matchingClustersLoc(alct, clustersBX, output);
340 }
341 
344  GEMInternalClusters& output) const {
345  if (!clct.isValid() or clusters.empty())
346  return;
347 
348  // match by BX
349  GEMInternalClusters clustersBX;
350  matchingClustersBX(clct, clusters, clustersBX);
351 
352  // match spatially
353  matchingClustersLoc(clct, clustersBX, output);
354 }
355 
357  const CSCCLCTDigi& clct,
359  GEMInternalClusters& selected) const {
360  // both need to be valid
361  if (!alct.isValid() or !clct.isValid() or clusters.empty())
362  return;
363 
364  // match by BX
365  GEMInternalClusters clustersBX;
366  matchingClustersBX(alct, clct, clusters, clustersBX);
367 
368  // match spatially
369  matchingClustersLoc(alct, clct, clustersBX, selected);
370 }
371 
374  GEMInternalCluster& best) const {
375  if (!alct.isValid() or clusters.empty())
376  return;
377 
378  GEMInternalClusters clustersBXLoc;
379  matchingClustersBXLoc(alct, clusters, clustersBXLoc);
380 
381  // simply pick the first matching one
382  if (!clustersBXLoc.empty())
383  best = clustersBXLoc[0];
384 }
385 
388  GEMInternalCluster& best) const {
389  if (!clct.isValid() or clusters.empty())
390  return;
391 
392  // match by BX
393  GEMInternalClusters clustersBXLoc;
394  matchingClustersBXLoc(clct, clusters, clustersBXLoc);
395 
396  // FIXME - for now: pick the first matching one
397  if (!clustersBXLoc.empty())
398  best = clustersBXLoc[0];
399 }
400 
402  const CSCCLCTDigi& clct,
404  GEMInternalCluster& best) const {
405  // match by BX
406  GEMInternalClusters clustersBXLoc;
407  matchingClustersBXLoc(alct, clct, clusters, clustersBXLoc);
408 
409  // FIXME - for now: pick the first matching one
410  if (!clustersBXLoc.empty())
411  best = clustersBXLoc[0];
412 }
413 
415  //extract hit values from CLCT hit matrix
416  std::vector<std::vector<uint16_t>> CLCTHitMatrix = clct.getHits();
417  int CLCTHits[6] = {-1, -1, -1, -1, -1, -1};
418 
419  for (unsigned layer = 0; layer < CLCTHitMatrix.size(); ++layer) {
420  for (unsigned position = 0; position < CLCTHitMatrix.at(layer).size(); ++position) {
421  const uint16_t value = CLCTHitMatrix.at(layer).at(position);
422  if (value != 0 && value != 65535) {
423  CLCTHits[layer] = (int)value;
424  break;
425  }
426  }
427  }
428 
429  //calculate slope consistency
430  float MinMaxPairDifferences[2] = {999., -999.};
431  for (unsigned First = 0; First < 5; ++First) {
432  //skip empty layers
433  if (CLCTHits[First] == -1)
434  continue;
435  for (unsigned Second = First + 1; Second < 6; ++Second) {
436  //skip empty layers
437  if (CLCTHits[Second] == -1)
438  continue;
439  float PairDifference = (CLCTHits[First] - CLCTHits[Second]) / (float)(Second - First);
440  if (PairDifference < MinMaxPairDifferences[0])
441  MinMaxPairDifferences[0] = PairDifference;
442  if (PairDifference > MinMaxPairDifferences[1])
443  MinMaxPairDifferences[1] = PairDifference;
444  }
445  }
446 
447  //calculate consistency of slope indicator: cosi
448  uint16_t cosi = std::ceil(std::abs(MinMaxPairDifferences[1] - MinMaxPairDifferences[0]));
449 
450  //disambiguate cosi cases
451 
452  //extremely inconsistent track, deprecate slope
453  if (cosi > 3)
454  return 0;
455  //consistent slope, do not change
456  else if (cosi < 2)
457  return clct.getSlope();
458  //need to look up in table 2->1
459  else if (cosi == 2) {
460  if (chamber_ % 2 == 0)
461  return gem_csc_slope_cosi_2to1_L1_ME11_even_->lookup(clct.getSlope());
462  else
463  return gem_csc_slope_cosi_2to1_L1_ME11_odd_->lookup(clct.getSlope());
464  }
465  //need to look up in table 3->1
466  else if (cosi == 3) {
467  if (chamber_ % 2 == 0)
468  return gem_csc_slope_cosi_3to1_L1_ME11_even_->lookup(clct.getSlope());
469  else
470  return gem_csc_slope_cosi_3to1_L1_ME11_odd_->lookup(clct.getSlope());
471  }
472  //just to avoid compiler errors an error code
473  else {
474  return 999;
475  }
476 }
477 
478 int CSCGEMMatcher::CSCGEMSlopeCorrector(bool isL1orCoincidence, int cscSlope) const {
479  int SlopeShift = 0;
480  int SlopeSign = cscSlope / std::abs(cscSlope);
481  //account for slope mitigation by cosi, if opted-in
482  if (mitigateSlopeByCosi_) {
483  //determine cosi-based slope correction
484  if (chamber_ % 2 == 0) {
485  if (isL1orCoincidence)
486  SlopeShift = gem_csc_slope_cosi_corr_L1_ME11_even_->lookup(std::abs(cscSlope));
487  else
488  SlopeShift = gem_csc_slope_cosi_corr_L2_ME11_even_->lookup(std::abs(cscSlope));
489  } else {
490  if (isL1orCoincidence)
491  SlopeShift = gem_csc_slope_cosi_corr_L1_ME11_odd_->lookup(std::abs(cscSlope));
492  else
493  SlopeShift = gem_csc_slope_cosi_corr_L2_ME11_odd_->lookup(std::abs(cscSlope));
494  }
495  } else {
496  //determine shift by slope correction
497  if (chamber_ % 2 == 0) {
498  if (isL1orCoincidence)
499  SlopeShift = gem_csc_slope_corr_L1_ME11_even_->lookup(std::abs(cscSlope));
500  else
501  SlopeShift = gem_csc_slope_corr_L2_ME11_even_->lookup(std::abs(cscSlope));
502  } else {
503  if (isL1orCoincidence)
504  SlopeShift = gem_csc_slope_corr_L1_ME11_odd_->lookup(std::abs(cscSlope));
505  else
506  SlopeShift = gem_csc_slope_corr_L2_ME11_odd_->lookup(std::abs(cscSlope));
507  }
508  }
509  return std::round(SlopeShift * SlopeSign * endcap_);
510 }
CSCGEMMatcher::bestClusterBXLoc
void bestClusterBXLoc(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalCluster &best) const
Definition: CSCGEMMatcher.cc:372
change_name.diff
diff
Definition: change_name.py:13
CSCALCTDigi::getBX
uint16_t getBX() const
return BX - five low bits of BXN counter tagged by the ALCT
Definition: CSCALCTDigi.h:73
MessageLogger.h
CSCGEMMatcher::gem_csc_slope_cosi_2to1_L1_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_2to1_L1_ME11_even_
Definition: CSCGEMMatcher.h:143
GEMDetId::layer
constexpr int layer() const
Definition: GEMDetId.h:190
CSCGEMMatcher::CSCGEMSlopeCorrector
int CSCGEMSlopeCorrector(const bool isL1orCopad, const int cscSlope) const
Definition: CSCGEMMatcher.cc:478
CSCGEMMatcher::maxDeltaHsEven_
unsigned maxDeltaHsEven_
Definition: CSCGEMMatcher.h:126
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
CSCGEMMatcher::maxDeltaBXCLCTGEM_
unsigned maxDeltaBXCLCTGEM_
Definition: CSCGEMMatcher.h:122
CSCGEMMatcher::mitigatedSlopeByConsistency
uint16_t mitigatedSlopeByConsistency(const CSCCLCTDigi &clct) const
Definition: CSCGEMMatcher.cc:414
relativeConstraints.station
station
Definition: relativeConstraints.py:67
GEMInternalCluster::getKeyStripME1a
uint16_t getKeyStripME1a(int n=2) const
Definition: GEMInternalCluster.cc:164
CSCGEMMatcher::gem_csc_slope_corr_L1_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_corr_L1_ME11_even_
Definition: CSCGEMMatcher.h:148
svgfig.window
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
Definition: svgfig.py:643
CSCGEMMatcher::es_diff_slope_L1_ME21_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME21_odd_
Definition: CSCGEMMatcher.h:173
CSCGEMMatcher::maxDeltaBXALCTGEM_
unsigned maxDeltaBXALCTGEM_
Definition: CSCGEMMatcher.h:121
CSCGEMMatcher::matchingClustersBXLoc
void matchingClustersBXLoc(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalClusters &selected) const
Definition: CSCGEMMatcher.cc:328
CSCGEMMatcher::chamber_
unsigned chamber_
Definition: CSCGEMMatcher.h:118
CSCGEMMatcher::gem_csc_slope_corr_L2_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_corr_L2_ME11_even_
Definition: CSCGEMMatcher.h:149
CSCGEMMatcher::es_diff_slope_L1_ME21_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME21_even_
Definition: CSCGEMMatcher.h:170
CSCGEMMatcher::gemCscSlopeCorrectionFiles_
std::vector< std::string > gemCscSlopeCorrectionFiles_
Definition: CSCGEMMatcher.h:135
CSCGEMMatcher::es_diff_slope_L2_ME1b_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME1b_even_
Definition: CSCGEMMatcher.h:159
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCCLCTDigi::getKeyStrip
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:99
GEMInternalCluster.h
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CSCGEMMatcher::gemCscSlopeCosiCorrectionFiles_
std::vector< std::string > gemCscSlopeCosiCorrectionFiles_
Definition: CSCGEMMatcher.h:137
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCGEMMatcher::maxDeltaHsEvenME1a_
unsigned maxDeltaHsEvenME1a_
Definition: CSCGEMMatcher.h:128
CSCGEMMatcher::endcap_
unsigned endcap_
Definition: CSCGEMMatcher.h:115
CSCGEMMatcher::isEven_
bool isEven_
Definition: CSCGEMMatcher.h:119
CSCGEMMatcher::CSCGEMMatcher
CSCGEMMatcher(int endcap, unsigned station, unsigned chamber, const edm::ParameterSet &tmbParams, const edm::ParameterSet &luts)
Definition: CSCGEMMatcher.cc:12
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition: GetRecoTauVFromDQM_MC_cff.py:38
CSCGEMMatcher::es_diff_slope_L2_ME21_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME21_even_
Definition: CSCGEMMatcher.h:171
CSCALCTDigi::getKeyWG
uint16_t getKeyWG() const
return key wire group
Definition: CSCALCTDigi.h:67
CSCCLCTDigi::getBend
uint16_t getBend() const
Definition: CSCCLCTDigi.h:93
CSCGEMMatcher::es_diff_slope_L2_ME1a_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME1a_even_
Definition: CSCGEMMatcher.h:165
CSCALCTDigi.h
GEMInternalCluster::id
GEMDetId id() const
Definition: GEMInternalCluster.h:26
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
CSCGEMMatcher::gemCscSlopeCosiFiles_
std::vector< std::string > gemCscSlopeCosiFiles_
Definition: CSCGEMMatcher.h:136
CSCGEMMatcher::gem_csc_slope_cosi_corr_L1_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_corr_L1_ME11_odd_
Definition: CSCGEMMatcher.h:155
tmbParams
Definition: tmbParams.py:1
CSCConstants::MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:88
CSCGEMMatcher.h
CSCGEMMatcher::matchedClusterLocHS
bool matchedClusterLocHS(const CSCCLCTDigi &clct, const GEMInternalCluster &cluster) const
Definition: CSCGEMMatcher.cc:222
CSCConstants.h
CSCGEMMatcher::gem_csc_slope_cosi_corr_L1_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_corr_L1_ME11_even_
Definition: CSCGEMMatcher.h:153
CSCGEMMatcher::gem_csc_slope_cosi_corr_L2_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_corr_L2_ME11_even_
Definition: CSCGEMMatcher.h:154
CSCLUTReader.h
CSCGEMMatcher::es_diff_slope_L1_ME1b_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME1b_odd_
Definition: CSCGEMMatcher.h:161
CSCGEMMatcher::gem_csc_slope_cosi_corr_L2_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_corr_L2_ME11_odd_
Definition: CSCGEMMatcher.h:156
CSCGEMMatcher::es_diff_slope_L2_ME21_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME21_odd_
Definition: CSCGEMMatcher.h:174
CSCGEMMatcher::maxDeltaHsOdd_
unsigned maxDeltaHsOdd_
Definition: CSCGEMMatcher.h:127
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
CSCGEMMatcher::calculateGEMCSCBending
unsigned calculateGEMCSCBending(const CSCCLCTDigi &clct, const GEMInternalCluster &cluster) const
Definition: CSCGEMMatcher.cc:83
trackerHitRTTI::isMatched
bool isMatched(TrackingRecHit const &hit)
Definition: trackerHitRTTI.h:33
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCGEMMatcher::station_
unsigned station_
Definition: CSCGEMMatcher.h:116
CSCGEMMatcher::matchWithHS_
bool matchWithHS_
Definition: CSCGEMMatcher.h:124
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
createfilelist.int
int
Definition: createfilelist.py:10
CSCCLCTDigi::isValid
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
value
Definition: value.py:1
CSCGEMMatcher::gem_csc_slope_cosi_3to1_L1_ME11_even_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_3to1_L1_ME11_even_
Definition: CSCGEMMatcher.h:144
submitPVResolutionJobs.q
q
Definition: submitPVResolutionJobs.py:84
CSCGEMMatcher::mitigateSlopeByCosi_
bool mitigateSlopeByCosi_
Definition: CSCGEMMatcher.h:132
CSCGEMMatcher::esDiffToSlopeME1aFiles_
std::vector< std::string > esDiffToSlopeME1aFiles_
Definition: CSCGEMMatcher.h:138
CSCCLCTDigi::getSlope
uint16_t getSlope() const
return the slope
Definition: CSCCLCTDigi.h:74
CSCGEMMatcher::es_diff_slope_L2_ME1b_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME1b_odd_
Definition: CSCGEMMatcher.h:162
GEMInternalCluster::getKeyStrip
uint16_t getKeyStrip(int n=2) const
Definition: GEMInternalCluster.cc:144
CSCCLCTDigi::getBX
uint16_t getBX() const
return BX
Definition: CSCCLCTDigi.h:123
CSCGEMMatcher::matchedClusterLocES
bool matchedClusterLocES(const CSCCLCTDigi &clct, const GEMInternalCluster &cluster) const
Definition: CSCGEMMatcher.cc:259
CSCGEMMatcher::gem_csc_slope_corr_L2_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_corr_L2_ME11_odd_
Definition: CSCGEMMatcher.h:151
CSCGEMMatcher::assign_gem_csc_bending_
bool assign_gem_csc_bending_
Definition: CSCGEMMatcher.h:131
CSCGEMMatcher::gem_csc_slope_cosi_2to1_L1_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_2to1_L1_ME11_odd_
Definition: CSCGEMMatcher.h:145
CSCGEMMatcher::matchingClustersLoc
void matchingClustersLoc(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalClusters &selected) const
Definition: CSCGEMMatcher.cc:189
CSCGEMMatcher::es_diff_slope_L1_ME1a_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME1a_even_
Definition: CSCGEMMatcher.h:164
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCGEMMatcher::maxDeltaHsOddME1a_
unsigned maxDeltaHsOddME1a_
Definition: CSCGEMMatcher.h:129
CSCCLCTDigi.h
CSCGEMMatcher::matchingClustersBX
void matchingClustersBX(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalClusters &selected) const
Definition: CSCGEMMatcher.cc:136
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
GEMInternalCluster
Definition: GEMInternalCluster.h:18
CSCALCTDigi::isValid
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:40
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
CSCGEMMatcher::esDiffToSlopeME21Files_
std::vector< std::string > esDiffToSlopeME21Files_
Definition: CSCGEMMatcher.h:140
CSCGEMMatcher::es_diff_slope_L2_ME1a_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L2_ME1a_odd_
Definition: CSCGEMMatcher.h:168
CSCGEMMatcher::es_diff_slope_L1_ME1b_even_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME1b_even_
Definition: CSCGEMMatcher.h:158
slope
static const double slope[3]
Definition: CastorTimeSlew.cc:6
CSCGEMMatcher::gem_csc_slope_cosi_3to1_L1_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_cosi_3to1_L1_ME11_odd_
Definition: CSCGEMMatcher.h:146
CSCGEMMatcher::GEMInternalClusters
std::vector< GEMInternalCluster > GEMInternalClusters
Definition: CSCGEMMatcher.h:25
CSCCLCTDigi::getHits
const ComparatorContainer & getHits() const
Definition: CSCCLCTDigi.h:176
CSCGEMMatcher::esDiffToSlopeME1bFiles_
std::vector< std::string > esDiffToSlopeME1bFiles_
Definition: CSCGEMMatcher.h:139
CSCGEMMatcher::es_diff_slope_L1_ME1a_odd_
std::unique_ptr< CSCLUTReader > es_diff_slope_L1_ME1a_odd_
Definition: CSCGEMMatcher.h:167
CSCGEMMatcher::gem_csc_slope_corr_L1_ME11_odd_
std::unique_ptr< CSCLUTReader > gem_csc_slope_corr_L1_ME11_odd_
Definition: CSCGEMMatcher.h:150