CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
CSCMotherboardME11 Class Reference

#include <CSCMotherboardME11.h>

Inheritance diagram for CSCMotherboardME11:
CSCMotherboard

Public Member Functions

void clear ()
 
 CSCMotherboardME11 (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
 CSCMotherboardME11 ()
 
std::vector< CSCALCTDigigetALCTs1b ()
 
std::vector< CSCCLCTDigigetCLCTs1a ()
 
std::vector< CSCCLCTDigigetCLCTs1b ()
 
std::vector< CSCCorrelatedLCTDigigetLCTs1a ()
 
std::vector< CSCCorrelatedLCTDigigetLCTs1b ()
 
std::vector< CSCCorrelatedLCTDigireadoutLCTs (int me1ab)
 
std::vector< CSCCorrelatedLCTDigireadoutLCTs1a ()
 
std::vector< CSCCorrelatedLCTDigireadoutLCTs1b ()
 
void run (const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc)
 
void setConfigParameters (const CSCDBL1TPParameters *conf)
 
 ~CSCMotherboardME11 ()
 
- Public Member Functions inherited from CSCMotherboard
void clear ()
 
 CSCMotherboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf)
 
 CSCMotherboard ()
 
std::vector< CSCCorrelatedLCTDigigetLCTs ()
 
std::vector< CSCCorrelatedLCTDigireadoutLCTs ()
 
void run (const std::vector< int > w_time[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES], const std::vector< int > hs_times[CSCConstants::NUM_LAYERS][CSCConstants::NUM_HALF_STRIPS_7CFEBS], const std::vector< int > ds_times[CSCConstants::NUM_LAYERS][CSCConstants::NUM_HALF_STRIPS_7CFEBS])
 
void run (const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc)
 
void setConfigParameters (const CSCDBL1TPParameters *conf)
 
 ~CSCMotherboard ()
 

Public Attributes

CSCCathodeLCTProcessorclct1a
 
- Public Attributes inherited from CSCMotherboard
CSCAnodeLCTProcessoralct
 
CSCCathodeLCTProcessorclct
 

Private Types

enum  { ME1B = 1, ME1A =4 }
 

Private Member Functions

void correlateLCTs (CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2)
 
void correlateLCTs (CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2, int me)
 
bool doesALCTCrossCLCT (CSCALCTDigi &a, CSCCLCTDigi &c, int me)
 

Private Attributes

std::vector< CSCALCTDigialctV
 
CSCCorrelatedLCTDigi allLCTs1a [MAX_LCT_BINS][15][2]
 
CSCCorrelatedLCTDigi allLCTs1b [MAX_LCT_BINS][15][2]
 
bool clct_to_alct
 
std::vector< CSCCLCTDigiclctV1a
 
std::vector< CSCCLCTDigiclctV1b
 
bool disableME1a
 
bool drop_used_clcts
 
bool gangedME1a
 
bool match_earliest_alct_me11_only
 
bool match_earliest_clct_me11_only
 
unsigned int max_me11_lcts
 
int pref [MAX_LCT_BINS]
 
bool smartME1aME1b
 
unsigned int tmb_cross_bx_algo
 

Static Private Attributes

static const int lut_wg_vs_hs_me1a [48][2]
 
static const int lut_wg_vs_hs_me1ag [48][2]
 
static const int lut_wg_vs_hs_me1b [48][2]
 

Additional Inherited Members

- Protected Types inherited from CSCMotherboard
enum  { MAX_LCT_BINS = 16 }
 
- Protected Member Functions inherited from CSCMotherboard
void checkConfigParameters ()
 
CSCCorrelatedLCTDigi constructLCTs (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT)
 
void correlateLCTs (CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT)
 
void dumpConfigParams () const
 
unsigned int encodePattern (const int ptn, const int highPt)
 
unsigned int findQuality (const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT)
 
void testLCT ()
 
- Protected Attributes inherited from CSCMotherboard
unsigned int alct_trig_enable
 
unsigned int clct_trig_enable
 
bool drop_used_alcts
 
int early_tbins
 
CSCCorrelatedLCTDigi firstLCT [MAX_LCT_BINS]
 
int infoV
 
bool isMTCC
 
bool isSLHC
 
bool isTMB07
 
unsigned int match_trig_enable
 
unsigned int match_trig_window_size
 
unsigned int mpc_block_me1a
 
bool readout_earliest_2
 
CSCCorrelatedLCTDigi secondLCT [MAX_LCT_BINS]
 
const unsigned theEndcap
 
const unsigned theSector
 
const unsigned theStation
 
const unsigned theSubsector
 
const unsigned theTrigChamber
 
unsigned int tmb_l1a_window_size
 
- Static Protected Attributes inherited from CSCMotherboard
static const unsigned int def_alct_trig_enable = 0
 
static const unsigned int def_clct_trig_enable = 0
 
static const unsigned int def_match_trig_enable = 1
 
static const unsigned int def_match_trig_window_size = 7
 
static const unsigned int def_mpc_block_me1a = 1
 
static const unsigned int def_tmb_l1a_window_size = 7
 

Detailed Description

Extended CSCMotherboard for ME11 TMB upgrade to handle ME1b and (primarily unganged) ME1a separately

Author
Vadim Khotilovich 12 May 2009

Based on CSCMotherboard code

Definition at line 19 of file CSCMotherboardME11.h.

Member Enumeration Documentation

anonymous enum
private

labels for ME1a and ME1B

Enumerator
ME1B 
ME1A 

Definition at line 66 of file CSCMotherboardME11.h.

Constructor & Destructor Documentation

CSCMotherboardME11::CSCMotherboardME11 ( unsigned  endcap,
unsigned  station,
unsigned  sector,
unsigned  subsector,
unsigned  chamber,
const edm::ParameterSet conf 
)

Normal constructor.

Definition at line 63 of file CSCMotherboardME11.cc.

References clct1a, clct_to_alct, disableME1a, drop_used_clcts, gangedME1a, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), CSCMotherboard::isSLHC, visualization-live-secondInstance_cfg::m, match_earliest_alct_me11_only, match_earliest_clct_me11_only, CSCMotherboard::match_trig_window_size, max_me11_lcts, pref, smartME1aME1b, and tmb_cross_bx_algo.

