CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
CSCSectorReceiverLUT Class Reference

#include <CSCSectorReceiverLUT.h>

Public Member Functions

 CSCSectorReceiverLUT (const CSCSectorReceiverLUT &)
 
 CSCSectorReceiverLUT (int endcap, int sector, int subsector, int station, const edm::ParameterSet &pset, bool TMB07)
 
std::string encodeFileIndex () const
 Helpers. More...
 
gbletadat globalEtaME (gbletaadd address, const bool gangedME1a=false) const
 
gbletadat globalEtaME (int phi_bend, int phi_local, int wire_group, int cscid, const bool gangedME1a=false) const
 
gbletadat globalEtaME (unsigned address, const bool gangedME1a=false) const
 
gblphidat globalPhiMB (gblphiadd address, const bool gangedME1a=false) const
 
gblphidat globalPhiMB (int phi_local, int wire_group, int cscid, const bool gangedME1a=false) const
 
gblphidat globalPhiMB (unsigned address, const bool gangedME1a=false) const
 
gblphidat globalPhiME (gblphiadd address, const bool gangedME1a=false) const
 
gblphidat globalPhiME (int phi_local, int wire_group, int cscid, const bool gangedME1a=false) const
 
gblphidat globalPhiME (unsigned address, const bool gangedME1a=false) const
 
lclphidat localPhi (int strip, int pattern, int quality, int lr, const bool gangedME1a=false) const
 Geometry Lookup Tables. More...
 
lclphidat localPhi (lclphiadd address, const bool gangedME1a=false) const
 
lclphidat localPhi (unsigned address, const bool gangedME1a=false) const
 
CSCSectorReceiverLUToperator= (const CSCSectorReceiverLUT &)
 
void setCSCGeometry (const CSCGeometry *g)
 
 ~CSCSectorReceiverLUT ()
 

Private Member Functions

gbletadat calcGlobalEtaME (const gbletaadd &address) const
 Global Eta LUT. More...
 
gblphidat calcGlobalPhiMB (const gblphidat &me_gphi_data) const
 
gblphidat calcGlobalPhiME (const gblphiadd &address) const
 Global Phi LUT. More...
 
lclphidat calcLocalPhi (const lclphiadd &address) const
 Local Phi LUT. More...
 
void fillLocalPhiLUT ()
 
double getGlobalEtaValue (const unsigned &cscid, const unsigned &wire_group, const unsigned &phi_local) const
 
double getGlobalPhiValue (const CSCLayer *thelayer, const unsigned &strip, const unsigned &wire_group) const
 
void readLUTsFromFile ()
 

Private Attributes

int _endcap
 
int _sector
 
int _station
 
int _subsector
 
const CSCGeometrycsc_g
 
bool isBinary
 
bool isTMB07
 
bool LUTsFromFile
 
edm::FileInPath mb_gbl_phi_file
 
gblphidatmb_global_phi
 
edm::FileInPath me_gbl_eta_file
 
edm::FileInPath me_gbl_phi_file
 
gbletadatme_global_eta
 
gblphidatme_global_phi
 
edm::FileInPath me_lcl_phi_file
 
bool useMiniLUTs
 

Static Private Attributes

static lclphidatme_lcl_phi = nullptr
 
static bool me_lcl_phi_loaded = false
 

Detailed Description

Author
Lindsey Gray, Slava Valuev, Jason Mumford

Provides Look Up Table information for use in the SP Core. Partial port from ORCA.

Definition at line 19 of file CSCSectorReceiverLUT.h.

Constructor & Destructor Documentation

◆ CSCSectorReceiverLUT() [1/2]

CSCSectorReceiverLUT::CSCSectorReceiverLUT ( int  endcap,
int  sector,
int  subsector,
int  station,
const edm::ParameterSet pset,
bool  TMB07 
)

Definition at line 23 of file CSCSectorReceiverLUT.cc.

25  : _endcap(endcap), _sector(sector), _subsector(subsector), _station(station), isTMB07(TMB07) {
26  LUTsFromFile = pset.getUntrackedParameter<bool>("ReadLUTs", false);
27  useMiniLUTs = pset.getUntrackedParameter<bool>("UseMiniLUTs", true);
28  isBinary = pset.getUntrackedParameter<bool>("Binary", false);
29 
30  me_global_eta = nullptr;
31  me_global_phi = nullptr;
32  mb_global_phi = nullptr;
33  if (LUTsFromFile && !useMiniLUTs) {
34  me_lcl_phi_file = pset.getUntrackedParameter<edm::FileInPath>(
35  "LocalPhiLUT",
36  edm::FileInPath(std::string("L1Trigger/CSCTrackFinder/LUTs/LocalPhiLUT" +
37  (isBinary ? std::string(".bin") : std::string(".dat")))));
38  me_gbl_phi_file = pset.getUntrackedParameter<edm::FileInPath>(
39  "GlobalPhiLUTME",
40  edm::FileInPath((std::string("L1Trigger/CSCTrackFinder/LUTs/GlobalPhiME") + encodeFileIndex() +
41  (isBinary ? std::string(".bin") : std::string(".dat")))));
42  if (station == 1)
43  mb_gbl_phi_file = pset.getUntrackedParameter<edm::FileInPath>(
44  "GlobalPhiLUTMB",
45  edm::FileInPath((std::string("L1Trigger/CSCTrackFinder/LUTs/GlobalPhiMB") + encodeFileIndex() +
46  (isBinary ? std::string(".bin") : std::string(".dat")))));
47  me_gbl_eta_file = pset.getUntrackedParameter<edm::FileInPath>(
48  "GlobalEtaLUTME",
49  edm::FileInPath((std::string("L1Trigger/CSCTrackFinder/LUTs/GlobalEtaME") + encodeFileIndex() +
50  (isBinary ? std::string(".bin") : std::string(".dat")))));
52  }
53 }

References encodeFileIndex(), isBinary, LUTsFromFile, mb_gbl_phi_file, mb_global_phi, me_gbl_eta_file, me_gbl_phi_file, me_global_eta, me_global_phi, me_lcl_phi_file, muonDTDigis_cfi::pset, readLUTsFromFile(), relativeConstraints::station, AlCaHLTBitMon_QueryRunRegistry::string, and useMiniLUTs.

◆ CSCSectorReceiverLUT() [2/2]

CSCSectorReceiverLUT::CSCSectorReceiverLUT ( const CSCSectorReceiverLUT lut)

◆ ~CSCSectorReceiverLUT()

CSCSectorReceiverLUT::~CSCSectorReceiverLUT ( )

Definition at line 117 of file CSCSectorReceiverLUT.cc.

117  {
118  if (me_lcl_phi_loaded) {
119  delete me_lcl_phi;
120  me_lcl_phi = nullptr;
121  me_lcl_phi_loaded = false;
122  }
123  if (me_global_eta) {
124  delete me_global_eta;
125  me_global_eta = nullptr;
126  }
127  if (me_global_phi) {
128  delete me_global_phi;
129  me_global_phi = nullptr;
130  }
131  if (mb_global_phi) {
132  delete mb_global_phi;
133  mb_global_phi = nullptr;
134  }
135 }

References mb_global_phi, me_global_eta, me_global_phi, me_lcl_phi, and me_lcl_phi_loaded.

Member Function Documentation

◆ calcGlobalEtaME()

gbletadat CSCSectorReceiverLUT::calcGlobalEtaME ( const gbletaadd address) const
private

Global Eta LUT.

Definition at line 654 of file CSCSectorReceiverLUT.cc.

