CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

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
 
edm::ESGetToken< RBCBoardSpecs,
RBCBoardSpecsRcd
m_pRBCSpecsToken
 
edm::ESGetToken< TTUBoardSpecs,
TTUBoardSpecsRcd
m_pTTUSpecsToken
 
const RBCBoardSpecsm_rbcspecs
 
std::unique_ptr< TTUConfiguratorm_readConfig
 
const edm::InputTag m_rpcDigiLabel
 
const edm::EDGetTokenT
< RPCDigiCollection
m_rpcDigiToken
 
edm::ESGetToken< RPCGeometry,
MuonGeometryRecord
m_rpcGeometryToken
 
const std::vector< unsigned > m_ttBits
 
const std::vector< std::string > m_ttNames
 
std::array< TTUEmulator,
kMaxTtuBoards
m_ttu
 
std::array< TTUEmulator,
kMaxTtuBoards
m_ttuRbcLine
 
const TTUBoardSpecsm_ttuspecs
 
const int m_useEventSetup
 
const int m_useRPCSimLink
 
const int m_verbosity
 

Static Private Attributes

static constexpr int kMaxTtuBoards = 3
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Description: Implementation of the RPC Technical Trigger Emulator

Implementation:

Definition at line 69 of file RPCTechnicalTrigger.h.

Constructor & Destructor Documentation

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

Definition at line 39 of file RPCTechnicalTrigger.cc.

References beamspotdip_dqm_sourceclient-live_cfg::configFile, validate-o2o-wbm::f1, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HLT_FULL_cff::InputTag, LogTrace, m_configFile, m_hasConfig, m_pRBCSpecsToken, m_pTTUSpecsToken, m_rpcDigiLabel, m_rpcDigiToken, m_rpcGeometryToken, 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  m_rpcGeometryToken(esConsumes<RPCGeometry, MuonGeometryRecord>()) {
48  std::string configFile = iConfig.getParameter<std::string>("ConfigFile");
49 
50  edm::FileInPath f1("L1Trigger/RPCTechnicalTrigger/data/" + configFile);
51  m_configFile = f1.fullPath();
52 
53  if (m_verbosity) {
54  LogTrace("RPCTechnicalTrigger") << m_rpcDigiLabel << '\n' << std::endl;
55 
56  LogTrace("RPCTechnicalTrigger") << "\nConfiguration file used for UseEventSetup = 0 \n"
57  << m_configFile << '\n'
58  << std::endl;
59  }
60 
61  //...........................................................................
62  //... There are three Technical Trigger Units Boards: 1 can handle 2 Wheels
63  //... n_Wheels sets the number of wheels attached to board with index boardIndex
64 
65  constexpr std::array<int, 3> boardIndex = {{1, 2, 3}};
66  constexpr std::array<int, 3> nWheels = {{2, 1, 2}};
67 
68  m_ttu[0] = TTUEmulator(boardIndex[0], nWheels[0]);
69  m_ttu[1] = TTUEmulator(boardIndex[1], nWheels[1]);
70  m_ttu[2] = TTUEmulator(boardIndex[2], nWheels[2]);
71 
72  //... This is second line that delivers in parallel a second trigger
73  m_ttuRbcLine[0] = TTUEmulator(boardIndex[0], nWheels[0]);
74  m_ttuRbcLine[1] = TTUEmulator(boardIndex[1], nWheels[1]);
75  m_ttuRbcLine[2] = TTUEmulator(boardIndex[2], nWheels[2]);
76 
77  //...........................................................................
78 
79  m_hasConfig = false;
80  produces<L1GtTechnicalTriggerRecord>();
81  consumes<edm::DetSetVector<RPCDigiSimLink>>(edm::InputTag("simMuonRPCDigis", "RPCDigiSimLink", ""));
82  if (m_useEventSetup >= 1) {
83  m_pRBCSpecsToken = esConsumes<RBCBoardSpecs, RBCBoardSpecsRcd, edm::Transition::BeginRun>();
84  m_pTTUSpecsToken = esConsumes<TTUBoardSpecs, TTUBoardSpecsRcd, edm::Transition::BeginRun>();
85  }
86 }
T getUntrackedParameter(std::string const &, T const &) const
const edm::InputTag m_rpcDigiLabel
#define LogTrace(id)
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > m_rpcGeometryToken
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
const edm::EDGetTokenT< RPCDigiCollection > m_rpcDigiToken
const std::vector< unsigned > m_ttBits
edm::ESGetToken< RBCBoardSpecs, RBCBoardSpecsRcd > m_pRBCSpecsToken
const std::vector< std::string > m_ttNames
edm::ESGetToken< TTUBoardSpecs, TTUBoardSpecsRcd > m_pTTUSpecsToken
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
RPCTechnicalTrigger::~RPCTechnicalTrigger ( )
override