66  :
67  CSCMotherboard(endcap, station, sector, subsector, chamber, conf)
68 {
69  edm::ParameterSet commonParams = conf.getParameter<edm::ParameterSet>("commonParam");
70 
71  // special configuration parameters for ME11 treatment
72  smartME1aME1b = commonParams.getUntrackedParameter<bool>("smartME1aME1b", true);
73  disableME1a = commonParams.getUntrackedParameter<bool>("disableME1a", false);
74  gangedME1a = commonParams.getUntrackedParameter<bool>("gangedME1a", false);
75 
76  if (!isSLHC) edm::LogError("L1CSCTPEmulatorConfigError")
77  << "+++ Upgrade CSCMotherboardME11 constructed while isSLHC is not set! +++\n";
78  if (!smartME1aME1b) edm::LogError("L1CSCTPEmulatorConfigError")
79  << "+++ Upgrade CSCMotherboardME11 constructed while smartME1aME1b is not set! +++\n";
80 
81  edm::ParameterSet alctParams = conf.getParameter<edm::ParameterSet>("alctSLHC");
82  edm::ParameterSet clctParams = conf.getParameter<edm::ParameterSet>("clctSLHC");
83  edm::ParameterSet tmbParams = conf.getParameter<edm::ParameterSet>("tmbSLHC");
84 
85  clct1a = new CSCCathodeLCTProcessor(endcap, station, sector, subsector, chamber, clctParams, commonParams, tmbParams);
86  clct1a->setRing(4);
87 
88  match_earliest_alct_me11_only = tmbParams.getUntrackedParameter<bool>("matchEarliestAlctME11Only",true);
89  match_earliest_clct_me11_only = tmbParams.getUntrackedParameter<bool>("matchEarliestClctME11Only",true);
90 
91  // if true: use regular CLCT-to-ALCT matching in TMB
92  // if false: do ALCT-to-CLCT matching
93  clct_to_alct = tmbParams.getUntrackedParameter<bool>("clctToAlct",true);
94 
95  // whether to not reuse CLCTs that were used by previous matching ALCTs
96  // in ALCT-to-CLCT algorithm
97  drop_used_clcts = tmbParams.getUntrackedParameter<bool>("tmbDropUsedClcts",true);
98 
99  tmb_cross_bx_algo = tmbParams.getUntrackedParameter<unsigned int>("tmbCrossBxAlgorithm");
100 
101  // maximum lcts per BX in ME11: 2, 3, 4 or 999
102  max_me11_lcts = tmbParams.getUntrackedParameter<unsigned int>("maxME11LCTs",4);
103 
105  for (unsigned int m=2; m<match_trig_window_size; m+=2)
106  {
107  pref[m-1] = pref[0] - m/2;
108  pref[m] = pref[0] + m/2;
109  }
110 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
unsigned int match_trig_window_size
int pref[MAX_LCT_BINS]
unsigned int max_me11_lcts
unsigned int tmb_cross_bx_algo
CSCCathodeLCTProcessor * clct1a
CSCMotherboardME11::CSCMotherboardME11 ( )

Constructor for use during testing.

Definition at line 113 of file CSCMotherboardME11.cc.

References clct1a, visualization-live-secondInstance_cfg::m, CSCMotherboard::match_trig_window_size, pref, and CSCCathodeLCTProcessor::setRing().

113  : CSCMotherboard()
114 {
115  // Constructor used only for testing.
116 
118  clct1a->setRing(4);
119 
121  for (unsigned int m=2; m<match_trig_window_size; m+=2)
122  {
123  pref[m-1] = pref[0] - m/2;
124  pref[m] = pref[0] + m/2;
125  }
126 }
unsigned int match_trig_window_size
int pref[MAX_LCT_BINS]
CSCCathodeLCTProcessor * clct1a
CSCMotherboardME11::~CSCMotherboardME11 ( )

Default destructor.

Definition at line 129 of file CSCMotherboardME11.cc.

References clct1a.

130 {
131  if (clct1a) delete clct1a;
132 }
CSCCathodeLCTProcessor * clct1a

Member Function Documentation

void CSCMotherboardME11::clear ( void  )

Clears correlated LCT and passes clear signal on to cathode and anode LCT processors.

Definition at line 135 of file CSCMotherboardME11.cc.

References allLCTs1a, allLCTs1b, clct1a, CSCCorrelatedLCTDigi::clear(), CSCCathodeLCTProcessor::clear(), CSCMotherboard::clear(), i, CSCMotherboard::match_trig_window_size, and CSCMotherboard::MAX_LCT_BINS.

Referenced by run().

136 {
138  if (clct1a) clct1a->clear();
139  for (int bx = 0; bx < MAX_LCT_BINS; bx++)
140  {
141  //firstLCT1a[bx].clear();
142  //secondLCT1a[bx].clear();
143  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
144  for (int i=0;i<2;i++)
145  {
146  allLCTs1b[bx][mbx][i].clear();
147  allLCTs1a[bx][mbx][i].clear();
148  }
149  }
150 }
int i
Definition: DBlmapReader.cc:9
CSCCorrelatedLCTDigi allLCTs1b[MAX_LCT_BINS][15][2]
unsigned int match_trig_window_size
CSCCorrelatedLCTDigi allLCTs1a[MAX_LCT_BINS][15][2]
CSCCathodeLCTProcessor * clct1a
void CSCMotherboardME11::correlateLCTs ( CSCALCTDigi  bestALCT,
CSCALCTDigi  secondALCT,
CSCCLCTDigi  bestCLCT,
CSCCLCTDigi  secondCLCT,
CSCCorrelatedLCTDigi lct1,
CSCCorrelatedLCTDigi lct2 
)
private

Definition at line 516 of file CSCMotherboardME11.cc.

References CSCMotherboard::alct_trig_enable, CSCMotherboard::clct_trig_enable, CSCMotherboard::constructLCTs(), CSCCLCTDigi::isValid(), CSCALCTDigi::isValid(), CSCMotherboard::match_trig_enable, and CSCCorrelatedLCTDigi::setTrknmb().

Referenced by run().

522 {
523  bool anodeBestValid = bestALCT.isValid();
524  bool anodeSecondValid = secondALCT.isValid();
525  bool cathodeBestValid = bestCLCT.isValid();
526  bool cathodeSecondValid = secondCLCT.isValid();
527 
528  if (anodeBestValid && !anodeSecondValid) secondALCT = bestALCT;
529  if (!anodeBestValid && anodeSecondValid) bestALCT = secondALCT;
530  if (cathodeBestValid && !cathodeSecondValid) secondCLCT = bestCLCT;
531  if (!cathodeBestValid && cathodeSecondValid) bestCLCT = secondCLCT;
532 
533  // ALCT-CLCT matching conditions are defined by "trig_enable" configuration
534  // parameters.
535  if ((alct_trig_enable && bestALCT.isValid()) ||
536  (clct_trig_enable && bestCLCT.isValid()) ||
537  (match_trig_enable && bestALCT.isValid() && bestCLCT.isValid()))
538  {
539  lct1 = constructLCTs(bestALCT, bestCLCT);
540  lct1.setTrknmb(1);
541  }
542 
543  if (((secondALCT != bestALCT) || (secondCLCT != bestCLCT)) &&
544  ((alct_trig_enable && secondALCT.isValid()) ||
545  (clct_trig_enable && secondCLCT.isValid()) ||
546  (match_trig_enable && secondALCT.isValid() && secondCLCT.isValid())))
547  {
548  lct2 = constructLCTs(secondALCT, secondCLCT);
549  lct2.setTrknmb(2);
550  }
551 }
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT)
unsigned int clct_trig_enable
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:30
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:30
unsigned int match_trig_enable
unsigned int alct_trig_enable
void setTrknmb(const uint16_t number)
Set track number (1,2) after sorting LCTs.
void CSCMotherboardME11::correlateLCTs ( CSCALCTDigi  bestALCT,
CSCALCTDigi  secondALCT,
CSCCLCTDigi  bestCLCT,
CSCCLCTDigi  secondCLCT,
CSCCorrelatedLCTDigi lct1,
CSCCorrelatedLCTDigi lct2,
int  me 
)
private