654  {
656  double float_eta = getGlobalEtaValue(address.cscid, address.wire_group, address.phi_local);
657  unsigned int_eta = 0;
658  unsigned bend_global = 0; // not filled yet... will change when it is.
660  const unsigned me12EtaCut = 56;
661 
662  if ((float_eta < CSCTFConstants::minEta) || (float_eta >= CSCTFConstants::maxEta)) {
663  edm::LogWarning("CSCSectorReceiverLUT:OutOfBounds")
664  << "CSCSectorReceiverLUT warning: float_eta = " << float_eta << " minEta = " << CSCTFConstants::minEta
665  << " maxEta = " << CSCTFConstants::maxEta << " station " << _station << " sector " << _sector << " chamber "
666  << address.cscid << " wire group " << address.wire_group;
667 
668  throw cms::Exception("CSCSectorReceiverLUT")
669  << "+++ Value of CSC ID, " << float_eta << ", is out of bounds [" << CSCTFConstants::minEta << "-"
670  << CSCTFConstants::maxEta << ") +++\n";
671 
672  //if (float_eta < CSCTFConstants::minEta)
673  //result.global_eta = 0;
674  //else if (float_eta >= CSCTFConstants::maxEta)
675  //result.global_eta = CSCTFConstants::etaBins - 1;
676  } else {
677  float_eta -= CSCTFConstants::minEta;
678  float_eta = float_eta / etaPerBin;
679  int_eta = static_cast<unsigned>(float_eta);
680  /* Commented until I find out its use.
681  // Fine-tune eta boundary between DT and CSC.
682  if ((intEta == L1MuCSCSetup::CscEtaStart() && (L1MuCSCSetup::CscEtaStartCorr() > 0.) ) ||
683  (intEta == L1MuCSCSetup::CscEtaStart() - 1 && (L1MuCSCSetup::CscEtaStartCorr() < 0.) ) ) {
684  bitEta = (thisEta-minEta-L1MuCSCSetup::CscEtaStartCorr())/EtaPerBin;
685  intEta = static_cast<int>(bitEta);
686  }
687  */
688  if (_station == 1 && address.cscid >= static_cast<unsigned>(CSCTriggerNumbering::minTriggerCscId()) &&
689  address.cscid <= static_cast<unsigned>(CSCTriggerNumbering::maxTriggerCscId())) {
690  unsigned ring = CSCTriggerNumbering::ringFromTriggerLabels(_station, address.cscid);
691 
692  if (ring == 1 && int_eta < me12EtaCut) {
693  int_eta = me12EtaCut;
694  } else if (ring == 2 && int_eta >= me12EtaCut) {
695  int_eta = me12EtaCut - 1;
696  }
697  }
698  result.global_eta = int_eta;
699  }
700  result.global_bend = bend_global;
701 
702  return result;
703 }

References _sector, _station, CSCTFConstants::etaBins, Exception, getGlobalEtaValue(), CSCTFConstants::maxEta, CSCTriggerNumbering::maxTriggerCscId(), CSCTFConstants::minEta, CSCTriggerNumbering::minTriggerCscId(), mps_fire::result, relativeConstraints::ring, and CSCTriggerNumbering::ringFromTriggerLabels().

Referenced by globalEtaME().

◆ calcGlobalPhiMB()

gblphidat CSCSectorReceiverLUT::calcGlobalPhiMB ( const gblphidat me_gphi_data) const
private

Definition at line 489 of file CSCSectorReceiverLUT.cc.

489  {
490  gblphidat dtlut;
491 
492  // The following method was ripped from D. Holmes' LUT conversion program
493  // modifications from Darin and GP
494  int GlobalPhiMin = (_subsector == 1) ? 0x42 : 0x800; // (0.999023 : 31 in degrees)
495  int GlobalPhiMax = (_subsector == 1) ? 0x7ff : 0xfbd; // (30.985 : 60.986 in degrees)
496  double GlobalPhiShift = (1.0 * GlobalPhiMin + (GlobalPhiMax - GlobalPhiMin) / 2.0);
497 
498  double dt_out = static_cast<double>(csclut.global_phi) - GlobalPhiShift;
499 
500  // these numbers are 62 deg / 1 rad (CSC phi scale vs. DT phi scale)
501  dt_out = (dt_out / 1982) * 2145; //CSC phi 62 degrees; DT phi 57.3 degrees
502 
503  if (dt_out >= 0) // msb != 1
504  {
505  dtlut.global_phi = 0x7ff & static_cast<unsigned>(dt_out);
506  } else {
507  dtlut.global_phi = static_cast<unsigned>(-dt_out);
508  dtlut.global_phi = ~dtlut.global_phi;
509  dtlut.global_phi |= 0x800;
510  }
511 
512  return dtlut;
513 }

References _subsector.

Referenced by globalPhiMB().

◆ calcGlobalPhiME()

gblphidat CSCSectorReceiverLUT::calcGlobalPhiME ( const gblphiadd address) const
private

Global Phi LUT.

Definition at line 243 of file CSCSectorReceiverLUT.cc.

