CMS 3D CMS Logo

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

#include <L1Trigger/RPCTechnicalTrigger/interface/RPCTechnicalTrigger.cc>

Inheritance diagram for RPCTechnicalTrigger:
edm::stream::EDProducer<>

Classes

class  TTUResults
 

Public Member Functions

 RPCTechnicalTrigger (const edm::ParameterSet &)
 
 ~RPCTechnicalTrigger () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

void beginRun (edm::Run const &, const edm::EventSetup &) final
 
std::map< int, TTUResults * > convertToMap (const std::vector< std::unique_ptr< TTUResults >> &) const
 
void printinfo () const
 
void produce (edm::Event &, const edm::EventSetup &) override
 
bool searchCoincidence (int, int, std::map< int, TTUResults * > const &ttuResultsByQuandrant) const
 

Private Attributes

std::string m_configFile
 
bool m_hasConfig
 
const RBCBoardSpecsm_rbcspecs
 
std::unique_ptr< TTUConfiguratorm_readConfig
 
const edm::InputTag m_rpcDigiLabel
 
const edm::EDGetTokenT< RPCDigiCollectionm_rpcDigiToken
 
const std::vector< unsigned > m_ttBits
 
const std::vector< std::string > m_ttNames
 
std::array< TTUEmulator, kMaxTtuBoardsm_ttu
 
std::array< TTUEmulator, kMaxTtuBoardsm_ttuRbcLine
 
const TTUBoardSpecsm_ttuspecs
 
const int m_useEventSetup
 
const int m_useRPCSimLink
 
const int m_verbosity
 

Static Private Attributes

static int kMaxTtuBoards = 3
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Description: Implementation of the RPC Technical Trigger Emulator

Implementation:

Definition at line 68 of file RPCTechnicalTrigger.h.

Constructor & Destructor Documentation

RPCTechnicalTrigger::RPCTechnicalTrigger ( const edm::ParameterSet iConfig)
explicit

Definition at line 39 of file RPCTechnicalTrigger.cc.

References constexpr, DeadROC_duringRun::f1, edm::ParameterSet::getUntrackedParameter(), HLT_2018_cff::InputTag, LogTrace, m_configFile, m_hasConfig, m_rpcDigiLabel, m_rpcDigiToken, m_ttBits, m_ttNames, m_ttu, m_ttuRbcLine, m_useEventSetup, m_useRPCSimLink, m_verbosity, and AlCaHLTBitMon_QueryRunRegistry::string.