Definition at line 554 of file CSCMotherboardME11.cc.

References CSCTriggerNumbering::chamberFromTriggerLabels(), CSCALCTDigi::clear(), CSCCLCTDigi::clear(), CSCMotherboard::constructLCTs(), doesALCTCrossCLCT(), LogTrace, lumiPlot::lut, relativeConstraints::ring, CSCCorrelatedLCTDigi::setTrknmb(), CSCMotherboard::theEndcap, CSCMotherboard::theSector, CSCMotherboard::theStation, CSCMotherboard::theSubsector, and CSCMotherboard::theTrigChamber.

561 {
562  // assume that always anodeBestValid && cathodeBestValid
563 
564  if (secondALCT == bestALCT) secondALCT.clear();
565  if (secondCLCT == bestCLCT) secondCLCT.clear();
566 
567  int ok11 = doesALCTCrossCLCT( bestALCT, bestCLCT, me);
568  int ok12 = doesALCTCrossCLCT( bestALCT, secondCLCT, me);
569  int ok21 = doesALCTCrossCLCT( secondALCT, bestCLCT, me);
570  int ok22 = doesALCTCrossCLCT( secondALCT, secondCLCT, me);
571  int code = (ok11<<3) | (ok12<<2) | (ok21<<1) | (ok22);
572 
573  int dbg=0;
574  int ring = me;
576  CSCDetId did(theEndcap, theStation, ring, chamb, 0);
577  if (dbg) LogTrace("CSCMotherboardME11")<<"debug correlateLCTs in "<<did<<std::endl
578  <<"ALCT1: "<<bestALCT<<std::endl
579  <<"ALCT2: "<<secondALCT<<std::endl
580  <<"CLCT1: "<<bestCLCT<<std::endl
581  <<"CLCT2: "<<secondCLCT<<std::endl
582  <<"ok 11 12 21 22 code = "<<ok11<<" "<<ok12<<" "<<ok21<<" "<<ok22<<" "<<code<<std::endl;
583 
584  if ( code==0 ) return;
585 
586  // LUT defines correspondence between possible ok## combinations
587  // and resulting lct1 and lct2
588  int lut[16][2] = {
589  //ok: 11 12 21 22
590  {0 ,0 }, // 0 0 0 0
591  {22,0 }, // 0 0 0 1
592  {21,0 }, // 0 0 1 0
593  {21,22}, // 0 0 1 1
594  {12,0 }, // 0 1 0 0
595  {12,22}, // 0 1 0 1
596  {12,21}, // 0 1 1 0
597  {12,21}, // 0 1 1 1
598  {11,0 }, // 1 0 0 0
599  {11,22}, // 1 0 0 1
600  {11,21}, // 1 0 1 0
601  {11,22}, // 1 0 1 1
602  {11,12}, // 1 1 0 0
603  {11,22}, // 1 1 0 1
604  {11,12}, // 1 1 1 0
605  {11,22}, // 1 1 1 1
606  };
607 
608  if (dbg) LogTrace("CSCMotherboardME11")<<"lut 0 1 = "<<lut[code][0]<<" "<<lut[code][1]<<std::endl;
609 
610  switch (lut[code][0]) {
611  case 11:
612  lct1 = constructLCTs(bestALCT, bestCLCT);
613  break;
614  case 12:
615  lct1 = constructLCTs(bestALCT, secondCLCT);
616  break;
617  case 21:
618  lct1 = constructLCTs(secondALCT, bestCLCT);
619  break;
620  case 22:
621  lct1 = constructLCTs(secondALCT, secondCLCT);
622  break;
623  default: return;
624  }
625  lct1.setTrknmb(1);
626 
627  if (dbg) LogTrace("CSCMotherboardME11")<<"lct1: "<<lct1<<std::endl;
628 
629  switch (lut[code][1])
630  {
631  case 12:
632  lct2 = constructLCTs(bestALCT, secondCLCT);
633  lct2.setTrknmb(2);
634  if (dbg) LogTrace("CSCMotherboardME11")<<"lct2: "<<lct2<<std::endl;
635  return;
636  case 21:
637  lct2 = constructLCTs(secondALCT, bestCLCT);
638  lct2.setTrknmb(2);
639  if (dbg) LogTrace("CSCMotherboardME11")<<"lct2: "<<lct2<<std::endl;
640  return;
641  case 22:
642  lct2 = constructLCTs(secondALCT, secondCLCT);
643  lct2.setTrknmb(2);
644  if (dbg) LogTrace("CSCMotherboardME11")<<"lct2: "<<lct2<<std::endl;
645  return;
646  default: return;
647  }
648  if (dbg) LogTrace("CSCMotherboardME11")<<"out of correlateLCTs"<<std::endl;
649 
650  return;
651 }
const unsigned theSector
CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi &aLCT, const CSCCLCTDigi &cLCT)
const unsigned theTrigChamber
const unsigned theEndcap
void clear()
clear this ALCT
Definition: CSCALCTDigi.cc:35
const unsigned theStation
const unsigned theSubsector
tuple lut
Definition: lumiPlot.py:244
#define LogTrace(id)
bool doesALCTCrossCLCT(CSCALCTDigi &a, CSCCLCTDigi &c, int me)
void clear()
clear this CLCT
Definition: CSCCLCTDigi.cc:58
void setTrknmb(const uint16_t number)
Set track number (1,2) after sorting LCTs.
static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID)
bool CSCMotherboardME11::doesALCTCrossCLCT ( CSCALCTDigi a,
CSCCLCTDigi c,
int  me 
)
private

