|
| CSCUpgradeCathodeLCTProcessor (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf) |
|
void | clear () |
|
| CSCCathodeLCTProcessor (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf) |
|
CSCCLCTDigi | getBestCLCT (int bx) const |
|
std::vector< CSCCLCTDigi > | getCLCTs () const |
|
unsigned | getInTimeHMT () const |
|
unsigned | getOutTimeHMT () const |
|
CSCCLCTDigi | getSecondCLCT (int bx) const |
|
std::vector< int > | preTriggerBXs () const |
|
std::vector
< CSCCLCTPreTriggerDigi > | preTriggerDigis () const |
|
std::vector< CSCCLCTDigi > | readoutCLCTs () const |
|
CSCShowerDigi | readoutShower () const |
|
std::vector< CSCCLCTDigi > | run (const CSCComparatorDigiCollection *compdc) |
|
void | run (const std::vector< int > halfstrip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) |
|
void | setConfigParameters (const CSCDBL1TPParameters *conf) |
|
void | setESLookupTables (const CSCL1TPLookupTableCCLUT *conf) |
|
| ~CSCCathodeLCTProcessor () override=default |
|
| CSCBaseboard (unsigned endcap, unsigned station, unsigned sector, unsigned subsector, unsigned chamber, const edm::ParameterSet &conf) |
|
| CSCBaseboard () |
|
std::string | getCSCName () const |
|
CSCDetId | id () const |
|
void | setCSCGeometry (const CSCGeometry *g) |
|
virtual | ~CSCBaseboard ()=default |
|
|
void | checkConfigParameters () |
|
void | cleanComparatorContainer (CSCCLCTDigi &lct) const |
|
void | clearPreTriggers () |
|
CSCCLCTDigi | constructCLCT (const int bx, const unsigned halfstrip_withstagger, const CSCCLCTDigi::ComparatorContainer &hits) |
|
CSCCLCTPreTriggerDigi | constructPreCLCT (const int bx, const unsigned halfstrip, const unsigned index) const |
|
void | dumpConfigParams () const |
|
void | dumpDigis (const std::vector< int > strip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) const |
|
void | encodeHighMultiplicityBits (const std::vector< int > halfstrip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) |
|
bool | getDigis (const CSCComparatorDigiCollection *compdc) |
|
void | getDigis (const CSCComparatorDigiCollection *compdc, const CSCDetId &id) |
|
void | markBusyKeys (const int best_hstrip, const int best_patid, int quality[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) |
|
bool | patternFinding (const unsigned int bx_time, std::map< int, std::map< int, CSCCLCTDigi::ComparatorContainer > > &hits_in_patterns) |
|
void | pulseExtension (const std::vector< int > time[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) |
|
void | readComparatorDigis (std::vector< int > halfstrip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) |
|
void | setDefaultConfigParameters () |
|
void | checkConfigParameters (unsigned int &var, const unsigned int var_max, const unsigned int var_def, const std::string &var_str) |
|
unsigned int | best_pid [CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER] |
|
CSCCLCTDigi | bestCLCT [CSCConstants::MAX_CLCT_TBINS] |
|
std::unique_ptr
< ComparatorCodeLUT > | cclut_ |
|
CSCPatternBank::LCTPatterns | clct_pattern_ = {} |
|
std::vector< CSCComparatorDigi > | digiV [CSCConstants::NUM_LAYERS] |
|
unsigned int | drift_delay |
|
int | early_tbins |
|
unsigned int | fifo_pretrig |
|
unsigned int | fifo_tbins |
|
unsigned int | hit_persist |
|
unsigned | inTimeHMT_ |
|
bool | ispretrig_ [CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER] |
|
unsigned int | min_separation |
|
unsigned | minLayersCentralTBin_ |
|
unsigned int | nhits [CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER] |
|
unsigned int | nplanes_hit_pattern |
|
unsigned int | nplanes_hit_pretrig |
|
int | numCFEBs_ |
|
int | numHalfStrips_ |
|
int | numStrips_ |
|
unsigned | outTimeHMT_ |
|
unsigned int | pid_thresh_pretrig |
|
PulseArray | pulse_ |
|
std::unique_ptr
< LCTQualityControl > | qualityControl_ |
|
bool | readout_earliest_2 |
|
CSCCLCTDigi | secondCLCT [CSCConstants::MAX_CLCT_TBINS] |
|
CSCShowerDigi | shower_ |
|
unsigned | showerMaxInTBin_ |
|
unsigned | showerMaxOutTBin_ |
|
unsigned | showerMinInTBin_ |
|
unsigned | showerMinOutTBin_ |
|
int | stagger [CSCConstants::NUM_LAYERS] |
|
int | start_bx_shift |
|
std::vector< int > | thePreTriggerBXs |
|
std::vector
< CSCCLCTPreTriggerDigi > | thePreTriggerDigis |
|
std::vector< unsigned > | thresholds_ |
|
unsigned int | tmb_l1a_window_size |
|
edm::ParameterSet | alctParams_ |
|
edm::ParameterSet | clctParams_ |
|
edm::ParameterSet | commonParams_ |
|
const CSCChamber * | cscChamber_ |
|
const CSCGeometry * | cscGeometry_ |
|
CSCDetId | cscId_ |
|
bool | disableME1a_ |
|
bool | enableAlctPhase2_ |
|
bool | gangedME1a_ |
|
int | infoV |
|
bool | isME11_ |
|
bool | isME12_ |
|
bool | isME13_ |
|
bool | isME21_ |
|
bool | isME22_ |
|
bool | isME31_ |
|
bool | isME32_ |
|
bool | isME41_ |
|
bool | isME42_ |
|
bool | runCCLUT_ |
|
bool | runCCLUT_OTMB_ |
|
bool | runCCLUT_TMB_ |
|
bool | runME11ILT_ |
|
bool | runME11Up_ |
|
bool | runME21ILT_ |
|
bool | runME21Up_ |
|
bool | runME31Up_ |
|
bool | runME41Up_ |
|
bool | runPhase2_ |
|
edm::ParameterSet | showerParams_ |
|
unsigned | theChamber |
|
std::string | theCSCName_ |
|
const unsigned | theEndcap |
|
int | theRegion |
|
unsigned | theRing |
|
const unsigned | theSector |
|
const unsigned | theStation |
|
const unsigned | theSubsector |
|
const unsigned | theTrigChamber |
|
edm::ParameterSet | tmbParams_ |
|
static const unsigned int | def_drift_delay = 2 |
|
static const unsigned int | def_fifo_pretrig = 7 |
|
static const unsigned int | def_fifo_tbins = 12 |
|
static const unsigned int | def_hit_persist = 6 |
|
static const unsigned int | def_min_separation = 10 |
|
static const unsigned int | def_nplanes_hit_pattern = 4 |
|
static const unsigned int | def_nplanes_hit_pretrig = 2 |
|
static const unsigned int | def_pid_thresh_pretrig = 2 |
|
static const unsigned int | def_tmb_l1a_window_size = 7 |
|
This class simulates the functionality of the cathode LCT card. It is run by the MotherBoard and returns up to two CathodeLCTs. It can be run either in a test mode, where it is passed arrays of halfstrip times, or in normal mode where it determines the time and comparator information from the comparator digis.
Updates for high pileup running by Vadim Khotilovich (TAMU), December 2012
Updates for integrated local trigger with GEMs by Sven Dildick (TAMU) and Tao Huang (TAMU), April 2015
Removing usage of outdated class CSCTriggerGeometry by Sven Dildick (TAMU)
Definition at line 24 of file CSCUpgradeCathodeLCTProcessor.h.
std::vector< CSCCLCTDigi > CSCUpgradeCathodeLCTProcessor::findLCTs |
( |
const std::vector< int > |
halfstrip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER] | ) |
|
|
overrideprivatevirtual |
Reimplemented from CSCCathodeLCTProcessor.
Definition at line 106 of file CSCUpgradeCathodeLCTProcessor.cc.
References CSCCathodeLCTProcessor::best_pid, busyMap_, CSCCathodeLCTProcessor::clearPreTriggers(), CSCCathodeLCTProcessor::constructCLCT(), CSCCathodeLCTProcessor::drift_delay, CSCCathodeLCTProcessor::dumpDigis(), CSCCathodeLCTProcessor::fifo_tbins, CSCCathodeLCTProcessor::findLCTs(), CSCCLCTDigi::getKeyStrip(), mps_fire::i, CSCBaseboard::infoV, CSCCLCTDigi::isValid(), dqmiolumiharvest::j, CSCConstants::KEY_CLCT_LAYER, LogTrace, CSCCathodeLCTProcessor::markBusyKeys(), markPreTriggerZone(), CSCConstants::MAX_CLCT_TBINS, CSCConstants::MAX_CLCTS_PER_PROCESSOR, CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER, CSCCathodeLCTProcessor::nhits, CSCCathodeLCTProcessor::nplanes_hit_pattern, CSCCathodeLCTProcessor::numHalfStrips_, CSCCathodeLCTProcessor::patternFinding(), preTrigger(), CSCCathodeLCTProcessor::pulseExtension(), quality, CSCBaseboard::runPhase2_, CSCCathodeLCTProcessor::stagger, CSCCathodeLCTProcessor::start_bx_shift, and use_dead_time_zoning_.
113 std::vector<CSCCLCTDigi> lctList;
138 while (start_bx < stop_bx) {
153 LogTrace(
"CSCUpgradeCathodeLCTProcessor")
154 <<
"..... pretrigger at bx = " << first_bx <<
"; waiting drift delay .....";
160 std::map<int, std::map<int, CSCCLCTDigi::ComparatorContainer> > hits_in_patterns;
161 hits_in_patterns.clear();
169 if (
nhits[hstrip] > 0) {
170 LogTrace(
"CSCUpgradeCathodeLCTProcessor")
171 <<
" bx = " << std::setw(2) << latch_bx <<
" --->"
172 <<
" halfstrip = " << std::setw(3) << hstrip <<
" best pid = " << std::setw(2) <<
best_pid[hstrip]
173 <<
" nhits = " <<
nhits[hstrip];
183 best_halfstrip[ilct] = -1;
184 best_quality[ilct] = 0;
209 quality[hstrip] = (
best_pid[hstrip] & 14) | (
nhits[hstrip] << 5);
213 if (quality[hstrip] > best_quality[0] && pretrig_zone[hstrip] && !
busyMap_[hstrip][first_bx]) {
214 best_halfstrip[0] = hstrip;
215 best_quality[0] = quality[hstrip];
217 const int best_hs(best_halfstrip[0]);
218 const int best_pat(
best_pid[best_hs]);
222 tempBestCLCT =
constructCLCT(first_bx, best_hs, hits_in_patterns[best_hs][best_pat]);
229 if (best_halfstrip[0] >= 0) {
242 if (quality[hstrip] > best_quality[1] && pretrig_zone[hstrip] && !
busyMap_[hstrip][first_bx]) {
243 best_halfstrip[1] = hstrip;
244 best_quality[1] = quality[hstrip];
246 const int best_hs(best_halfstrip[1]);
247 const int best_pat(
best_pid[best_hs]);
251 tempSecondCLCT =
constructCLCT(first_bx, best_hs, hits_in_patterns[best_hs][best_pat]);
257 lctList.push_back(tempBestCLCT);
259 if (tempSecondCLCT.
isValid()) {
260 lctList.push_back(tempSecondCLCT);
266 start_bx = first_bx + 1;
void dumpDigis(const std::vector< int > strip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) const
uint32_t const *__restrict__ Quality * quality
void pulseExtension(const std::vector< int > time[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER])
bool patternFinding(const unsigned int bx_time, std::map< int, std::map< int, CSCCLCTDigi::ComparatorContainer > > &hits_in_patterns)
uint16_t getKeyStrip(const uint16_t n=2) const
unsigned int nhits[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]
bool use_dead_time_zoning_
bool isValid() const
check CLCT validity (1 - valid CLCT)
unsigned int nplanes_hit_pattern
virtual std::vector< CSCCLCTDigi > findLCTs(const std::vector< int > halfstrip[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER])
void markBusyKeys(const int best_hstrip, const int best_patid, int quality[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER])
bool busyMap_[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER][CSCConstants::MAX_CLCT_TBINS]
void markPreTriggerZone(bool pretrig_zone[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]) const
int stagger[CSCConstants::NUM_LAYERS]
bool preTrigger(const int start_bx, int &first_bx) override
CSCCLCTDigi constructCLCT(const int bx, const unsigned halfstrip_withstagger, const CSCCLCTDigi::ComparatorContainer &hits)
unsigned int best_pid[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]
bool CSCUpgradeCathodeLCTProcessor::preTrigger |
( |
const int |
start_bx, |
|
|
int & |
first_bx |
|
) |
| |
|
overrideprivatevirtual |
Reimplemented from CSCCathodeLCTProcessor.
Definition at line 29 of file CSCUpgradeCathodeLCTProcessor.cc.
References CSCCathodeLCTProcessor::best_pid, busyMap_, CSCCathodeLCTProcessor::clearPreTriggers(), CSCCathodeLCTProcessor::constructPreCLCT(), CSCCathodeLCTProcessor::fifo_tbins, CSCBaseboard::infoV, CSCCathodeLCTProcessor::ispretrig_, CSCConstants::KEY_CLCT_LAYER, LogTrace, markBusyZone(), CSCCathodeLCTProcessor::nhits, CSCCathodeLCTProcessor::nplanes_hit_pretrig, CSCCathodeLCTProcessor::numHalfStrips_, CSCCathodeLCTProcessor::patternFinding(), CSCCathodeLCTProcessor::pid_thresh_pretrig, CSCCathodeLCTProcessor::preTrigger(), CSCBaseboard::runPhase2_, CSCCathodeLCTProcessor::stagger, CSCCathodeLCTProcessor::thePreTriggerDigis, and use_dead_time_zoning_.
Referenced by findLCTs().
35 LogTrace(
"CSCUpgradeCathodeLCTProcessor")
36 <<
"....................PreTrigger, Phase2 version with localized dead time zone...........................";
40 bool pre_trig =
false;
43 for (
unsigned int bx_time = start_bx; bx_time <
fifo_tbins; bx_time++) {
49 std::map<int, std::map<int, CSCCLCTDigi::ComparatorContainer> > hits_in_patterns;
50 hits_in_patterns.clear();
56 if (
nhits[hstrip] > 0) {
57 LogTrace(
"CSCUpgradeCathodeLCTProcessor")
58 <<
" bx = " << std::setw(2) << bx_time <<
" --->"
59 <<
" halfstrip = " << std::setw(3) << hstrip <<
" best pid = " << std::setw(2) <<
best_pid[hstrip]
60 <<
" nhits = " <<
nhits[hstrip];
77 LogTrace(
"CSCUpgradeCathodeLCTProcessor")
78 <<
" halfstrip " << std::setw(3) << hstrip <<
" in dead zone and is pretriggerred";
100 LogTrace(
"CSCUpgradeCathodeLCTProcessor") <<
"no pretrigger, returning \n";
unsigned int nplanes_hit_pretrig
bool patternFinding(const unsigned int bx_time, std::map< int, std::map< int, CSCCLCTDigi::ComparatorContainer > > &hits_in_patterns)
unsigned int nhits[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]
bool use_dead_time_zoning_
CSCCLCTPreTriggerDigi constructPreCLCT(const int bx, const unsigned halfstrip, const unsigned index) const
std::vector< CSCCLCTPreTriggerDigi > thePreTriggerDigis
void markBusyZone(const int bx)
bool busyMap_[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER][CSCConstants::MAX_CLCT_TBINS]
int stagger[CSCConstants::NUM_LAYERS]
virtual bool preTrigger(const int start_bx, int &first_bx)
unsigned int pid_thresh_pretrig
bool ispretrig_[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]
unsigned int best_pid[CSCConstants::MAX_NUM_HALF_STRIPS_RUN2_TRIGGER]