Definition at line 88 of file RPCTechnicalTrigger.cc.

88 {}

Member Function Documentation

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

Definition at line 294 of file RPCTechnicalTrigger.cc.

References edm::EventSetup::getHandle(), edm::ESHandleBase::isValid(), isotrackApplyRegressor::k, kMaxTtuBoards, LogDebug, m_configFile, m_hasConfig, m_pRBCSpecsToken, m_pTTUSpecsToken, m_rbcspecs, m_readConfig, m_ttu, m_ttuRbcLine, m_ttuspecs, m_useEventSetup, and edm::ESHandle< class >::product().

294  {
295  LogDebug("RPCTechnicalTrigger") << "RPCTechnicalTrigger::beginRun> starts" << std::endl;
296 
297  //.. Get Board Specifications (hardware configuration)
298 
299  if (m_useEventSetup >= 1) {
301 
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 }
std::unique_ptr< TTUConfigurator > m_readConfig
Log< level::Error, false > LogError
static constexpr int kMaxTtuBoards
const TTUBoardSpecs * m_ttuspecs
T const * product() const
Definition: ESHandle.h:86
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
const RBCBoardSpecs * m_rbcspecs
edm::ESGetToken< RBCBoardSpecs, RBCBoardSpecsRcd > m_pRBCSpecsToken
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
bool isValid() const
Definition: ESHandle.h:44
edm::ESGetToken< TTUBoardSpecs, TTUBoardSpecsRcd > m_pTTUSpecsToken
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
#define LogDebug(id)
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 submitPVResolutionJobs::key.

Referenced by 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 }
tuple key
prepare the HTCondor submission files and eventually submit them
void RPCTechnicalTrigger::printinfo ( ) const
private

Definition at line 444 of file RPCTechnicalTrigger.cc.

References isotrackApplyRegressor::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 }
static constexpr int kMaxTtuBoards
std::array< TTUEmulator, kMaxTtuBoards > m_ttu
std::array< TTUEmulator, kMaxTtuBoards > m_ttuRbcLine
#define LogDebug(id)
void RPCTechnicalTrigger::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 91 of file RPCTechnicalTrigger.cc.

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

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

Definition at line 366 of file RPCTechnicalTrigger.cc.

References isotrackApplyRegressor::k, and submitPVResolutionJobs::key.

Referenced by 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 }
tuple key
prepare the HTCondor submission files and eventually submit them

Member Data Documentation

constexpr int RPCTechnicalTrigger::kMaxTtuBoards = 3
staticprivate

Definition at line 83 of file RPCTechnicalTrigger.h.

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

std::string RPCTechnicalTrigger::m_configFile
private

Definition at line 90 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

bool RPCTechnicalTrigger::m_hasConfig
private

Definition at line 102 of file RPCTechnicalTrigger.h.

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

edm::ESGetToken<RBCBoardSpecs, RBCBoardSpecsRcd> RPCTechnicalTrigger::m_pRBCSpecsToken
private

Definition at line 138 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

edm::ESGetToken<TTUBoardSpecs, TTUBoardSpecsRcd> RPCTechnicalTrigger::m_pTTUSpecsToken
private

Definition at line 139 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

const RBCBoardSpecs* RPCTechnicalTrigger::m_rbcspecs
private

Definition at line 100 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

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

Definition at line 98 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

const edm::InputTag RPCTechnicalTrigger::m_rpcDigiLabel
private

Definition at line 93 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

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

Definition at line 94 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

edm::ESGetToken<RPCGeometry, MuonGeometryRecord> RPCTechnicalTrigger::m_rpcGeometryToken
private

Definition at line 137 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

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

Definition at line 91 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

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

Definition at line 92 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

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

Definition at line 84 of file RPCTechnicalTrigger.h.

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

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

Definition at line 86 of file RPCTechnicalTrigger.h.

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

const TTUBoardSpecs* RPCTechnicalTrigger::m_ttuspecs
private

Definition at line 99 of file RPCTechnicalTrigger.h.

Referenced by beginRun().

const int RPCTechnicalTrigger::m_useEventSetup
private

Definition at line 89 of file RPCTechnicalTrigger.h.

Referenced by beginRun(), and RPCTechnicalTrigger().

const int RPCTechnicalTrigger::m_useRPCSimLink
private

Definition at line 96 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().

const int RPCTechnicalTrigger::m_verbosity
private

Definition at line 88 of file RPCTechnicalTrigger.h.

Referenced by produce(), and RPCTechnicalTrigger().