Definition at line 483 of file CSCMotherboardME11.cc.

References gangedME1a, CSCCLCTDigi::getKeyStrip(), CSCALCTDigi::getKeyWG(), CSCALCTDigi::isValid(), CSCCLCTDigi::isValid(), lut_wg_vs_hs_me1a, lut_wg_vs_hs_me1ag, lut_wg_vs_hs_me1b, ME1A, ME1B, and CSCMotherboard::theEndcap.

Referenced by correlateLCTs().

484 {
485  if ( !c.isValid() || !a.isValid() ) return false;
486  int key_hs = c.getKeyStrip();
487  int key_wg = a.getKeyWG();
488  if ( me == ME1A )
489  {
490  if ( !gangedME1a )
491  {
492  // wrap around ME11 HS number for -z endcap
493  if (theEndcap==2) key_hs = 95 - key_hs;
494  if ( key_hs >= lut_wg_vs_hs_me1a[key_wg][0] &&
495  key_hs <= lut_wg_vs_hs_me1a[key_wg][1] ) return true;
496  return false;
497  }
498  else
499  {
500  if (theEndcap==2) key_hs = 31 - key_hs;
501  if ( key_hs >= lut_wg_vs_hs_me1ag[key_wg][0] &&
502  key_hs <= lut_wg_vs_hs_me1ag[key_wg][1] ) return true;
503  return false;
504  }
505  }
506  if ( me == ME1B)
507  {
508  if (theEndcap==2) key_hs = 127 - key_hs;
509  if ( key_hs >= lut_wg_vs_hs_me1b[key_wg][0] &&
510  key_hs <= lut_wg_vs_hs_me1b[key_wg][1] ) return true;
511  }
512  return false;
513 }
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:30
const unsigned theEndcap
static const int lut_wg_vs_hs_me1a[48][2]
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:30
static const int lut_wg_vs_hs_me1b[48][2]
static const int lut_wg_vs_hs_me1ag[48][2]
int getKeyStrip() const
Definition: CSCCLCTDigi.h:65
int getKeyWG() const
return key wire group
Definition: CSCALCTDigi.h:45
std::vector<CSCALCTDigi> CSCMotherboardME11::getALCTs1b ( )
inline

Returns vectors of found ALCTs in ME1a and ME1b, if any.

Definition at line 43 of file CSCMotherboardME11.h.

References alctV.

43 {return alctV;}
std::vector< CSCALCTDigi > alctV
std::vector<CSCCLCTDigi> CSCMotherboardME11::getCLCTs1a ( )
inline

Returns vectors of found CLCTs in ME1a and ME1b, if any.

Definition at line 46 of file CSCMotherboardME11.h.

References clctV1a.

46 {return clctV1a;}
std::vector< CSCCLCTDigi > clctV1a
std::vector<CSCCLCTDigi> CSCMotherboardME11::getCLCTs1b ( )
inline

Definition at line 47 of file CSCMotherboardME11.h.

References clctV1b.

47 {return clctV1b;}
std::vector< CSCCLCTDigi > clctV1b
std::vector< CSCCorrelatedLCTDigi > CSCMotherboardME11::getLCTs1a ( )

Returns vectors of found correlated LCTs in ME1a and ME1b, if any.

Definition at line 467 of file CSCMotherboardME11.cc.

References allLCTs1a, disableME1a, i, CSCMotherboard::match_trig_window_size, CSCMotherboard::MAX_LCT_BINS, and CSCMotherboard::mpc_block_me1a.

Referenced by readoutLCTs().

468 {
469  std::vector<CSCCorrelatedLCTDigi> tmpV;
470 
471  // disabled ME1a
472  if (mpc_block_me1a || disableME1a) return tmpV;
473 
474  // Report all LCTs found.
475  for (int bx = 0; bx < MAX_LCT_BINS; bx++)
476  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
477  for (int i=0;i<2;i++)
478  if (allLCTs1a[bx][mbx][i].isValid()) tmpV.push_back(allLCTs1a[bx][mbx][i]);
479  return tmpV;
480 }
int i
Definition: DBlmapReader.cc:9
unsigned int match_trig_window_size
unsigned int mpc_block_me1a
CSCCorrelatedLCTDigi allLCTs1a[MAX_LCT_BINS][15][2]
std::vector< CSCCorrelatedLCTDigi > CSCMotherboardME11::getLCTs1b ( )