40  : m_verbosity{iConfig.getUntrackedParameter<int>("Verbosity", 0)},
41  m_useEventSetup{iConfig.getUntrackedParameter<int>("UseEventSetup", 0)},
42  m_ttBits{iConfig.getParameter<std::vector<unsigned>>("BitNumbers")},
43  m_ttNames{iConfig.getParameter<std::vector<std::string>>("BitNames")},
44  m_rpcDigiLabel{iConfig.getParameter<edm::InputTag>("RPCDigiLabel")},
45  m_rpcDigiToken{consumes<RPCDigiCollection>(m_rpcDigiLabel)},
46  m_useRPCSimLink{iConfig.getUntrackedParameter<int>("UseRPCSimLink", 0)} {
47  //...........................................................................
48 
49  std::string configFile = iConfig.getParameter<std::string>("ConfigFile");
50 
51  edm::FileInPath f1("L1Trigger/RPCTechnicalTrigger/data/" + configFile);
52  m_configFile = f1.fullPath();
53 
54  if (m_verbosity) {
55  LogTrace("RPCTechnicalTrigger") << m_rpcDigiLabel << '\n' << std::endl;
56 
57  LogTrace("RPCTechnicalTrigger") << "\nConfiguration file used for UseEventSetup = 0 \n"
58  << m_configFile << '\n'
59  << std::endl;
60  }
61 
62  //...........................................................................
63  //... There are three Technical Trigger Units Boards: 1 can handle 2 Wheels
64  //... n_Wheels sets the number of wheels attached to board with index boardIndex
65 
66  constexpr std::array<int, 3> boardIndex = {{1, 2, 3}};
67  constexpr std::array<int, 3> nWheels = {{2, 1, 2}};
68 
69  m_ttu[0] = TTUEmulator(boardIndex[0], nWheels[0]);
70  m_ttu[1] = TTUEmulator(boardIndex[1], nWheels[1]);
71  m_ttu[2] = TTUEmulator(boardIndex[2], nWheels[2]);
72 
73  //... This is second line that delivers in parallel a second trigger
74  m_ttuRbcLine[0] = TTUEmulator(boardIndex[0], nWheels[0]);
75  m_ttuRbcLine[1] = TTUEmulator(boardIndex[1], nWheels[1]);
76  m_ttuRbcLine[2] = TTUEmulator(boardIndex[2], nWheels[2]);
77 
78  //...........................................................................
79 
80  m_hasConfig = false;
81  produces<L1GtTechnicalTriggerRecord>();
82  consumes<edm::DetSetVector<RPCDigiSimLink>>(edm::InputTag("simMuonRPCDigis", "RPCDigiSimLink", ""));
83 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const edm::InputTag m_rpcDigiLabel
#define LogTrace(id)
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
const edm::EDGetTokenT< RPCDigiCollection > m_rpcDigiToken
const std::vector< unsigned > m_ttBits
const std::vector< std::string > m_ttNames
#define constexpr
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
RPCTechnicalTrigger::~RPCTechnicalTrigger ( )
override

Definition at line 85 of file RPCTechnicalTrigger.cc.

85 {}

Member Function Documentation

void RPCTechnicalTrigger::beginRun ( edm::Run const &  iRun,
const edm::EventSetup evtSetup 
)
finalprivate

Definition at line 292 of file RPCTechnicalTrigger.cc.

References edm::EventSetup::get(), edm::ESHandleBase::isValid(), dqmdumpme::k, kMaxTtuBoards, LogDebug, m_configFile, m_hasConfig, m_rbcspecs, m_readConfig, m_ttu, m_ttuRbcLine, m_ttuspecs, m_useEventSetup, and edm::ESHandle< T >::product().

292  {
293  LogDebug("RPCTechnicalTrigger") << "RPCTechnicalTrigger::beginRun> starts" << std::endl;
294 
295  //.. Get Board Specifications (hardware configuration)
296 
297  if (m_useEventSetup >= 1) {
299  evtSetup.get<RBCBoardSpecsRcd>().get(pRBCSpecs);
300 
302  evtSetup.get<TTUBoardSpecsRcd>().get(pTTUSpecs);
303 
304  if (!pRBCSpecs.isValid() || !pTTUSpecs.isValid()) {
305  edm::LogError("RPCTechnicalTrigger") << "can't find RBC/TTU BoardSpecsRcd" << '\n';
306  m_hasConfig = false;
307  } else {
308  m_rbcspecs = pRBCSpecs.product();
309  m_ttuspecs = pTTUSpecs.product();
310  m_hasConfig = true;
311  }
312 
313  } else {
314  // read hardware configuration from file
315  m_readConfig = std::make_unique<TTUConfigurator>(m_configFile);
316 
317  if (m_readConfig->m_hasConfig) {
318  m_readConfig->process();
319  m_rbcspecs = m_readConfig->getRbcSpecs();
320  m_ttuspecs = m_readConfig->getTtuSpecs();
321  m_hasConfig = true;
322  }
323 
324  else
325  m_hasConfig = false;
326  }
327 
328  if (m_hasConfig) {
329  //... Initialize all
330 
331  for (int k = 0; k < kMaxTtuBoards; ++k) {
332  m_ttu[k].SetLineId(1);
333  m_ttuRbcLine[k].SetLineId(2);
334 
335  m_ttu[k].setSpecifications(m_ttuspecs, m_rbcspecs);
336  m_ttuRbcLine[k].setSpecifications(m_ttuspecs, m_rbcspecs);
337 
338  m_ttu[k].initialise();
339  m_ttuRbcLine[k].initialise();
340  }
341  }
342 }
#define LogDebug(id)
std::unique_ptr< TTUConfigurator > m_readConfig
const TTUBoardSpecs * m_ttuspecs
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
T get() const
Definition: EventSetup.h:73
const RBCBoardSpecs * m_rbcspecs
bool isValid() const
Definition: ESHandle.h:44
T const * product() const
Definition: ESHandle.h:86
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
std::map< int, RPCTechnicalTrigger::TTUResults * > RPCTechnicalTrigger::convertToMap ( const std::vector< std::unique_ptr< TTUResults >> &  ttuResults) const
private

Definition at line 345 of file RPCTechnicalTrigger.cc.

References crabWrapper::key.

Referenced by RPCTechnicalTrigger::TTUResults::getTriggerForWheel(), and produce().

346  {
347  std::map<int, TTUResults*> returnValue;
348  auto itr = ttuResults.begin();
349 
350  while (itr != ttuResults.end()) {
351  if ((*itr)->m_bx != 0) {
352  ++itr;
353  continue;
354  }
355 
356  int key(0);
357  key = 1000 * ((*itr)->m_ttuidx + 1) + 1 * (*itr)->m_wedge;
358  returnValue[key] = itr->get();
359  ++itr;
360  }
361 
362  return returnValue;
363 }
void RPCTechnicalTrigger::printinfo ( ) const
private

Definition at line 444 of file RPCTechnicalTrigger.cc.

References DEFINE_FWK_MODULE, dqmdumpme::k, kMaxTtuBoards, LogDebug, m_ttu, and m_ttuRbcLine.

444  {
445  LogDebug("RPCTechnicalTrigger") << "RPCTechnicalTrigger::Printing TTU emulators info>" << std::endl;
446 
447  for (int k = 0; k < kMaxTtuBoards; ++k) {
448  m_ttu[k].printinfo();
449  m_ttuRbcLine[k].printinfo();
450  }
451 }
#define LogDebug(id)
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
void RPCTechnicalTrigger::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 88 of file RPCTechnicalTrigger.cc.

References funct::abs(), l1GtPatternGenerator_cfi::bx, convertToMap(), gather_cfg::cout, edm::EventSetup::get(), edm::Event::getByLabel(), edm::Event::getByToken(), input, edm::HandleBase::isValid(), dqmdumpme::k, kMaxTtuBoards, LogDebug, m_hasConfig, m_rpcDigiLabel, m_rpcDigiToken, m_ttBits, m_ttNames, m_ttu, m_ttuRbcLine, m_useRPCSimLink, m_verbosity, eostools::move(), MillePedeFileConverter_cfg::out, convertSQLitetoXML_cfg::output, edm::Event::put(), mps_fire::result, searchCoincidence(), and mps_update::status.

88  {
89  bool status(false);
90 
92 
94 
95  std::unique_ptr<L1GtTechnicalTriggerRecord> output(new L1GtTechnicalTriggerRecord());
96 
97  //. Set up RPC geometry
98  edm::ESHandle<RPCGeometry> rpcGeometry;
99  iSetup.get<MuonGeometryRecord>().get(rpcGeometry);
100 
101  std::unique_ptr<ProcessInputSignal> signal;
102  if (m_useRPCSimLink == 0) {
103  iEvent.getByToken(m_rpcDigiToken, pIn);
104  if (!pIn.isValid()) {
105  edm::LogError("RPCTechnicalTrigger") << "can't find RPCDigiCollection with label: " << m_rpcDigiLabel << '\n';
106  iEvent.put(std::move(output));
107  return;
108  }
109 
110  signal = std::make_unique<RBCProcessRPCDigis>(rpcGeometry, pIn);
111 
112  } else {
113  iEvent.getByLabel("simMuonRPCDigis", "RPCDigiSimLink", simIn);
114 
115  if (!simIn.isValid()) {
116  edm::LogError("RPCTechnicalTrigger") << "can't find RPCDigiCollection with label: " << m_rpcDigiLabel << '\n';
117  iEvent.put(std::move(output));
118  return;
119  }
120  signal = std::make_unique<RBCProcessRPCSimDigis>(rpcGeometry, simIn);
121  }
122 
123  LogDebug("RPCTechnicalTrigger") << "signal object created" << '\n';
124 
125  if (!m_hasConfig) {
126  edm::LogError("RPCTechnicalTrigger") << "cannot read hardware configuration \n";
127  iEvent.put(std::move(output));
128  return;
129  }
130 
131  status = signal->next();
132 
133  if (!status) {
134  iEvent.put(std::move(output));
135  return;
136  }
137 
138  auto* input = signal->retrievedata();
139 
140  std::vector<L1GtTechnicalTrigger> ttVec(m_ttBits.size());
141 
142  //. distribute data to different TTU emulator instances and process it
143  std::bitset<5> triggerbits;
144 
145  std::vector<std::unique_ptr<TTUResults>> serializedInfoLine1;
146  std::vector<std::unique_ptr<TTUResults>> serializedInfoLine2;
147 
148  for (int k = 0; k < kMaxTtuBoards; ++k) {
149  m_ttu[k].processTtu(input);
150 
151  //work out Pointing Logic to Tracker
152  for (auto firstSector : s_quadrants)
153  m_ttuRbcLine[k].processTtu(input, firstSector);
154 
155  //...for trigger 1
156  for (auto const& out : m_ttu[k].m_triggerBxVec)
157  serializedInfoLine1.emplace_back(std::make_unique<TTUResults>(k, out.m_bx, out.m_trigger[0], out.m_trigger[1]));
158  m_ttu[k].clearTriggerResponse();
159 
160  //...for trigger 2
161  for (auto const& out : m_ttuRbcLine[k].m_triggerBxVec)
162  serializedInfoLine2.push_back(
163  std::make_unique<TTUResults>(k, out.m_bx, out.m_trigger[0], out.m_trigger[1], out.m_wedge));
164 
165  m_ttuRbcLine[k].clearTriggerResponse();
166  }
167 
168  //.. write results to technical trigger bits
169  int bx(0);
170  int infoSize(0);
171 
172  infoSize = serializedInfoLine1.size();
173 
174  auto sortByBx = [](auto& iLHS, auto& iRHS) { return iLHS->m_bx < iRHS->m_bx; };
175  std::sort(serializedInfoLine1.begin(), serializedInfoLine1.end(), sortByBx);
176 
177  if (m_verbosity) {
178  for (auto& ttu : serializedInfoLine1) {
179  if (abs(ttu->m_bx) <= 1)
180  std::cout << "RPCTechnicalTrigger> " << ttu->m_ttuidx << '\t' << ttu->m_bx << '\t' << ttu->m_trigWheel1 << '\t'
181  << ttu->m_trigWheel2 << '\n';
182  }
183  }
184 
185  bool has_bx0 = false;
186 
187  for (int k = 0; k < infoSize; k += kMaxTtuBoards) {
188  bx = serializedInfoLine1[k]->m_bx;
189 
190  if (bx == 0) {
191  triggerbits.set(0, serializedInfoLine1[k]->m_trigWheel2);
192  triggerbits.set(1, serializedInfoLine1[k]->m_trigWheel1);
193  triggerbits.set(2, serializedInfoLine1[k + 1]->m_trigWheel1);
194  triggerbits.set(3, serializedInfoLine1[k + 2]->m_trigWheel1);
195  triggerbits.set(4, serializedInfoLine1[k + 2]->m_trigWheel2);
196 
197  bool five_wheels_OR = triggerbits.any();
198 
199  ttVec.at(0) = L1GtTechnicalTrigger(
200  m_ttNames.at(0), m_ttBits.at(0), bx, five_wheels_OR); // bit 24 = Or 5 wheels in TTU mode
201  ttVec.at(2) = L1GtTechnicalTrigger(m_ttNames.at(2), m_ttBits.at(2), bx, triggerbits[0]); // bit 26
202  ttVec.at(3) = L1GtTechnicalTrigger(m_ttNames.at(3), m_ttBits.at(3), bx, triggerbits[1]); // bit 27
203  ttVec.at(4) = L1GtTechnicalTrigger(m_ttNames.at(4), m_ttBits.at(4), bx, triggerbits[2]); // bit 28
204  ttVec.at(5) = L1GtTechnicalTrigger(m_ttNames.at(5), m_ttBits.at(5), bx, triggerbits[3]); // bit 29
205  ttVec.at(6) = L1GtTechnicalTrigger(m_ttNames.at(6), m_ttBits.at(6), bx, triggerbits[4]); // bit 30
206 
207  triggerbits.reset();
208 
209  has_bx0 = true;
210 
211  break;
212 
213  } else
214  continue;
215  }
216 
217  infoSize = serializedInfoLine2.size();
218 
219  std::sort(serializedInfoLine2.begin(), serializedInfoLine2.end(), sortByBx);
220 
221  if (m_verbosity) {
222  for (auto& ttu : serializedInfoLine2) {
223  if (abs(ttu->m_bx) <= 1)
224  std::cout << "RPCTechnicalTrigger> " << ttu->m_ttuidx << '\t' << ttu->m_bx << '\t' << ttu->m_trigWheel1 << '\t'
225  << ttu->m_trigWheel2 << '\t' << ttu->m_wedge << '\n';
226  }
227  }
228 
229  auto ttuResultsByQuadrant = convertToMap(serializedInfoLine2);
230 
231  std::bitset<8> triggerCoincidence;
232  triggerCoincidence.reset();
233 
234  // searchCoincidence( W-2 , W0 )
235  bool result = searchCoincidence(-2, 0, ttuResultsByQuadrant);
236  triggerCoincidence.set(0, result);
237 
238  // searchCoincidence( W-2 , W+1 )
239  result = searchCoincidence(-2, 1, ttuResultsByQuadrant);
240  triggerCoincidence.set(1, result);
241 
242  // searchCoincidence( W-1 , W0 )
243  result = searchCoincidence(-1, 0, ttuResultsByQuadrant);
244  triggerCoincidence.set(2, result);
245 
246  // searchCoincidence( W-1 , W+1 )
247  result = searchCoincidence(-1, 1, ttuResultsByQuadrant);
248  triggerCoincidence.set(3, result);
249 
250  // searchCoincidence( W-1 , W+2 )
251  result = searchCoincidence(-1, 2, ttuResultsByQuadrant);
252  triggerCoincidence.set(4, result);
253 
254  // searchCoincidence( W0 , W0 )
255  result = searchCoincidence(0, 0, ttuResultsByQuadrant);
256  triggerCoincidence.set(5, result);
257 
258  // searchCoincidence( W+1 , W0 )
259  result = searchCoincidence(1, 0, ttuResultsByQuadrant);
260  triggerCoincidence.set(6, result);
261 
262  // searchCoincidence( W+2 , W0 )
263  result = searchCoincidence(2, 0, ttuResultsByQuadrant);
264  triggerCoincidence.set(7, result);
265 
266  bool five_wheels_OR = triggerCoincidence.any();
267 
268  if (m_verbosity)
269  std::cout << "RPCTechnicalTrigger> pointing trigger: " << five_wheels_OR << '\n';
270 
271  ttVec.at(1) =
272  L1GtTechnicalTrigger(m_ttNames.at(1), m_ttBits.at(1), bx, five_wheels_OR); // bit 25 = Or 5 wheels in RBC mode
273 
274  triggerCoincidence.reset();
275 
276  //...check that data appeared at bx=0
277 
278  if (!has_bx0) {
279  iEvent.put(std::move(output));
280  LogDebug("RPCTechnicalTrigger") << "RPCTechnicalTrigger> end of event loop" << std::endl;
281  return;
282  }
283 
284  output->setGtTechnicalTrigger(ttVec);
285  iEvent.put(std::move(output));
286 
287  //.... all done
288 
289  LogDebug("RPCTechnicalTrigger") << "RPCTechnicalTrigger> end of event loop" << std::endl;
290 }
#define LogDebug(id)
bool searchCoincidence(int, int, std::map< int, TTUResults * > const &ttuResultsByQuandrant) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
const edm::InputTag m_rpcDigiLabel
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
static std::string const input
Definition: EdmProvDump.cc:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:70
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:488
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
const edm::EDGetTokenT< RPCDigiCollection > m_rpcDigiToken
const std::vector< unsigned > m_ttBits
T get() const
Definition: EventSetup.h:73
const std::vector< std::string > m_ttNames
def move(src, dest)
Definition: eostools.py:511
std::map< int, TTUResults * > convertToMap(const std::vector< std::unique_ptr< TTUResults >> &) const
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
bool RPCTechnicalTrigger::searchCoincidence ( int  wheel1,
int  wheel2,
std::map< int, TTUResults * > const &  ttuResultsByQuandrant 
) const
private

Definition at line 366 of file RPCTechnicalTrigger.cc.

References dqmdumpme::k, and crabWrapper::key.

Referenced by RPCTechnicalTrigger::TTUResults::getTriggerForWheel(), and produce().

368  {
369  std::map<int, TTUResults*>::const_iterator itr;
370  bool topRight(false);
371  bool botLeft(false);
372 
373  int indxW1 = wheelTtu[wheel1 + kWheelOffset];
374  int indxW2 = wheelTtu[wheel2 + kWheelOffset];
375 
376  int k(0);
377  int key(0);
378  bool finalTrigger(false);
379  int maxTopQuadrants = 4;
380 
381  //work out Pointing Logic to Tracker
382 
383  for (auto firstSector : s_quadrants) {
384  key = 1000 * (indxW1) + firstSector;
385 
386  itr = ttuResultsByQuadrant.find(key);
387  if (itr != ttuResultsByQuadrant.end())
388  topRight = (*itr).second->getTriggerForWheel(wheel1);
389 
390  //std::cout << "W1: " << wheel1 << " " << "sec: " << firstSector << " dec: " << topRight << '\n';
391 
392  key = 1000 * (indxW2) + firstSector + 5;
393 
394  itr = ttuResultsByQuadrant.find(key);
395 
396  if (itr != ttuResultsByQuadrant.end())
397  botLeft = (*itr).second->getTriggerForWheel(wheel2);
398 
399  //std::cout << "W2: " << wheel2 << " " << "sec: " << firstSector + 5 << " dec: " << botLeft << '\n';
400 
401  finalTrigger |= (topRight && botLeft);
402 
403  ++k;
404 
405  if (k > maxTopQuadrants)
406  break;
407  }
408 
409  //Try the opposite now
410 
411  k = 0;
412 
413  for (auto firstSector : s_quadrants) {
414  key = 1000 * (indxW2) + firstSector;
415 
416  itr = ttuResultsByQuadrant.find(key);
417  if (itr != ttuResultsByQuadrant.end())
418  topRight = (*itr).second->getTriggerForWheel(wheel1);
419 
420  //std::cout << "W1: " << wheel1 << " " << "sec: " << firstSector << " dec: " << topRight << '\n';
421 
422  key = 1000 * (indxW1) + firstSector + 5;
423 
424  itr = ttuResultsByQuadrant.find(key);
425 
426  if (itr != ttuResultsByQuadrant.end())
427  botLeft = (*itr).second->getTriggerForWheel(wheel2);
428 
429  //std::cout << "W2: " << wheel2 << " " << "sec: " << firstSector + 5 << " dec: " << botLeft << '\n';
430 
431  finalTrigger |= (topRight && botLeft);
432 
433  ++k;
434 
435  if (k > maxTopQuadrants)
436  break;
437  }
438 
439  return finalTrigger;
440 }

Member Data Documentation

int RPCTechnicalTrigger::kMaxTtuBoards = 3
staticprivate

Definition at line 82 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), printinfo(), and produce().