243  {
244  gblphidat result(0);
245  const CSCChamber* thechamber = nullptr;
246  const CSCLayer* thelayer = nullptr;
247  const CSCLayerGeometry* layergeom = nullptr;
248  int cscid = address.cscid;
249  unsigned wire_group = address.wire_group;
250  unsigned local_phi = address.phi_local;
251  const double sectorOffset =
253 
254  //Number of global phi units per radian.
255  constexpr int maxPhiG = 1 << CSCBitWidths::kGlobalPhiDataBitWidth;
256  double binPhiG = static_cast<double>(maxPhiG) / CSCTFConstants::SECTOR_RAD;
257 
258  // We will use these to convert the local phi into radians.
259  constexpr unsigned int maxPhiL = 1 << CSCBitWidths::kLocalPhiDataBitWidth;
260  const double binPhiL = static_cast<double>(maxPhiL) / (2. * CSCConstants::MAX_NUM_STRIPS);
261 
262  if (cscid < CSCTriggerNumbering::minTriggerCscId()) {
263  edm::LogWarning("CSCSectorReceiverLUT|getGlobalPhiValue")
264  << " warning: cscId " << cscid << " is out of bounds [" << CSCTriggerNumbering::minTriggerCscId() << "-"
266  throw cms::Exception("CSCSectorReceiverLUT")
267  << "+++ Value of CSC ID, " << cscid << ", is out of bounds [" << CSCTriggerNumbering::minTriggerCscId() << "-"
268  << CSCTriggerNumbering::maxTriggerCscId() << "] +++\n";
269  }
270 
271  if (cscid > CSCTriggerNumbering::maxTriggerCscId()) {
272  edm::LogWarning("CSCSectorReceiverLUT|getGlobalPhiValue")
273  << " warning: cscId " << cscid << " is out of bounds [" << CSCTriggerNumbering::minTriggerCscId() << "-"
275  throw cms::Exception("CSCSectorReceiverLUT")
276  << "+++ Value of CSC ID, " << cscid << ", is out of bounds [" << CSCTriggerNumbering::minTriggerCscId() << "-"
277  << CSCTriggerNumbering::maxTriggerCscId() << "] +++\n";
278  }
279 
280  if (wire_group >= 1 << 5) {
281  edm::LogWarning("CSCSectorReceiverLUT|getGlobalPhiValue")
282  << "warning: wire_group" << wire_group << " is out of bounds (1-" << ((1 << 5) - 1) << "]\n";
283  throw cms::Exception("CSCSectorReceiverLUT")
284  << "+++ Value of wire_group, " << wire_group << ", is out of bounds (1-" << ((1 << 5) - 1) << "] +++\n";
285  }
286 
287  if (local_phi >= maxPhiL) {
288  edm::LogWarning("CSCSectorReceiverLUT|getGlobalPhiValue")
289  << "warning: local_phi" << local_phi << " is out of bounds [0-" << maxPhiL << ")\n";
290  throw cms::Exception("CSCSectorReceiverLUT")
291  << "+++ Value of local_phi, " << local_phi << ", is out of bounds [0-, " << maxPhiL << ") +++\n";
292  }
293 
294  try {
297  CSCDetId detid(_endcap, _station, ring, chid, 0);
298  thechamber = const_cast<const CSCChamber*>(csc_g->chamber(detid));
299  if (thechamber) {
300  layergeom = thechamber->layer(CSCConstants::KEY_CLCT_LAYER)->geometry();
301  thelayer = thechamber->layer(CSCConstants::KEY_CLCT_LAYER);
302  const int nStrips = layergeom->numberOfStrips();
303  // PhiL is the strip number converted into some units between 0 and
304  // 1023. When we did the conversion in fillLocalPhiTable(), we did
305  // not know for which chamber we do it (and, therefore, how many strips
306  // it has), and always used the maximum possible number of strips
307  // per chamber, MAX_NUM_STRIPS=80. Now, since we know the chamber id
308  // and how many strips the chamber has, we can re-adjust the scale.
309  //const double scale = static_cast<double>(CSCConstants::MAX_NUM_STRIPS)/nStrips;
310 
311  int strip = 0, halfstrip = 0;
312 
313  halfstrip = static_cast<int>(local_phi / binPhiL);
314  strip = halfstrip / 2;
315 
316  // Find the phi width of the chamber and the position of its "left"
317  // (lower phi) edge (both in radians).
318  // Phi positions of the centers of the first and of the last strips
319  // in the chamber.
320  const double phi_f = getGlobalPhiValue(thelayer, 1, wire_group);
321  const double phi_l = getGlobalPhiValue(thelayer, nStrips, wire_group);
322  // Phi widths of the half-strips at both ends of the chamber;
323  // surprisingly, they are not the same.
324  const double hsWidth_f = fabs(getGlobalPhiValue(thelayer, 2, wire_group) - phi_f) / 2.;
325  const double hsWidth_l = fabs(phi_l - getGlobalPhiValue(thelayer, nStrips - 1, wire_group)) / 2.;
326 
327  // The "natural" match between the strips and phi values -- when
328  // a larger strip number corresponds to a larger phi value, i.e. strips
329  // are counted clockwise if we look at them from the inside of the
330  // detector -- is reversed for some stations. At the moment, these
331  // are stations 3 and 4 of the 1st endcap, and stations 1 and 2 of
332  // the 2nd endcap. Instead of using
333  // if ((theEndcap == 1 && theStation <= 2) ||
334  // (theEndcap == 2 && theStation >= 3)),
335  // we get the order from the phi values of the first and the last strip
336  // in a chamber, just in case the counting scheme changes in the future.
337  // Once we know how the strips are counted, we can go from the middle
338  // of the strips to their outer edges.
339  bool clockwiseOrder;
340  double leftEdge, rightEdge;
341  if (fabs(phi_f - phi_l) < M_PI) {
342  if (phi_f < phi_l)
343  clockwiseOrder = true;
344  else
345  clockwiseOrder = false;
346  } else { // the chamber crosses the phi = pi boundary
347  if (phi_f < phi_l)
348  clockwiseOrder = false;
349  else
350  clockwiseOrder = true;
351  }
352  if (clockwiseOrder) {
353  leftEdge = phi_f - hsWidth_f;
354  rightEdge = phi_l + hsWidth_l;
355  } else {
356  leftEdge = phi_l - hsWidth_l;
357  rightEdge = phi_f + hsWidth_f;
358  }
359  if (fabs(phi_f - phi_l) >= M_PI) {
360  rightEdge += 2. * M_PI;
361  }
362  //double chamberWidth = (rightEdge - leftEdge);
363 
364  // Chamber offset, relative to the edge of the sector.
365  //double chamberOffset = leftEdge - sectorOffset;
366  //if (chamberOffset < -M_PI) chamberOffset += 2*M_PI;
367 
368  double temp_phi = 0.0, strip_phi = 0.0, delta_phi = 0.0;
369  double distFromHalfStripCenter = 0.0, halfstripWidth = 0.0;
370 
371  if (strip < nStrips) {
372  // Approximate distance from the center of the half-strip to the center
373  // of this phil bin, in units of half-strip width.
374  distFromHalfStripCenter = (local_phi + 0.5) / binPhiL - halfstrip - 0.5;
375  // Half-strip width (in rad), calculated as the half-distance between
376  // the adjacent strips. Since in the current ORCA implementation
377  // the half-strip width changes from strip to strip, base the choice
378  // of the adjacent strip on the half-strip number.
379  if ((halfstrip % 2 == 0 && halfstrip != 0) || halfstrip == 2 * nStrips - 1) {
380  halfstripWidth = fabs(getGlobalPhiValue(thelayer, strip + 1, wire_group) -
381  getGlobalPhiValue(thelayer, strip, wire_group)) /
382  2.;
383  } else {
384  halfstripWidth = fabs(getGlobalPhiValue(thelayer, strip + 1, wire_group) -
385  getGlobalPhiValue(thelayer, strip + 2, wire_group)) /
386  2.;
387  }
388  // Correction for the strips crossing the 180 degree boundary.
389  if (halfstripWidth > M_PI / 2.)
390  halfstripWidth = M_PI - halfstripWidth;
391  // Phi at the center of the strip.
392  strip_phi = getGlobalPhiValue(thelayer, strip + 1, wire_group);
393  // Distance between the center of the strip and the phil position.
394  delta_phi = halfstripWidth * (((halfstrip % 2) - 0.5) + distFromHalfStripCenter);
395  if (clockwiseOrder)
396  temp_phi = strip_phi + delta_phi;
397  else
398  temp_phi = strip_phi - delta_phi;
399  } else {
400  // PhiL values that do not have corresponding strips (the chamber
401  // has less than 80 strips assumed in fillLocalPhi). It does not
402  // really matter what we do with these values; at the moment, just
403  // set them to the phis of the edges of the chamber.
404  if (clockwiseOrder)
405  temp_phi = rightEdge;
406  else
407  temp_phi = leftEdge;
408  }
409 
410  // Finally, subtract the sector offset and convert to the scale of
411  // the global phi.
412 
413  temp_phi -= sectorOffset;
414 
415  if (temp_phi < 0.)
416  temp_phi += 2. * M_PI;
417 
418  temp_phi *= binPhiG;
419 
420  if (temp_phi < 0.) {
421  result.global_phi = 0;
422  } else if (temp_phi >= maxPhiG) {
423  result.global_phi = maxPhiG - 1;
424  } else {
425  result.global_phi = static_cast<unsigned short>(temp_phi);
426  }
427 
428  LogDebug("CSCSectorReceiverLUT") << "local_phi = " << local_phi << " halfstrip = " << halfstrip
429  << " strip = " << strip
430  << " distFromHalfStripCenter = " << distFromHalfStripCenter
431  << " halfstripWidth = " << halfstripWidth
432  << " strip phi = " << strip_phi / (M_PI / 180.)
433  << " temp_phi = " << temp_phi * CSCTFConstants::SECTOR_DEG / maxPhiG
434  << " global_phi = " << result.global_phi << " "
435  << result.global_phi * CSCTFConstants::SECTOR_DEG / maxPhiG;
436  }
437  } catch (edm::Exception& e) {
438  edm::LogError("CSCSectorReceiverLUT|getGlobalPhiValue") << e.what();
439  }
440 
441  return result;
442 }

References _endcap, _sector, _station, _subsector, CSCGeometry::chamber(), CSCTriggerNumbering::chamberFromTriggerLabels(), csc_g, HLT_FULL_cff::delta_phi, MillePedeFileConverter_cfg::e, Exception, CSCLayer::geometry(), getGlobalPhiValue(), CSCConstants::KEY_CLCT_LAYER, CSCBitWidths::kGlobalPhiDataBitWidth, CSCBitWidths::kLocalPhiDataBitWidth, CSCChamber::layer(), LogDebug, M_PI, CSCConstants::MAX_NUM_STRIPS, CSCTriggerNumbering::maxTriggerCscId(), CSCTriggerNumbering::minTriggerCscId(), me0TriggerPseudoDigis_cff::nStrips, CSCLayerGeometry::numberOfStrips(), mps_fire::result, relativeConstraints::ring, CSCTriggerNumbering::ringFromTriggerLabels(), CSCTFConstants::SECTOR1_CENT_RAD, CSCTFConstants::SECTOR_DEG, CSCTFConstants::SECTOR_RAD, and digitizers_cfi::strip.

Referenced by globalPhiME().

◆ calcLocalPhi()

lclphidat CSCSectorReceiverLUT::calcLocalPhi ( const lclphiadd address) const
private

Local Phi LUT.

Local Phi Bend is always zero. Until we start using it.