Definition at line 455 of file CSCMotherboardME11.cc.

References allLCTs1b, i, CSCMotherboard::match_trig_window_size, and CSCMotherboard::MAX_LCT_BINS.

Referenced by readoutLCTs().

456 {
457  std::vector<CSCCorrelatedLCTDigi> tmpV;
458 
459  for (int bx = 0; bx < MAX_LCT_BINS; bx++)
460  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
461  for (int i=0;i<2;i++)
462  if (allLCTs1b[bx][mbx][i].isValid()) tmpV.push_back(allLCTs1b[bx][mbx][i]);
463  return tmpV;
464 }
int i
Definition: DBlmapReader.cc:9
CSCCorrelatedLCTDigi allLCTs1b[MAX_LCT_BINS][15][2]
unsigned int match_trig_window_size
std::vector< CSCCorrelatedLCTDigi > CSCMotherboardME11::readoutLCTs ( int  me1ab)

Definition at line 406 of file CSCMotherboardME11.cc.

References CSCMotherboard::early_tbins, getLCTs1a(), getLCTs1b(), ME1A, ME1B, CSCMotherboard::readout_earliest_2, and CSCMotherboard::tmb_l1a_window_size.

407 {
408  std::vector<CSCCorrelatedLCTDigi> tmpV;
409 
410  // The start time of the L1A*LCT coincidence window should be related
411  // to the fifo_pretrig parameter, but I am not completely sure how.
412  // Just choose it such that the window is centered at bx=7. This may
413  // need further tweaking if the value of tmb_l1a_window_size changes.
414  //static int early_tbins = 4;
415  // The number of LCT bins in the read-out is given by the
416  // tmb_l1a_window_size parameter, forced to be odd
417  static int lct_bins =
419  static int late_tbins = early_tbins + lct_bins;
420 
421 
422  // Start from the vector of all found correlated LCTs and select
423  // those within the LCT*L1A coincidence window.
424  int bx_readout = -1;
425  std::vector<CSCCorrelatedLCTDigi> all_lcts;
426  if (me1ab == ME1A) all_lcts = getLCTs1a();
427  if (me1ab == ME1B) all_lcts = getLCTs1b();
428  std::vector <CSCCorrelatedLCTDigi>::const_iterator plct = all_lcts.begin();
429  for (; plct != all_lcts.end(); plct++)
430  {
431  if (!plct->isValid()) continue;
432 
433  int bx = (*plct).getBX();
434  // Skip LCTs found too early relative to L1Accept.
435  if (bx <= early_tbins) continue;
436 
437  // Skip LCTs found too late relative to L1Accept.
438  if (bx > late_tbins) continue;
439 
440  // If (readout_earliest_2) take only LCTs in the earliest bx in the read-out window:
441  // in digi->raw step, LCTs have to be packed into the TMB header, and
442  // currently there is room just for two.
443  if (readout_earliest_2 && (bx_readout == -1 || bx == bx_readout) )
444  {
445  tmpV.push_back(*plct);
446  if (bx_readout == -1) bx_readout = bx;
447  }
448  else tmpV.push_back(*plct);
449  }
450  return tmpV;
451 }
std::vector< CSCCorrelatedLCTDigi > getLCTs1b()
unsigned int tmb_l1a_window_size
std::vector< CSCCorrelatedLCTDigi > getLCTs1a()
std::vector< CSCCorrelatedLCTDigi > CSCMotherboardME11::readoutLCTs1a ( )

Definition at line 391 of file CSCMotherboardME11.cc.

References ME1A, and CSCMotherboard::readoutLCTs().

Referenced by CSCTriggerPrimitivesBuilder::build().

392 {
393  return readoutLCTs(ME1A);
394 }
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
std::vector< CSCCorrelatedLCTDigi > CSCMotherboardME11::readoutLCTs1b ( )

Definition at line 397 of file CSCMotherboardME11.cc.

References ME1B, and CSCMotherboard::readoutLCTs().

Referenced by CSCTriggerPrimitivesBuilder::build().

398 {
399  return readoutLCTs(ME1B);
400 }
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
void CSCMotherboardME11::run ( const CSCWireDigiCollection wiredc,
const CSCComparatorDigiCollection compdc 
)

Run function for normal usage. Runs cathode and anode LCT processors, takes results and correlates into CorrelatedLCT.

Definition at line 162 of file CSCMotherboardME11.cc.

References CSCMotherboard::alct, alctV, allLCTs1a, allLCTs1b, b, CSCAnodeLCTProcessor::bestALCT, CSCCathodeLCTProcessor::bestCLCT, CSCMotherboard::clct, clct1a, clct_to_alct, clctV1a, clctV1b, CSCCorrelatedLCTDigi::clear(), clear(), correlateLCTs(), CSCMotherboard::drop_used_alcts, drop_used_clcts, i, CSCMotherboard::infoV, CSCCLCTDigi::isValid(), CSCALCTDigi::isValid(), LogDebug, LogTrace, match_earliest_alct_me11_only, match_earliest_clct_me11_only, CSCMotherboard::match_trig_window_size, CSCAnodeLCTProcessor::MAX_ALCT_BINS, CSCCathodeLCTProcessor::MAX_CLCT_BINS, CSCMotherboard::MAX_LCT_BINS, max_me11_lcts, ME1A, ME1B, pref, CSCAnodeLCTProcessor::run(), CSCCathodeLCTProcessor::run(), CSCAnodeLCTProcessor::secondALCT, CSCCathodeLCTProcessor::secondCLCT, smartME1aME1b, and tmb_cross_bx_algo.

Referenced by CSCTriggerPrimitivesBuilder::build().

