30 const std::vector<TriggerThreshold *> *caloThresholds) {
34 m_version = m_decoder->jetRoIVersion(m_roiWord);
35 m_coordRange = m_decoder->coordinate(m_roiWord);
38 this->constructRun2(caloThresholds);
40 this->constructRun1(caloThresholds);
47 m_version(m_decoder->jetRoIVersion(m_roiWord)),
55 m_roiWord(
obj.m_roiWord),
57 m_version(
obj.m_version),
58 m_coordRange(
obj.m_coordRange),
59 m_triggerThresholdValue(
obj.m_triggerThresholdValue),
60 m_windowSize(
obj.m_windowSize)
93 m_thresholdMask = m_roiWord & 0xfff;
96 if (this->isForwardJet())
105 std::map<unsigned int, TriggerThreshold *> thrMap;
106 for (std::vector<TriggerThreshold *>::const_iterator
it =
107 caloThresholds->begin();
108 it != caloThresholds->end(); ++
it)
110 if ((*it)->type() == jetTriggerType)
112 unsigned int num =
static_cast<unsigned int>((*it)->thresholdNumber());
113 thrMap.insert(std::map<unsigned int, TriggerThreshold *>::value_type(
num, (*
it)));
120 const vector<unsigned int> passed_thresholds =
121 (this->isForwardJet() ? m_decoder->fwdThresholdsPassed(m_roiWord)
122 : m_decoder->thresholdsPassed(m_roiWord));
124 int iphi =
int((m_coordRange.phiRange().min() + 0.025) * 32 /
M_PI);
126 int((this->eta() + ((this->eta() > 0.01) ? 0.025 : -0.025)) / 0.1) - 1;
131 for (vector<unsigned int>::const_iterator
itp = passed_thresholds.begin();
132 itp != passed_thresholds.end(); ++
itp)
134 std::map<unsigned int, TriggerThreshold *>::const_iterator thr =
135 thrMap.find(*
itp - 1);
136 if (thr != thrMap.end())
139 thr->second->triggerThresholdValue(ieta, iphi);
143 m_triggerThresholdValue.insert(std::map<unsigned int, unsigned int>::value_type(
146 std::map<unsigned int, unsigned int>::value_type(*
itp, jtv->
window()));
160 m_triggerThresholdValue.clear();
161 m_windowSize.clear();
164 int((this->eta() + ((this->eta() > 0.01) ? 0.025 : -0.025)) / 0.1) - 1;
168 int iphi =
int((m_coordRange.phiRange().min() + 0.025) * 32 /
M_PI);
172 for (std::vector<TriggerThreshold *>::const_iterator
it =
173 caloThresholds->begin();
174 it != caloThresholds->end(); ++
it) {
182 unsigned int etCut = jtv->
ptcut();
188 unsigned int num =
static_cast<unsigned int>((*it)->thresholdNumber());
189 m_triggerThresholdValue.insert(
190 std::map<unsigned int, unsigned int>::value_type(
num, etCut));
192 std::map<unsigned int, unsigned int>::value_type(
num, window));
193 m_thresholdMask |= (1 <<
num);
203 int ieta =
int((this->eta() + ((this->eta() > 0.01) ? 0.025 : -0.025)) / 0.1) - 1;
211 for (
const shared_ptr<TrigConf::L1Threshold> &thr :
l1menu->thresholds(
"JET"))
222 unsigned int etCut =
std::round(jetThr->thrValue(ieta));
223 unsigned int etCounts = jetThr->thrValueCounts(ieta);
226 bool eTPassed = (roiET > etCounts);
230 const unsigned int num = thr->mapping();
231 m_triggerThresholdValue[
num] = etCut;
232 m_windowSize[
num] = window;
233 m_thresholdMask |= (1 <<
num);
245 double roiPhi = m_coordRange.phi();
266 unsigned int row = m_decoder->row(m_roiWord);
267 unsigned int col = m_decoder->column(m_roiWord);
268 return ((
col & 2) << 1) + (
row >> 1);
274 unsigned int row = m_decoder->row(m_roiWord);
275 unsigned int col = m_decoder->column(m_roiWord);
276 return (
col & 1) + ((
row & 1) << 1);
284 return m_decoder->etLarge(m_roiWord);
287 std::map<unsigned int, unsigned int>::const_iterator
it =
288 m_triggerThresholdValue.begin();
289 for (;
it != m_triggerThresholdValue.end(); ++
it)
290 if (
it->second > highest)
291 highest =
it->second;
301 return m_decoder->etSmall(m_roiWord);
304 std::map<unsigned int, unsigned int>::const_iterator
it =
305 m_triggerThresholdValue.begin();
306 for (;
it != m_triggerThresholdValue.end(); ++
it)
307 if (
it->second > highest)
308 highest =
it->second;
324 std::map<unsigned int, unsigned int>::const_iterator
it =
325 m_triggerThresholdValue.find(thresholdNumber);
326 if (
it != m_triggerThresholdValue.end())
338 if ((m_version < 2) && this->isValidThreshold(thresholdNumber)) {
339 return (((1 << (thresholdNumber + 7)) & m_roiWord) > 0);
351 std::vector<unsigned int>
354 std::vector<unsigned int> newVec;
357 if (m_version == 1) {
358 if (this->isForwardJet())
364 for (
unsigned int iTh = 0; iTh <= nThresh; ++iTh) {
365 std::map<unsigned int, unsigned int>::const_iterator
it =
366 m_triggerThresholdValue.find(iTh);
367 if (
it != m_triggerThresholdValue.end())
368 newVec.push_back(iTh);
380 map<unsigned int, unsigned int>::const_iterator
it =
381 m_triggerThresholdValue.find(
thresh);
382 if (
it != m_triggerThresholdValue.end()) {
391 map<unsigned int, unsigned int>::const_iterator
it = m_windowSize.find(
thresh);
392 if (
it != m_windowSize.end()) {
402 if (!this->isForwardJet()) {
415 if (m_version <= 1 && ((1 << 18) & m_roiWord))