Definition at line 137 of file CSCSectorReceiverLUT.cc.

137  {
138  lclphidat data;
139 
140  constexpr int maxPhiL = 1 << CSCBitWidths::kLocalPhiDataBitWidth;
141  double binPhiL = static_cast<double>(maxPhiL) / (2. * CSCConstants::MAX_NUM_STRIPS);
142 
143  double patternOffset;
144 
145  patternOffset = CSCPatternBank::getLegacyPosition((theadd.pattern_type << 3) + theadd.clct_pattern);
146 
147  // The phiL value stored is for the center of the half-/di-strip.
148  if (theadd.strip < 2 * CSCConstants::MAX_NUM_STRIPS)
149  if (theadd.pattern_type == 1 || isTMB07) // if halfstrip (Note: no distrips in TMB 2007 patterns)
150  data.phi_local = static_cast<unsigned>((0.5 + theadd.strip + patternOffset) * binPhiL);
151  else // if distrip
152  data.phi_local = static_cast<unsigned>((2 + theadd.strip + 4. * patternOffset) * binPhiL);
153  else {
154  throw cms::Exception("CSCSectorReceiverLUT") << "+++ Value of strip, " << theadd.strip << ", exceeds max allowed, "
155  << 2 * CSCConstants::MAX_NUM_STRIPS - 1 << " +++\n";
156  }
157 
158  if (data.phi_local >= maxPhiL) {
159  throw cms::Exception("CSCSectorReceiverLUT")
160  << "+++ Value of phi_local, " << data.phi_local << ", exceeds max allowed, " << maxPhiL - 1 << " +++\n";
161  }
162 
163  LogDebug("CSCSectorReceiver") << "endcap = " << _endcap << " station = " << _station << " maxPhiL = " << maxPhiL
164  << " binPhiL = " << binPhiL;
165  LogDebug("CSCSectorReceiver") << "strip # " << theadd.strip << " hs/ds = " << theadd.pattern_type
166  << " pattern = " << theadd.clct_pattern << " offset = " << patternOffset
167  << " phi_local = " << data.phi_local;
168 
170  data.phi_bend_local = 0;
171 
172  return data; //return LUT result
173 }

References _endcap, _station, data, Exception, CSCPatternBank::getLegacyPosition(), isTMB07, CSCBitWidths::kLocalPhiDataBitWidth, LogDebug, and CSCConstants::MAX_NUM_STRIPS.

Referenced by localPhi().

◆ encodeFileIndex()

std::string CSCSectorReceiverLUT::encodeFileIndex ( ) const

Helpers.

Definition at line 751 of file CSCSectorReceiverLUT.cc.

751  {
752  std::string fileName = "";
753  if (_station == 1) {
754  if (_subsector == 1)
755  fileName += "1a";
756  if (_subsector == 2)
757  fileName += "1b";
758  } else if (_station == 2)
759  fileName += "2";
760  else if (_station == 3)
761  fileName += "3";
762  else if (_station == 4)
763  fileName += "4";
764  fileName += "End";
765  if (_endcap == 1)
766  fileName += "1";
767  else
768  fileName += "2";
769  fileName += "Sec";
770  if (_sector == 1)
771  fileName += "1";
772  else if (_sector == 2)
773  fileName += "2";
774  else if (_sector == 3)
775  fileName += "3";
776  else if (_sector == 4)
777  fileName += "4";
778  else if (_sector == 5)
779  fileName += "5";
780  else if (_sector == 6)
781  fileName += "6";
782  fileName += "LUT";
783  return fileName;
784 }

References _endcap, _sector, _station, _subsector, MillePedeFileConverter_cfg::fileName, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by CSCSectorReceiverLUT().

◆ fillLocalPhiLUT()

void CSCSectorReceiverLUT::fillLocalPhiLUT ( )
private

Definition at line 175 of file CSCSectorReceiverLUT.cc.

175  {
176  // read data in from a file... Add this later.
177 }

◆ getGlobalEtaValue()

double CSCSectorReceiverLUT::getGlobalEtaValue ( const unsigned &  cscid,
const unsigned &  wire_group,
const unsigned &  phi_local 
) const
private

Calculate Eta correction

Definition at line 561 of file CSCSectorReceiverLUT.cc.

563  {
564  double result = 0.0;
565  unsigned wire_group = thewire_group;
566  int cscid = thecscid;
567  unsigned phi_local = thephi_local;
568 
569  // Flag to be set if one wants to apply phi corrections ONLY in ME1/1.
570  // Turn it into a parameter?
571  bool me1ir_only = false;
572 
574  edm::LogWarning("CSCSectorReceiverLUT|getEtaValue")
575  << " warning: cscId " << cscid << " is out of bounds [1-" << CSCTriggerNumbering::maxTriggerCscId() << "]\n";
577  }
578 
579  CSCLayerGeometry* layerGeom = nullptr;
580  const unsigned numBins = 1 << 2; // 4 local phi bins
581 
582  if (phi_local > numBins - 1) {
583  edm::LogWarning("CSCSectorReceiverLUT|getEtaValue")
584  << "warning: phiL " << phi_local << " is out of bounds [0-" << numBins - 1 << "]\n";
585  phi_local = numBins - 1;
586  }
587  try {
590  CSCDetId detid(_endcap, _station, ring, chid, 0);
591  const CSCChamber* thechamber = const_cast<const CSCChamber*>(csc_g->chamber(detid));
592  if (thechamber) {
593  layerGeom = const_cast<CSCLayerGeometry*>(thechamber->layer(CSCConstants::KEY_ALCT_LAYER)->geometry());
594  const unsigned nWireGroups = layerGeom->numberOfWireGroups();
595 
596  // Check wire group numbers; expect them to be counted from 0, as in
597  // CorrelatedLCTDigi class.
598  if (wire_group >= nWireGroups) {
599  edm::LogWarning("CSCSectorReceiverLUT|getEtaValue")
600  << "warning: wireGroup " << wire_group << " is out of bounds [0-" << nWireGroups << ")\n";
601  wire_group = nWireGroups - 1;
602  }
603  // Convert to [1; nWireGroups] range used in geometry methods.
604  wire_group += 1;
605 
606  // If me1ir_only is set, apply phi corrections only in ME1/1.
607  if (me1ir_only && (_station != 1 || CSCTriggerNumbering::ringFromTriggerLabels(_station, cscid) != 1)) {
608  result = thechamber->layer(CSCConstants::KEY_ALCT_LAYER)->centerOfWireGroup(wire_group).eta();
609  } else {
610  const unsigned nStrips = layerGeom->numberOfStrips();
611  const unsigned nStripsPerBin = CSCConstants::MAX_NUM_STRIPS / numBins;
616  // Check that no strips will be left out.
617  if (nStrips % numBins != 0 || CSCConstants::MAX_NUM_STRIPS % numBins != 0)
618  edm::LogWarning("CSCSectorReceiverLUT")
619  << "getGlobalEtaValue warning: number of strips " << nStrips << " (" << CSCConstants::MAX_NUM_STRIPS
620  << ") is not divisible by numBins " << numBins << " Station " << _station << " sector " << _sector
621  << " subsector " << _subsector << " cscid " << cscid << "\n";
622 
623  unsigned maxStripPrevBin = 0, maxStripThisBin = 0;
624  unsigned correctionStrip;
625  LocalPoint lPoint;
626  GlobalPoint gPoint;
627  // Bins phi_local and find the the middle strip for each bin.
628  maxStripThisBin = nStripsPerBin * (phi_local + 1);
629  if (maxStripThisBin <= nStrips) {
630  correctionStrip = nStripsPerBin / 2 * (2 * phi_local + 1);
631  } else {
632  // If the actual number of strips in the chamber is smaller than
633  // the number of strips corresponding to the right edge of this phi
634  // local bin, we take the middle strip between number of strips
635  // at the left edge of the bin and the actual number of strips.
636  maxStripPrevBin = nStripsPerBin * phi_local;
637  correctionStrip = (nStrips + maxStripPrevBin) / 2;
638  }
639 
640  lPoint = layerGeom->stripWireGroupIntersection(correctionStrip, wire_group);
641  gPoint = thechamber->layer(CSCConstants::KEY_ALCT_LAYER)->surface().toGlobal(lPoint);
642 
643  // end calc of eta correction.
644  result = gPoint.eta();
645  }
646  }
647  } catch (cms::Exception& e) {
648  LogDebug("CSCSectorReceiver|OutofBoundInput") << e.what();
649  }
650 
651  return std::fabs(result);
652 }