164 {
165  clear();
166 
167  if (!( alct && clct && clct1a && smartME1aME1b))
168  {
169  if (infoV >= 0) edm::LogError("L1CSCTPEmulatorSetupError")
170  << "+++ run() called for non-existing ALCT/CLCT processor! +++ \n";
171  return;
172  }
173 
174  alctV = alct->run(wiredc); // run anodeLCT
175  clctV1b = clct->run(compdc); // run cathodeLCT in ME1/b
176  clctV1a = clct1a->run(compdc); // run cathodeLCT in ME1/a
177 
178  //int n_clct_a=0, n_clct_b=0;
179  //if (clct1a->bestCLCT[6].isValid() && clct1a->bestCLCT[6].getBX()==6) n_clct_a++;
180  //if (clct1a->secondCLCT[6].isValid() && clct1a->secondCLCT[6].getBX()==6) n_clct_a++;
181 
182  int used_alct_mask[20], used_alct_mask_1a[20];
183  int used_clct_mask[20], used_clct_mask_1a[20];
184  for (int b=0;b<20;b++)
185  used_alct_mask[b] = used_alct_mask_1a[b] = used_clct_mask[b] = used_clct_mask_1a[b] = 0;
186 
187  // CLCT-centric CLCT-to-ALCT matching
188  if (clct_to_alct) for (int bx_clct = 0; bx_clct < CSCCathodeLCTProcessor::MAX_CLCT_BINS; bx_clct++)
189  {
190  // matching in ME1b
191  if (clct->bestCLCT[bx_clct].isValid())
192  {
193  int bx_alct_start = bx_clct - match_trig_window_size/2;
194  int bx_alct_stop = bx_clct + match_trig_window_size/2;
195  for (int bx_alct = bx_alct_start; bx_alct <= bx_alct_stop; bx_alct++)
196  {
197  if (bx_alct < 0 || bx_alct >= CSCAnodeLCTProcessor::MAX_ALCT_BINS) continue;
198  if (drop_used_alcts && used_alct_mask[bx_alct]) continue;
199  if (alct->bestALCT[bx_alct].isValid())
200  {
201  if (infoV > 1) LogTrace("CSCMotherboard")
202  << "Successful CLCT-ALCT match in ME1b: bx_clct = " << bx_clct
203  << "; match window: [" << bx_alct_start << "; " << bx_alct_stop
204  << "]; bx_alct = " << bx_alct;
205  int mbx = bx_alct_stop - bx_alct;
206  correlateLCTs(alct->bestALCT[bx_alct], alct->secondALCT[bx_alct],
207  clct->bestCLCT[bx_clct], clct->secondCLCT[bx_clct],
208  allLCTs1b[bx_alct][mbx][0], allLCTs1b[bx_alct][mbx][1], ME1B);
209  if (allLCTs1b[bx_alct][mbx][0].isValid())
210  {
211  used_alct_mask[bx_alct] += 1;
213  }
214  }
215  }
216  // Do not report CLCT-only LCT for ME1b
217  }
218  // matching in ME1a
219  if (clct1a->bestCLCT[bx_clct].isValid())
220  {
221  int bx_alct_start = bx_clct - match_trig_window_size/2;
222  int bx_alct_stop = bx_clct + match_trig_window_size/2;
223  for (int bx_alct = bx_alct_start; bx_alct <= bx_alct_stop; bx_alct++)
224  {
225  if (bx_alct < 0 || bx_alct >= CSCAnodeLCTProcessor::MAX_ALCT_BINS) continue;
226  if (drop_used_alcts && used_alct_mask_1a[bx_alct]) continue;
227  if (alct->bestALCT[bx_alct].isValid())
228  {
229  if (infoV > 1) LogTrace("CSCMotherboard")
230  << "Successful CLCT-ALCT match in ME1a: bx_clct = " << bx_clct
231  << "; match window: [" << bx_alct_start << "; " << bx_alct_stop
232  << "]; bx_alct = " << bx_alct;
233  int mbx = bx_alct_stop - bx_alct;
234  correlateLCTs(alct->bestALCT[bx_alct], alct->secondALCT[bx_alct],
235  clct1a->bestCLCT[bx_clct], clct1a->secondCLCT[bx_clct],
236  allLCTs1a[bx_alct][mbx][0], allLCTs1a[bx_alct][mbx][1], ME1A);
237  if (allLCTs1a[bx_alct][mbx][0].isValid())
238  {
239  used_alct_mask_1a[bx_alct] += 1;
241  }
242  }
243  }
244  // Do not report CLCT-only LCT for ME1b
245  }
246  // Do not attempt to make ALCT-only LCT for ME1b
247  } // end of CLCT-centric matching
248 
249  // ALCT-centric ALCT-to-CLCT matching
250  else for (int bx_alct = 0; bx_alct < CSCAnodeLCTProcessor::MAX_ALCT_BINS; bx_alct++)
251  {
252  if (alct->bestALCT[bx_alct].isValid())
253  {
254  int bx_clct_start = bx_alct - match_trig_window_size/2;
255  int bx_clct_stop = bx_alct + match_trig_window_size/2;
256 
257  // matching in ME1b
258  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
259  {
260  if (bx_clct < 0 || bx_clct >= CSCCathodeLCTProcessor::MAX_CLCT_BINS) continue;
261  if (drop_used_clcts && used_clct_mask[bx_clct]) continue;
262  if (clct->bestCLCT[bx_clct].isValid())
263  {
264  if (infoV > 1) LogTrace("CSCMotherboard")
265  << "Successful ALCT-CLCT match in ME1b: bx_alct = " << bx_alct
266  << "; match window: [" << bx_clct_start << "; " << bx_clct_stop
267  << "]; bx_clct = " << bx_clct;
268  int mbx = bx_clct-bx_clct_start;
269  correlateLCTs(alct->bestALCT[bx_alct], alct->secondALCT[bx_alct],
270  clct->bestCLCT[bx_clct], clct->secondCLCT[bx_clct],
271  allLCTs1b[bx_alct][mbx][0], allLCTs1b[bx_alct][mbx][1], ME1B);
272  if (allLCTs1b[bx_alct][mbx][0].isValid())
273  {
274  used_clct_mask[bx_clct] += 1;
276  }
277  }
278  }
279 
280  // matching in ME1a
281  for (int bx_clct = bx_clct_start; bx_clct <= bx_clct_stop; bx_clct++)
282  {
283  if (bx_clct < 0 || bx_clct >= CSCCathodeLCTProcessor::MAX_CLCT_BINS) continue;
284  if (drop_used_clcts && used_clct_mask_1a[bx_clct]) continue;
285  if (clct1a->bestCLCT[bx_clct].isValid())
286  {
287  if (infoV > 1) LogTrace("CSCMotherboard")
288  << "Successful ALCT-CLCT match in ME1a: bx_alct = " << bx_alct
289  << "; match window: [" << bx_clct_start << "; " << bx_clct_stop
290  << "]; bx_clct = " << bx_clct;
291  int mbx = bx_clct-bx_clct_start;
292  correlateLCTs(alct->bestALCT[bx_alct], alct->secondALCT[bx_alct],
293  clct1a->bestCLCT[bx_clct], clct1a->secondCLCT[bx_clct],
294  allLCTs1a[bx_alct][mbx][0], allLCTs1a[bx_alct][mbx][1], ME1A);
295  if (allLCTs1a[bx_alct][mbx][0].isValid())
296  {
297  used_clct_mask_1a[bx_clct] += 1;
299  }
300  }
301  }
302  }
303  } // end of ALCT-centric matching
304 
305  // reduction of nLCTs per each BX
306  for (int bx = 0; bx < MAX_LCT_BINS; bx++)
307  {
308  // counting
309  unsigned int n1a=0, n1b=0;
310  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
311  for (int i=0;i<2;i++)
312  {
313  int cbx = bx + mbx - match_trig_window_size/2;
314  if (allLCTs1b[bx][mbx][i].isValid())
315  {
316  n1b++;
317  if (infoV > 0) LogDebug("CSCMotherboard") << "1b LCT"<<i+1<<" "<<bx<<"/"<<cbx<<": "<<allLCTs1b[bx][mbx][i];
318  }
319  if (allLCTs1a[bx][mbx][i].isValid())
320  {
321  n1a++;
322  if (infoV > 0) LogDebug("CSCMotherboard") << "1a LCT"<<i+1<<" "<<bx<<"/"<<cbx<<": "<<allLCTs1a[bx][mbx][i];
323  }
324  }
325  if (infoV > 0 && n1a+n1b>0) LogDebug("CSCMotherboard") <<"bx "<<bx<<" nLCT:"<<n1a<<" "<<n1b<<" "<<n1a+n1b;
326 
327  // some simple cross-bx sorting algorithms
328  if (tmb_cross_bx_algo == 1 && (n1a>2 || n1b>2) )
329  {
330  n1a=0, n1b=0;
331  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
332  for (int i=0;i<2;i++)
333  {
334  if (allLCTs1b[bx][pref[mbx]][i].isValid())
335  {
336  n1b++;
337  if (n1b>2) allLCTs1b[bx][pref[mbx]][i].clear();
338  }
339  if (allLCTs1a[bx][pref[mbx]][i].isValid())
340  {
341  n1a++;
342  if (n1a>2) allLCTs1a[bx][pref[mbx]][i].clear();
343  }
344  }
345 
346  if (infoV > 0) LogDebug("CSCMotherboard") <<"After x-bx sorting:";
347  n1a=0, n1b=0;
348  for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++)
349  for (int i=0;i<2;i++)
350  {
351  int cbx = bx + mbx - match_trig_window_size/2;
352  if (allLCTs1b[bx][mbx][i].isValid())
353  {
354  n1b++;
355  if (infoV > 0) LogDebug("CSCMotherboard") << "1b LCT"<<i+1<<" "<<bx<<"/"<<cbx<<": "<<allLCTs1b[bx][mbx][i];
356  }
357  if (allLCTs1a[bx][mbx][i].isValid())
358  {
359  n1a++;
360  if (infoV > 0) LogDebug("CSCMotherboard") << "1a LCT"<<i+1<<" "<<bx<<"/"<<cbx<<": "<<allLCTs1a[bx][mbx][i];
361  }
362  }
363  if (infoV > 0 && n1a+n1b>0) LogDebug("CSCMotherboard") <<"bx "<<bx<<" nnLCT:"<<n1a<<" "<<n1b<<" "<<n1a+n1b;
364  } // x-bx sorting
365 
366  // Maximum 2 or 3 per whole ME11 per BX case:
367  // (supposedly, now we should have max 2 per bx in each 1a and 1b)
368  if ( n1a+n1b > max_me11_lcts )
369  {
370  // do it simple so far: take all low eta 1/b stubs
371  unsigned int nLCT=n1b;
372  n1a=0;
373  // right now nLCT<=2; cut 1a if necessary
374  for (unsigned int mbx=0; mbx<match_trig_window_size; mbx++)
375  for (int i=0;i<2;i++)
376  if (allLCTs1a[bx][mbx][i].isValid()) {
377  nLCT++;
378  if (nLCT>max_me11_lcts) allLCTs1a[bx][mbx][i].clear();
379  else n1a++;
380  }
381  if (infoV > 0 && nLCT>0) LogDebug("CSCMotherboard") <<"bx "<<bx<<" nnnLCT:"<<n1a<<" "<<n1b<<" "<<n1a+n1b;
382  }
383  }// reduction per bx
384 
385  //if (infoV > 1) LogTrace("CSCMotherboardME11")<<"clct_count E:"<<theEndcap<<"S:"<<theStation<<"R:"<<1<<"C:"
386  // <<CSCTriggerNumbering::chamberFromTriggerLabels(theSector,theSubsector, theStation, theTrigChamber)
387  // <<" a "<<n_clct_a<<" b "<<n_clct_b<<" ab "<<n_clct_a+n_clct_b;
388 }
#define LogDebug(id)
CSCCLCTDigi secondCLCT[MAX_CLCT_BINS]
std::vector< CSCCLCTDigi > clctV1a
int i
Definition: DBlmapReader.cc:9
CSCCorrelatedLCTDigi allLCTs1b[MAX_LCT_BINS][15][2]
CSCALCTDigi bestALCT[MAX_ALCT_BINS]
unsigned int match_trig_window_size
CSCALCTDigi secondALCT[MAX_ALCT_BINS]
bool isValid() const
check ALCT validity (1 - valid ALCT)
Definition: CSCALCTDigi.h:30
int pref[MAX_LCT_BINS]
unsigned int max_me11_lcts
CSCCLCTDigi bestCLCT[MAX_CLCT_BINS]
void correlateLCTs(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT, CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2)
unsigned int tmb_cross_bx_algo
CSCCorrelatedLCTDigi allLCTs1a[MAX_LCT_BINS][15][2]
std::vector< CSCALCTDigi > alctV
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:30
#define LogTrace(id)
CSCAnodeLCTProcessor * alct
double b
Definition: hdecay.h:120
CSCCathodeLCTProcessor * clct
std::vector< CSCCLCTDigi > run(const CSCComparatorDigiCollection *compdc)
std::vector< CSCCLCTDigi > clctV1b
CSCCathodeLCTProcessor * clct1a
std::vector< CSCALCTDigi > run(const CSCWireDigiCollection *wiredc)
void CSCMotherboardME11::setConfigParameters ( const CSCDBL1TPParameters conf)