std::string RPCTechnicalTrigger::m_configFile
private

Definition at line 89 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

bool RPCTechnicalTrigger::m_hasConfig
private

Definition at line 101 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), produce(), and RPCTechnicalTrigger().

const RBCBoardSpecs* RPCTechnicalTrigger::m_rbcspecs
private

Definition at line 99 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

std::unique_ptr<TTUConfigurator> RPCTechnicalTrigger::m_readConfig
private

Definition at line 97 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

const edm::InputTag RPCTechnicalTrigger::m_rpcDigiLabel
private

Definition at line 92 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

const edm::EDGetTokenT<RPCDigiCollection> RPCTechnicalTrigger::m_rpcDigiToken
private

Definition at line 93 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

const std::vector<unsigned> RPCTechnicalTrigger::m_ttBits
private

Definition at line 90 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

const std::vector<std::string> RPCTechnicalTrigger::m_ttNames
private

Definition at line 91 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

std::array<TTUEmulator, kMaxTtuBoards> RPCTechnicalTrigger::m_ttu
private

Definition at line 83 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), printinfo(), produce(), and RPCTechnicalTrigger().

std::array<TTUEmulator, kMaxTtuBoards> RPCTechnicalTrigger::m_ttuRbcLine
private

Definition at line 85 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), printinfo(), produce(), and RPCTechnicalTrigger().

const TTUBoardSpecs* RPCTechnicalTrigger::m_ttuspecs
private

Definition at line 98 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

const int RPCTechnicalTrigger::m_useEventSetup
private

Definition at line 88 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

const int RPCTechnicalTrigger::m_useRPCSimLink
private

Definition at line 95 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

const int RPCTechnicalTrigger::m_verbosity
private

Definition at line 87 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().