References _endcap, _sector, _station, _subsector, CSCLayer::centerOfWireGroup(), CSCGeometry::chamber(), CSCTriggerNumbering::chamberFromTriggerLabels(), csc_g, MillePedeFileConverter_cfg::e, PV3DBase< T, PVType, FrameType >::eta(), CSCLayer::geometry(), CSCConstants::KEY_ALCT_LAYER, CSCChamber::layer(), LogDebug, CSCConstants::MAX_NUM_STRIPS, CSCTriggerNumbering::maxTriggerCscId(), CSCTriggerNumbering::minTriggerCscId(), me0TriggerPseudoDigis_cff::nStrips, CSCLayerGeometry::numberOfStrips(), CSCLayerGeometry::numberOfWireGroups(), mps_fire::result, relativeConstraints::ring, CSCTriggerNumbering::ringFromTriggerLabels(), CSCLayerGeometry::stripWireGroupIntersection(), GeomDet::surface(), and Surface::toGlobal().

Referenced by calcGlobalEtaME().

◆ getGlobalPhiValue()

double CSCSectorReceiverLUT::getGlobalPhiValue ( const CSCLayer thelayer,
const unsigned &  strip,
const unsigned &  wire_group 
) const
private

Definition at line 220 of file CSCSectorReceiverLUT.cc.

222  {
223  double result = 0.0;
224  //CSCLayerGeometry* thegeom;
225  //LocalPoint lp;
226  //GlobalPoint gp;
227 
228  try {
229  //thegeom = const_cast<CSCLayerGeometry*>(thelayer->geometry());
230  //lp = thegeom->stripWireGroupIntersection(strip, wire_group);
231  //gp = thelayer->surface().toGlobal(lp);
232  result = thelayer->centerOfStrip(strip).phi(); //gp.phi();
233 
234  if (result < 0.)
235  result += 2. * M_PI;
236  } catch (edm::Exception& e) {
237  LogDebug("CSCSectorReceiverLUT|getGlobalPhiValue") << e.what();
238  }
239 
240  return result;
241 }

References CSCLayer::centerOfStrip(), MillePedeFileConverter_cfg::e, LogDebug, M_PI, PV3DBase< T, PVType, FrameType >::phi(), mps_fire::result, and digitizers_cfi::strip.

Referenced by calcGlobalPhiME().

◆ globalEtaME() [1/3]

gbletadat CSCSectorReceiverLUT::globalEtaME ( gbletaadd  address,
const bool  gangedME1a = false 
) const

◆ globalEtaME() [2/3]

gbletadat CSCSectorReceiverLUT::globalEtaME ( int  phi_bend,
int  phi_local,
int  wire_group,
int  cscid,
const bool  gangedME1a = false 
) const

Definition at line 705 of file CSCSectorReceiverLUT.cc.

706  {
708  gbletaadd theadd;
709 
710  theadd.phi_bend = tphi_bend;
711  theadd.phi_local = (tphi_local >> (CSCBitWidths::kLocalPhiDataBitWidth - 2)) & 0x3; // want 2 msb of local phi
712  theadd.wire_group = twire_group;
713  theadd.cscid = tcscid;
714  if (useMiniLUTs && isTMB07)
716  _endcap, _sector, _station, _subsector, theadd.toint(), gangedME1a);
717  else if (LUTsFromFile)
718  result = me_global_eta[theadd.toint()];
719  else
720  result = calcGlobalEtaME(theadd);
721 
722  return result;
723 }