Set configuration parameters obtained via EventSetup mechanism.

Definition at line 153 of file CSCMotherboardME11.cc.

References CSCMotherboard::alct, CSCMotherboard::clct, clct1a, CSCAnodeLCTProcessor::setConfigParameters(), and CSCCathodeLCTProcessor::setConfigParameters().

154 {
155  alct->setConfigParameters(conf);
156  clct->setConfigParameters(conf);
158  // No config. parameters in DB for the TMB itself yet.
159 }
void setConfigParameters(const CSCDBL1TPParameters *conf)
CSCAnodeLCTProcessor * alct
CSCCathodeLCTProcessor * clct
CSCCathodeLCTProcessor * clct1a
void setConfigParameters(const CSCDBL1TPParameters *conf)

Member Data Documentation

std::vector<CSCALCTDigi> CSCMotherboardME11::alctV
private

Definition at line 96 of file CSCMotherboardME11.h.

Referenced by getALCTs1b(), and run().

CSCCorrelatedLCTDigi CSCMotherboardME11::allLCTs1a[MAX_LCT_BINS][15][2]
private

Definition at line 86 of file CSCMotherboardME11.h.

Referenced by clear(), getLCTs1a(), and run().

CSCCorrelatedLCTDigi CSCMotherboardME11::allLCTs1b[MAX_LCT_BINS][15][2]
private

