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 24 of file CSCSectorReceiverLUT.cc.

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

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 118 of file CSCSectorReceiverLUT.cc.

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

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 655 of file CSCSectorReceiverLUT.cc.

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

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 490 of file CSCSectorReceiverLUT.cc.

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

References _subsector.

Referenced by globalPhiMB().

◆ calcGlobalPhiME()

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

Global Phi LUT.

Definition at line 244 of file CSCSectorReceiverLUT.cc.

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

References _endcap, _sector, _station, _subsector, CSCGeometry::chamber(), CSCTriggerNumbering::chamberFromTriggerLabels(), csc_g, HLT_2018_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 138 of file CSCSectorReceiverLUT.cc.

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

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

Referenced by localPhi().

◆ encodeFileIndex()

std::string CSCSectorReceiverLUT::encodeFileIndex ( ) const

Helpers.

Definition at line 752 of file CSCSectorReceiverLUT.cc.

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

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

Referenced by CSCSectorReceiverLUT().

◆ fillLocalPhiLUT()

void CSCSectorReceiverLUT::fillLocalPhiLUT ( )
private

Definition at line 176 of file CSCSectorReceiverLUT.cc.

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

◆ getGlobalEtaValue()

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

Calculate Eta correction

Definition at line 562 of file CSCSectorReceiverLUT.cc.

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

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 221 of file CSCSectorReceiverLUT.cc.

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

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 706 of file CSCSectorReceiverLUT.cc.

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

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 549 of file CSCSectorReceiverLUT.cc.

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

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 516 of file CSCSectorReceiverLUT.cc.

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

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 535 of file CSCSectorReceiverLUT.cc.

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

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 445 of file CSCSectorReceiverLUT.cc.

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

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 180 of file CSCSectorReceiverLUT.cc.

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

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 208 of file CSCSectorReceiverLUT.cc.

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

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 194 of file CSCSectorReceiverLUT.cc.

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

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 84 of file CSCSectorReceiverLUT.cc.

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

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 787 of file CSCSectorReceiverLUT.cc.

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

References _station, 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().

HLT_2018_cff.delta_phi
delta_phi
Definition: HLT_2018_cff.py:10311
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:51
CSCSectorReceiverLUT::localPhi
lclphidat localPhi(int strip, int pattern, int quality, int lr, const bool gangedME1a=false) const
Geometry Lookup Tables.
Definition: CSCSectorReceiverLUT.cc:180
mps_fire.i
i
Definition: mps_fire.py:355
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:655
CSCSectorReceiverMiniLUT::calcLocalPhiMini
static lclphidat calcLocalPhiMini(unsigned theadd, const bool gangedME1a)
Definition: CSCSectorReceiverMiniLUT.cc:19
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
edm::LogInfo
Definition: MessageLogger.h:254
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:752
CSCSectorReceiverLUT::me_lcl_phi_file
edm::FileInPath me_lcl_phi_file
Definition: CSCSectorReceiverLUT.h:69
CSCSectorReceiverLUT::readLUTsFromFile
void readLUTsFromFile()
Definition: CSCSectorReceiverLUT.cc:787
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
end
#define end
Definition: vmac.h:39
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:445
CSCLayer::centerOfWireGroup
GlobalPoint centerOfWireGroup(int wireGroup) const
Definition: CSCLayer.cc:10
CSCLayerGeometry
Definition: CSCLayerGeometry.h:25
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
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:221
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
edm::LogWarning
Definition: MessageLogger.h:141
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:138
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
CSCPatternLUT::get2007Position
static double get2007Position(int pattern)
Definition: CSCPatternLUT.cc:3
edm::LogError
Definition: MessageLogger.h:183
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:135
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:562
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:244
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:490
CSCTFConstants::minEta
const static double minEta
Definition: CSCTFConstants.h:39
CSCBitWidths::kGlobalPhiDataBitWidth
Definition: CSCBitWidths.h:28
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
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
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
mps_fire.result
result
Definition: mps_fire.py:303
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