References _endcap, _sector, _station, _subsector, calcGlobalEtaME(), CSCSectorReceiverMiniLUT::calcGlobalEtaMEMini(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, isTMB07, CSCBitWidths::kLocalPhiDataBitWidth, LUTsFromFile, me_global_eta, mps_fire::result, and useMiniLUTs.

Referenced by L1TCSCTF::analyze(), L1Analysis::L1AnalysisCSCTF::SetLCTs(), and L1Analysis::L1AnalysisCSCTF::SetTracks().

◆ globalEtaME() [3/3]

gbletadat CSCSectorReceiverLUT::globalEtaME ( unsigned  address,
const bool  gangedME1a = false 
) const

◆ globalPhiMB() [1/3]

gblphidat CSCSectorReceiverLUT::globalPhiMB ( gblphiadd  address,
const bool  gangedME1a = false 
) const

Definition at line 548 of file CSCSectorReceiverLUT.cc.

548  {
550 
551  //if(useMiniLUTs && isTMB07) result = CSCSectorReceiverMiniLUT::calcGlobalPhiMBMini(_endcap, _sector, _subsector, address.toint());
552  //else
553  if (LUTsFromFile)
554  result = mb_global_phi[address.toint()];
555  else
557 
558  return result;
559 }

References calcGlobalPhiMB(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, globalPhiME(), LUTsFromFile, mb_global_phi, and mps_fire::result.

◆ globalPhiMB() [2/3]

gblphidat CSCSectorReceiverLUT::globalPhiMB ( int  phi_local,
int  wire_group,
int  cscid,
const bool  gangedME1a = false 
) const

Definition at line 515 of file CSCSectorReceiverLUT.cc.

515  {
516  gblphiadd address;
518 
519  address.cscid = cscid;
520  address.wire_group = ((1 << 5) - 1) & (wire_group >> 2);
521  address.phi_local = phi_local;
522 
523  // comment for now
524  // if(useMiniLUTs && isTMB07) result = CSCSectorReceiverMiniLUT::calcGlobalPhiMBMini(_endcap, _sector, _subsector, address.toint());
525  //else
526  if (LUTsFromFile)
527  result = mb_global_phi[address.toint()];
528  else
530 
531  return result;
532 }

References calcGlobalPhiMB(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, globalPhiME(), LUTsFromFile, mb_global_phi, and mps_fire::result.

◆ globalPhiMB() [3/3]

gblphidat CSCSectorReceiverLUT::globalPhiMB ( unsigned  address,
const bool  gangedME1a = false 
) const

Definition at line 534 of file CSCSectorReceiverLUT.cc.

534  {
536  gblphiadd theadd(address);
537 
538  //if(useMiniLUTs && isTMB07) result = CSCSectorReceiverMiniLUT::calcGlobalPhiMBMini(_endcap, _sector, _subsector, address);
539  //else
540  if (LUTsFromFile)
541  result = mb_global_phi[theadd.toint()];
542  else
544 
545  return result;
546 }

References calcGlobalPhiMB(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, globalPhiME(), LUTsFromFile, mb_global_phi, and mps_fire::result.

◆ globalPhiME() [1/3]

gblphidat CSCSectorReceiverLUT::globalPhiME ( gblphiadd  address,
const bool  gangedME1a = false 
) const

◆ globalPhiME() [2/3]

gblphidat CSCSectorReceiverLUT::globalPhiME ( int  phi_local,
int  wire_group,
int  cscid,
const bool  gangedME1a = false 
) const

Definition at line 444 of file CSCSectorReceiverLUT.cc.

444  {
446  gblphiadd theadd;
447  theadd.phi_local = phi_local;
448  theadd.wire_group = ((1 << 5) - 1) & (wire_group >> 2); // want 2-7 of wg
449  theadd.cscid = cscid;
450 
451  if (useMiniLUTs && isTMB07)
453  _endcap, _sector, _station, _subsector, theadd.toint(), gangedME1a);
454  else if (LUTsFromFile)
455  result = me_global_phi[theadd.toint()];
456  else
457  result = calcGlobalPhiME(theadd);
458 
459  return result;
460 }

References _endcap, _sector, _station, _subsector, calcGlobalPhiME(), CSCSectorReceiverMiniLUT::calcGlobalPhiMEMini(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, isTMB07, LUTsFromFile, me_global_phi, mps_fire::result, and useMiniLUTs.

Referenced by L1TCSCTF::analyze(), globalPhiMB(), L1Analysis::L1AnalysisCSCTF::SetLCTs(), and L1Analysis::L1AnalysisCSCTF::SetTracks().

◆ globalPhiME() [3/3]

gblphidat CSCSectorReceiverLUT::globalPhiME ( unsigned  address,
const bool  gangedME1a = false 
) const

◆ localPhi() [1/3]

lclphidat CSCSectorReceiverLUT::localPhi ( int  strip,
int  pattern,
int  quality,
int  lr,
const bool  gangedME1a = false 
) const

Geometry Lookup Tables.

Please note, the pattern used below is the 4 bit pattern. ex) digi->getPattern(), NOT digi->getCLCTPattern()

Definition at line 179 of file CSCSectorReceiverLUT.cc.

180  {
181  lclphiadd theadd;
182 
183  theadd.strip = strip;
184  theadd.clct_pattern = pattern & 0x7;
185  theadd.pattern_type = (pattern & 0x8) >> 3;
186  theadd.quality = quality;
187  theadd.lr = lr;
188  theadd.spare = 0;
189 
190  return localPhi(theadd, gangedME1a);
191 }

References l1temulator_dqm_sourceclient-live_cfg::gangedME1a, topSingleLeptonDQM_PU_cfi::pattern, qcdUeDQM_cfi::quality, and digitizers_cfi::strip.

Referenced by L1TCSCTF::analyze(), L1Analysis::L1AnalysisCSCTF::SetLCTs(), and L1Analysis::L1AnalysisCSCTF::SetTracks().

◆ localPhi() [2/3]

lclphidat CSCSectorReceiverLUT::localPhi ( lclphiadd  address,
const bool  gangedME1a = false 
) const

Definition at line 207 of file CSCSectorReceiverLUT.cc.

207  {
209 
210  if (useMiniLUTs && isTMB07) {
212  } else if (LUTsFromFile)
213  result = me_lcl_phi[address.toint()];
214  else
215  result = calcLocalPhi(address);
216 
217  return result;
218 }

References calcLocalPhi(), CSCSectorReceiverMiniLUT::calcLocalPhiMini(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, isTMB07, LUTsFromFile, me_lcl_phi, mps_fire::result, and useMiniLUTs.

◆ localPhi() [3/3]

lclphidat CSCSectorReceiverLUT::localPhi ( unsigned  address,
const bool  gangedME1a = false 
) const

Definition at line 193 of file CSCSectorReceiverLUT.cc.

193  {
195  lclphiadd theadd(address);
196 
197  if (useMiniLUTs && isTMB07) {
199  } else if (LUTsFromFile)
200  result = me_lcl_phi[address];
201  else
202  result = calcLocalPhi(theadd);
203 
204  return result;
205 }

References calcLocalPhi(), CSCSectorReceiverMiniLUT::calcLocalPhiMini(), l1temulator_dqm_sourceclient-live_cfg::gangedME1a, isTMB07, LUTsFromFile, me_lcl_phi, mps_fire::result, and useMiniLUTs.

◆ operator=()

CSCSectorReceiverLUT & CSCSectorReceiverLUT::operator= ( const CSCSectorReceiverLUT lut)

Definition at line 83 of file CSCSectorReceiverLUT.cc.

83  {
84  if (this != &lut) {
85  _endcap = lut._endcap;
86  _sector = lut._sector;
87  _subsector = lut._subsector;
88  _station = lut._station;
94  isBinary = lut.isBinary;
95 
96  if (lut.mb_global_phi) {
99  } else
100  mb_global_phi = nullptr;
101 
102  if (lut.me_global_phi) {
105  } else
106  me_global_phi = nullptr;
107 
108  if (lut.me_global_eta) {
111  } else
112  me_global_eta = nullptr;
113  }
114  return *this;
115 }

References _endcap, _sector, _station, _subsector, isBinary, CSCBitWidths::kGlobalEtaAddressWidth, CSCBitWidths::kGlobalPhiAddressWidth, LUTsFromFile, mb_gbl_phi_file, mb_global_phi, me_gbl_eta_file, me_gbl_phi_file, me_global_eta, me_global_phi, and me_lcl_phi_file.

◆ readLUTsFromFile()

void CSCSectorReceiverLUT::readLUTsFromFile ( )
private

Arrays for holding read in LUT information. MB LUT arrays only initialized in ME1

Definition at line 786 of file CSCSectorReceiverLUT.cc.

786  {
787  if (!me_lcl_phi_loaded) {
790  std::ifstream LocalPhiLUT;
791 
792  edm::LogInfo("CSCSectorReceiverLUT") << "Loading SR LUT: " << fName;
793 
794  if (isBinary) {
795  LocalPhiLUT.open(fName.c_str(), std::ios::binary);
796  LocalPhiLUT.seekg(0, std::ios::end);
797  int length = LocalPhiLUT.tellg();
798  if (length == (1 << CSCBitWidths::kLocalPhiAddressWidth) * sizeof(short)) {
799  LocalPhiLUT.seekg(0, std::ios::beg);
800  LocalPhiLUT.read(reinterpret_cast<char*>(me_lcl_phi), length);
801  LocalPhiLUT.close();
802  } else
803  edm::LogError("CSCSectorReceiverLUT") << "File " << fName << " is incorrect size!";
804  LocalPhiLUT.close();
805  } else {
806  LocalPhiLUT.open(fName.c_str());
807  unsigned i = 0;
808  unsigned short temp = 0;
809  while (!LocalPhiLUT.eof() && i < 1 << CSCBitWidths::kLocalPhiAddressWidth) {
810  LocalPhiLUT >> temp;
811  me_lcl_phi[i++] = (*reinterpret_cast<lclphidat*>(&temp));
812  }
813  LocalPhiLUT.close();
814  }
815  }
816  if (!me_global_phi) {
819  std::ifstream GlobalPhiLUT;
820 
821  edm::LogInfo("CSCSectorReceiverLUT") << "Loading SR LUT: " << fName;
822 
823  if (isBinary) {
824  GlobalPhiLUT.open(fName.c_str(), std::ios::binary);
825  GlobalPhiLUT.seekg(0, std::ios::end);
826  int length = GlobalPhiLUT.tellg();
827  if (length == (1 << CSCBitWidths::kGlobalPhiAddressWidth) * sizeof(short)) {
828  GlobalPhiLUT.seekg(0, std::ios::beg);
829  GlobalPhiLUT.read(reinterpret_cast<char*>(me_global_phi), length);
830  } else
831  edm::LogError("CSCSectorReceiverLUT") << "File " << fName << " is incorrect size!";
832  GlobalPhiLUT.close();
833  } else {
834  GlobalPhiLUT.open(fName.c_str());
835  unsigned short temp = 0;
836  unsigned i = 0;
837  while (!GlobalPhiLUT.eof() && i < 1 << CSCBitWidths::kGlobalPhiAddressWidth) {
838  GlobalPhiLUT >> temp;
839  me_global_phi[i++] = (*reinterpret_cast<gblphidat*>(&temp));
840  }
841  GlobalPhiLUT.close();
842  }
843  }
844  if (!mb_global_phi && _station == 1) // MB lut only in station one.
845  {
848  std::ifstream GlobalPhiLUT;
849 
850  edm::LogInfo("CSCSectorReceiverLUT") << "Loading SR LUT: " << fName;
851 
852  if (isBinary) {
853  GlobalPhiLUT.open(fName.c_str(), std::ios::binary);
854  GlobalPhiLUT.seekg(0, std::ios::end);
855  int length = GlobalPhiLUT.tellg();
856  if (length == (1 << CSCBitWidths::kGlobalPhiAddressWidth) * sizeof(short)) {
857  GlobalPhiLUT.seekg(0, std::ios::beg);
858  GlobalPhiLUT.read(reinterpret_cast<char*>(mb_global_phi), length);
859  } else
860  edm::LogError("CSCSectorReceiverLUT") << "File " << fName << " is incorrect size!";
861  GlobalPhiLUT.close();
862  } else {
863  GlobalPhiLUT.open(fName.c_str());
864  unsigned short temp = 0;
865  unsigned i = 0;
866  while (!GlobalPhiLUT.eof() && i < 1 << CSCBitWidths::kGlobalPhiAddressWidth) {
867  GlobalPhiLUT >> temp;
868  mb_global_phi[i++] = (*reinterpret_cast<gblphidat*>(&temp));
869  }
870  GlobalPhiLUT.close();
871  }
872  }
873  if (!me_global_eta) {
876  std::ifstream GlobalEtaLUT;
877 
878  edm::LogInfo("CSCSectorReceiverLUT") << "Loading SR LUT: " << fName;
879 
880  if (isBinary) {
881  GlobalEtaLUT.open(fName.c_str(), std::ios::binary);
882  GlobalEtaLUT.seekg(0, std::ios::end);
883  int length = GlobalEtaLUT.tellg();
884  if (length == (1 << CSCBitWidths::kGlobalEtaAddressWidth) * sizeof(short)) {
885  GlobalEtaLUT.seekg(0, std::ios::beg);
886  GlobalEtaLUT.read(reinterpret_cast<char*>(me_global_eta), length);
887  } else
888  edm::LogError("CSCSectorReceiverLUT") << "File " << fName << " is incorrect size!";
889  GlobalEtaLUT.close();
890  } else {
891  GlobalEtaLUT.open(fName.c_str());
892  unsigned short temp = 0;
893  unsigned i = 0;
894  while (!GlobalEtaLUT.eof() && i < 1 << CSCBitWidths::kGlobalEtaAddressWidth) {
895  GlobalEtaLUT >> temp;
896  me_global_eta[i++] = (*reinterpret_cast<gbletadat*>(&temp));
897  }
898  GlobalEtaLUT.close();
899  }
900  }
901 }

References _station, mps_fire::end, MainPageGenerator::fName, edm::FileInPath::fullPath(), mps_fire::i, isBinary, CSCBitWidths::kGlobalEtaAddressWidth, CSCBitWidths::kGlobalPhiAddressWidth, CSCBitWidths::kLocalPhiAddressWidth, mb_gbl_phi_file, mb_global_phi, me_gbl_eta_file, me_gbl_phi_file, me_global_eta, me_global_phi, me_lcl_phi, me_lcl_phi_file, me_lcl_phi_loaded, AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

Referenced by CSCSectorReceiverLUT().

◆ setCSCGeometry()

void CSCSectorReceiverLUT::setCSCGeometry ( const CSCGeometry g)
inline

Definition at line 50 of file CSCSectorReceiverLUT.h.

50 { csc_g = g; }

References csc_g, and g.

Member Data Documentation

◆ _endcap

int CSCSectorReceiverLUT::_endcap
private

◆ _sector

int CSCSectorReceiverLUT::_sector
private

◆ _station

int CSCSectorReceiverLUT::_station
private

◆ _subsector

int CSCSectorReceiverLUT::_subsector
private

◆ csc_g

const CSCGeometry* CSCSectorReceiverLUT::csc_g
private

Definition at line 88 of file CSCSectorReceiverLUT.h.

Referenced by calcGlobalPhiME(), getGlobalEtaValue(), and setCSCGeometry().

◆ isBinary

bool CSCSectorReceiverLUT::isBinary
private

Definition at line 75 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), operator=(), and readLUTsFromFile().

◆ isTMB07

bool CSCSectorReceiverLUT::isTMB07
private

Definition at line 77 of file CSCSectorReceiverLUT.h.

Referenced by calcLocalPhi(), globalEtaME(), globalPhiME(), and localPhi().

◆ LUTsFromFile

bool CSCSectorReceiverLUT::LUTsFromFile
private

◆ mb_gbl_phi_file

edm::FileInPath CSCSectorReceiverLUT::mb_gbl_phi_file
private

Definition at line 71 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), operator=(), and readLUTsFromFile().

◆ mb_global_phi

gblphidat * CSCSectorReceiverLUT::mb_global_phi
private

◆ me_gbl_eta_file

edm::FileInPath CSCSectorReceiverLUT::me_gbl_eta_file
private

Definition at line 72 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), operator=(), and readLUTsFromFile().

◆ me_gbl_phi_file

edm::FileInPath CSCSectorReceiverLUT::me_gbl_phi_file
private

Definition at line 70 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), operator=(), and readLUTsFromFile().