Container for first correlated LCT in ME1a. Container for second correlated LCT in ME1a. for the case when more than 2 LCTs/BX are allowed; maximum match window = 15

Definition at line 85 of file CSCMotherboardME11.h.

Referenced by clear(), getLCTs1b(), and run().

CSCCathodeLCTProcessor* CSCMotherboardME11::clct1a

additional Cathode LCT processor for ME1a

Definition at line 57 of file CSCMotherboardME11.h.

Referenced by CSCTriggerPrimitivesBuilder::build(), clear(), CSCMotherboardME11(), run(), setConfigParameters(), and ~CSCMotherboardME11().

bool CSCMotherboardME11::clct_to_alct
private

if true: use regular CLCT-to-ALCT matching in TMB if false: do ALCT-to-CLCT matching

Definition at line 108 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

std::vector<CSCCLCTDigi> CSCMotherboardME11::clctV1a
private

Definition at line 98 of file CSCMotherboardME11.h.

Referenced by getCLCTs1a(), and run().

std::vector<CSCCLCTDigi> CSCMotherboardME11::clctV1b
private

Definition at line 97 of file CSCMotherboardME11.h.

Referenced by getCLCTs1b(), and run().

bool CSCMotherboardME11::disableME1a
private

Definition at line 73 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and getLCTs1a().

bool CSCMotherboardME11::drop_used_clcts
private

whether to not reuse CLCTs that were used by previous matching ALCTs in ALCT-to-CLCT algorithm

Definition at line 112 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

bool CSCMotherboardME11::gangedME1a
private

Definition at line 73 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and doesALCTCrossCLCT().

const int CSCMotherboardME11::lut_wg_vs_hs_me1a
staticprivate
Initial value:
= {
{0, 95},{0, 95},{0, 95},{0, 95},{0, 95},
{0, 95},{0, 95},{0, 95},{0, 95},{0, 95},
{0, 95},{0, 95},{0, 77},{0, 61},{0, 39},
{0, 22},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1} }

Definition at line 69 of file CSCMotherboardME11.h.

Referenced by doesALCTCrossCLCT().

const int CSCMotherboardME11::lut_wg_vs_hs_me1ag
staticprivate
Initial value:
= {
{0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
{0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
{0, 31},{0, 31},{0, 31},{0, 31},{0, 31},
{0, 22},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1} }

Definition at line 70 of file CSCMotherboardME11.h.

Referenced by doesALCTCrossCLCT().

const int CSCMotherboardME11::lut_wg_vs_hs_me1b
staticprivate
Initial value:
= {
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},
{100, 127},{73, 127},{47, 127},{22, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 127},
{0, 127},{0, 127},{0, 127},{0, 127},{0, 105},
{0, 93},{0, 78},{0, 63} }

Definition at line 68 of file CSCMotherboardME11.h.

Referenced by doesALCTCrossCLCT().

bool CSCMotherboardME11::match_earliest_alct_me11_only
private

Definition at line 103 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

bool CSCMotherboardME11::match_earliest_clct_me11_only
private

Definition at line 104 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

unsigned int CSCMotherboardME11::max_me11_lcts
private

maximum lcts per BX in ME11: 2, 3, 4 or 999

Definition at line 117 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

int CSCMotherboardME11::pref[MAX_LCT_BINS]
private

"preferential" index array in matching window for cross-BX sorting

Definition at line 101 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

bool CSCMotherboardME11::smartME1aME1b
private

SLHC: special configuration parameters for ME11 treatment.

Definition at line 73 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().

unsigned int CSCMotherboardME11::tmb_cross_bx_algo
private

Definition at line 114 of file CSCMotherboardME11.h.

Referenced by CSCMotherboardME11(), and run().