◆ me_global_eta

gbletadat* CSCSectorReceiverLUT::me_global_eta
private

◆ me_global_phi

gblphidat* CSCSectorReceiverLUT::me_global_phi
private

◆ me_lcl_phi

lclphidat * CSCSectorReceiverLUT::me_lcl_phi = nullptr
staticprivate

Definition at line 84 of file CSCSectorReceiverLUT.h.

Referenced by localPhi(), readLUTsFromFile(), and ~CSCSectorReceiverLUT().

◆ me_lcl_phi_file

edm::FileInPath CSCSectorReceiverLUT::me_lcl_phi_file
private

Definition at line 69 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), operator=(), and readLUTsFromFile().

◆ me_lcl_phi_loaded

bool CSCSectorReceiverLUT::me_lcl_phi_loaded = false
staticprivate

Definition at line 83 of file CSCSectorReceiverLUT.h.

Referenced by readLUTsFromFile(), and ~CSCSectorReceiverLUT().

◆ useMiniLUTs

bool CSCSectorReceiverLUT::useMiniLUTs
private

Definition at line 74 of file CSCSectorReceiverLUT.h.

Referenced by CSCSectorReceiverLUT(), globalEtaME(), globalPhiME(), and localPhi().

CSCSectorReceiverMiniLUT::calcGlobalEtaMEMini
static global_eta_data calcGlobalEtaMEMini(unsigned short endcap, unsigned short sector, unsigned short station, unsigned short subsector, unsigned theadd, const bool gangedME1a)
Definition: CSCSectorReceiverMiniLUT.cc:50
CSCSectorReceiverLUT::localPhi
lclphidat localPhi(int strip, int pattern, int quality, int lr, const bool gangedME1a=false) const
Geometry Lookup Tables.
Definition: CSCSectorReceiverLUT.cc:179
mps_fire.i
i
Definition: mps_fire.py:428
CSCChamber::layer
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to the given id.
Definition: CSCChamber.cc:30
CSCSectorReceiverLUT::calcGlobalEtaME
gbletadat calcGlobalEtaME(const gbletaadd &address) const
Global Eta LUT.
Definition: CSCSectorReceiverLUT.cc:654
CSCSectorReceiverMiniLUT::calcLocalPhiMini
static lclphidat calcLocalPhiMini(unsigned theadd, const bool gangedME1a)
Definition: CSCSectorReceiverMiniLUT.cc:18
lclphidat
class local_phi_data lclphidat
Data Types.
relativeConstraints.station
station
Definition: relativeConstraints.py:67
digitizers_cfi.strip
strip
Definition: digitizers_cfi.py:19
CSCBitWidths::kLocalPhiAddressWidth
Definition: CSCBitWidths.h:18
gbletaadd
class global_eta_address gbletaadd
CSCSectorReceiverLUT::me_global_phi
gblphidat * me_global_phi
Definition: CSCSectorReceiverLUT.h:85
CSCConstants::KEY_ALCT_LAYER
Definition: CSCConstants.h:46
CSCLayer
Definition: CSCLayer.h:24
CSCSectorReceiverLUT::mb_global_phi
gblphidat * mb_global_phi
Definition: CSCSectorReceiverLUT.h:85
CSCSectorReceiverLUT::encodeFileIndex
std::string encodeFileIndex() const
Helpers.
Definition: CSCSectorReceiverLUT.cc:751
CSCSectorReceiverLUT::me_lcl_phi_file
edm::FileInPath me_lcl_phi_file
Definition: CSCSectorReceiverLUT.h:69
CSCSectorReceiverLUT::readLUTsFromFile
void readLUTsFromFile()
Definition: CSCSectorReceiverLUT.cc:786
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
CSCSectorReceiverLUT::csc_g
const CSCGeometry * csc_g
Definition: CSCSectorReceiverLUT.h:88
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
MainPageGenerator.fName
fName
Definition: MainPageGenerator.py:301
edm::Exception
Definition: EDMException.h:77
CSCSectorReceiverLUT::_sector
int _sector
Definition: CSCSectorReceiverLUT.h:53
edm::FileInPath
Definition: FileInPath.h:64
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
CSCConstants::MAX_NUM_STRIPS
Definition: CSCConstants.h:24
CSCLayerGeometry::stripWireGroupIntersection
LocalPoint stripWireGroupIntersection(int strip, int wireGroup) const
Definition: CSCLayerGeometry.cc:141
CSCSectorReceiverLUT::globalPhiME
gblphidat globalPhiME(int phi_local, int wire_group, int cscid, const bool gangedME1a=false) const
Definition: CSCSectorReceiverLUT.cc:444
CSCLayer::centerOfWireGroup
GlobalPoint centerOfWireGroup(int wireGroup) const
Definition: CSCLayer.cc:10
CSCLayerGeometry
Definition: CSCLayerGeometry.h:25
mps_fire.end
end
Definition: mps_fire.py:242
CSCSectorReceiverLUT::me_gbl_eta_file
edm::FileInPath me_gbl_eta_file
Definition: CSCSectorReceiverLUT.h:72
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
CSCPatternBank::getLegacyPosition
static double getLegacyPosition(int pattern)
Definition: CSCPatternBank.cc:31
CSCSectorReceiverLUT::isTMB07
bool isTMB07
Definition: CSCSectorReceiverLUT.h:77
CSCSectorReceiverLUT::_endcap
int _endcap
Definition: CSCSectorReceiverLUT.h:53
CSCChamber
Definition: CSCChamber.h:22
CSCSectorReceiverLUT::mb_gbl_phi_file
edm::FileInPath mb_gbl_phi_file
Definition: CSCSectorReceiverLUT.h:71
CSCSectorReceiverLUT::LUTsFromFile
bool LUTsFromFile
Definition: CSCSectorReceiverLUT.h:73
CSCLayer::geometry
const CSCLayerGeometry * geometry() const
Definition: CSCLayer.h:44
CSCSectorReceiverLUT::getGlobalPhiValue
double getGlobalPhiValue(const CSCLayer *thelayer, const unsigned &strip, const unsigned &wire_group) const
Definition: CSCSectorReceiverLUT.cc:220
CSCLayer::centerOfStrip
GlobalPoint centerOfStrip(int strip) const
Definition: CSCLayer.cc:4
Point3DBase< float, LocalTag >
CSCSectorReceiverLUT::isBinary
bool isBinary
Definition: CSCSectorReceiverLUT.h:75
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
CSCSectorReceiverLUT::me_gbl_phi_file
edm::FileInPath me_gbl_phi_file
Definition: CSCSectorReceiverLUT.h:70
CSCSectorReceiverLUT::me_global_eta
gbletadat * me_global_eta
Definition: CSCSectorReceiverLUT.h:86
l1temulator_dqm_sourceclient-live_cfg.gangedME1a
gangedME1a
Definition: l1temulator_dqm_sourceclient-live_cfg.py:99
CSCTFConstants::SECTOR_DEG
const static double SECTOR_DEG
Definition: CSCTFConstants.h:54
CSCSectorReceiverLUT::calcLocalPhi
lclphidat calcLocalPhi(const lclphiadd &address) const
Local Phi LUT.
Definition: CSCSectorReceiverLUT.cc:137
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
CSCBitWidths::kGlobalEtaAddressWidth
Definition: CSCBitWidths.h:19
CSCSectorReceiverLUT::_station
int _station
Definition: CSCSectorReceiverLUT.h:53
CSCSectorReceiverMiniLUT::calcGlobalPhiMEMini
static global_phi_data calcGlobalPhiMEMini(unsigned short endcap, unsigned short sector, unsigned short station, unsigned short subsector, unsigned theadd, const bool gangedME1a)
Definition: CSCSectorReceiverMiniLUT.cc:134
CSCTriggerNumbering::minTriggerCscId
static int minTriggerCscId()
Definition: CSCTriggerNumbering.h:111
CSCSectorReceiverLUT::getGlobalEtaValue
double getGlobalEtaValue(const unsigned &cscid, const unsigned &wire_group, const unsigned &phi_local) const
Definition: CSCSectorReceiverLUT.cc:561
CSCTFConstants::SECTOR1_CENT_RAD
const static double SECTOR1_CENT_RAD
Definition: CSCTFConstants.h:46
CSCSectorReceiverLUT::calcGlobalPhiME
gblphidat calcGlobalPhiME(const gblphiadd &address) const
Global Phi LUT.
Definition: CSCSectorReceiverLUT.cc:243
CSCDetId
Definition: CSCDetId.h:26
gblphiadd
class global_phi_address gblphiadd
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
CSCSectorReceiverLUT::calcGlobalPhiMB
gblphidat calcGlobalPhiMB(const gblphidat &me_gphi_data) const
Definition: CSCSectorReceiverLUT.cc:489
CSCTFConstants::minEta
const static double minEta
Definition: CSCTFConstants.h:39
CSCBitWidths::kGlobalPhiDataBitWidth
Definition: CSCBitWidths.h:28
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
topSingleLeptonDQM_PU_cfi.pattern
pattern
Definition: topSingleLeptonDQM_PU_cfi.py:39
CSCTriggerNumbering::ringFromTriggerLabels
static int ringFromTriggerLabels(int station, int triggerCSCID)
Definition: CSCTriggerNumbering.cc:5
CSCTriggerNumbering::chamberFromTriggerLabels
static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID)
Definition: CSCTriggerNumbering.cc:30
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
CSCTFConstants::etaBins
Definition: CSCTFConstants.h:34
me0TriggerPseudoDigis_cff.nStrips
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
Definition: me0TriggerPseudoDigis_cff.py:26
lclphiadd
class local_phi_address lclphiadd
CSCBitWidths::kLocalPhiDataBitWidth
Definition: CSCBitWidths.h:25
gbletadat
class global_eta_data gbletadat
CSCSectorReceiverLUT::me_lcl_phi_loaded
static bool me_lcl_phi_loaded
Definition: CSCSectorReceiverLUT.h:83
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
CSCTFConstants::maxEta
const static double maxEta
Definition: CSCTFConstants.h:40
Exception
Definition: hltDiff.cc:246
CSCSectorReceiverLUT::useMiniLUTs
bool useMiniLUTs
Definition: CSCSectorReceiverLUT.h:74
CSCConstants::KEY_CLCT_LAYER
Definition: CSCConstants.h:46
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
CSCBitWidths::kGlobalPhiAddressWidth
Definition: CSCBitWidths.h:20
CSCTriggerNumbering::maxTriggerCscId
static int maxTriggerCscId()
Definition: CSCTriggerNumbering.h:110
gblphidat
class global_phi_data gblphidat
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
HLT_FULL_cff.delta_phi
delta_phi
Definition: HLT_FULL_cff.py:11735
mps_fire.result
result
Definition: mps_fire.py:311
CSCTFConstants::SECTOR_RAD
const static double SECTOR_RAD
Definition: CSCTFConstants.h:55
cms::Exception
Definition: Exception.h:70
CSCSectorReceiverLUT::_subsector
int _subsector
Definition: CSCSectorReceiverLUT.h:53
CSCSectorReceiverLUT::me_lcl_phi
static lclphidat * me_lcl_phi
Definition: CSCSectorReceiverLUT.h:84
CSCLayerGeometry::numberOfStrips
int numberOfStrips() const
Definition: CSCLayerGeometry.h:66
CSCLayerGeometry::numberOfWireGroups
int numberOfWireGroups() const
Definition: CSCLayerGeometry.h:76
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
CSCGeometry::chamber
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
Definition: CSCGeometry.cc:100
edm::FileInPath::fullPath
std::string fullPath() const
Definition: FileInPath.cc:163
g
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 g
Definition: Activities.doc:4
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37