44 ex <<
"algorithmBitNumber not found";
45 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::algorithmResult");
48 return i->algorithmResult();
52 int algorithmBitNumber, std::vector<L1GtLogicParser::OperandToken>& operandTokenVector)
const {
53 unsigned startIndex = 0;
54 unsigned endIndex = 0;
57 unsigned length = endIndex - startIndex;
58 if (length != operandTokenVector.size()) {
60 ex <<
"operand token vector size does not match number of conditions";
61 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::updateOperandTokenVector");
65 for (
unsigned i = 0;
i < length; ++
i) {
71 algorithmBitNumbers.clear();
75 algorithmBitNumbers.push_back(
i->algorithmBitNumber());
80 unsigned startIndex = 0;
81 unsigned endIndex = 0;
83 return endIndex - startIndex;
87 int algorithmBitNumber)
const {
88 unsigned startIndex = 0;
89 unsigned endIndex = 0;
95 int algorithmBitNumber,
unsigned conditionNumber)
const {
96 unsigned startIndex = 0;
97 unsigned endIndex = 0;
100 if (endIndex <= startIndex + conditionNumber) {
102 ex <<
"Condition number is out of range";
103 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::getCombinationsInCondition");
108 unsigned nextConditionIndex = startIndex + conditionNumber + 1
U;
112 unsigned beginObjectIndex =
m_conditionResults[startIndex + conditionNumber].startIndexOfCombinations();
113 unsigned short nObjectsPerCombination =
m_conditionResults[startIndex + conditionNumber].nObjectsPerCombination();
115 if (endObjectIndex == beginObjectIndex) {
118 if (endObjectIndex < beginObjectIndex ||
m_combinations.size() < endObjectIndex || nObjectsPerCombination == 0 ||
119 (endObjectIndex - beginObjectIndex) % nObjectsPerCombination != 0) {
121 ex <<
"Indexes to combinations are invalid";
122 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::getCombinationsInCondition");
126 (endObjectIndex - beginObjectIndex) / nObjectsPerCombination,
127 nObjectsPerCombination);
133 int algorithmBitNumber,
134 bool algorithmResult) {
144 std::vector<AlgorithmResult>::const_iterator
j =
i;
146 if (
j != iEnd && !(*
i < *
j)) {
148 ex <<
"AlgorithmResults should be sorted in increasing order of bit number with no duplicates. It is not.";
149 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::consistencyCheck");
154 if (endIndex < i->startIndexOfConditions()) {
156 ex <<
"startIndexOfConditions decreases or exceeds the size of m_conditionResults";
157 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::consistencyCheck");
164 std::vector<ConditionResult>::const_iterator
j =
i;
166 unsigned endIndex = (
j != iEnd) ?
j->startIndexOfCombinations() :
m_combinations.size();
168 if (endIndex < i->startIndexOfCombinations()) {
170 ex <<
"startIndexOfCombinations decreases or exceeds the size of m_conditionResults";
171 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::consistencyCheck");
174 unsigned length = endIndex -
i->startIndexOfCombinations();
176 if (
i->nObjectsPerCombination() != 0
U) {
178 ex <<
"Length is zero and nObjectsInCombination is not zero";
179 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::consistencyCheck");
183 if (
i->nObjectsPerCombination() == 0 || length %
i->nObjectsPerCombination() != 0) {
185 ex <<
"Size indicated by startIndexOfCombinations is not a multiple of nObjectsInCombination";
186 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::consistencyCheck");
196 unsigned short nObjectsPerCombination,
197 bool conditionResult) {
212 : m_startIndexOfConditions(0), m_algorithmBitNumber(0), m_algorithmResult(
false) {}
215 int algorithmBitNumber,
217 : m_startIndexOfConditions(startIndexOfConditions), m_algorithmResult(
algorithmResult) {
230 ex <<
"algorithmBitNumber out of range of a short int";
231 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::AlgorithmResult::AlgorithmResult");
238 : m_startIndexOfCombinations(0), m_nObjectsPerCombination(0), m_conditionResult(
false) {}
241 unsigned short nObjectsPerCombination,
242 bool conditionResult)
243 : m_startIndexOfCombinations(startIndexOfCombinations),
244 m_nObjectsPerCombination(nObjectsPerCombination),
245 m_conditionResult(conditionResult) {}
248 unsigned nConditions)
252 if (condition >= m_nConditions) {
254 ex <<
"argument out of range";
255 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::ConditionsInAlgorithm::getConditionResult");
262 unsigned nCombinations,
263 unsigned short nObjectsPerCombination)
264 : m_startOfObjectIndexes(startOfObjectIndexes),
265 m_nCombinations(nCombinations),
266 m_nObjectsPerCombination(nObjectsPerCombination) {}
269 unsigned object)
const {
270 if (combination >= m_nCombinations ||
object >= m_nObjectsPerCombination) {
272 ex <<
"arguments out of range";
273 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::CombinationsInCondition::getObjectIndex");
276 return m_startOfObjectIndexes[combination * m_nObjectsPerCombination +
object];
280 unsigned& startIndex,
281 unsigned& endIndex)
const {
285 if (iAlgo ==
m_algorithmResults.end() || iAlgo->algorithmBitNumber() != algorithmBitNumber) {
287 ex <<
"algorithmBitNumber not found";
288 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::getStartEndIndex");
292 startIndex = iAlgo->startIndexOfConditions();
298 ex <<
"index out of order or out of range";
299 ex.
addContext(
"Calling L1GlobalTriggerObjectMaps::getStartEndIndex");
void getStartEndIndex(int algorithmBitNumber, unsigned &startIndex, unsigned &endIndex) const
void pushBackCondition(unsigned startIndexOfCombinations, unsigned short nObjectsPerCombination, bool conditionResult)
void reserveForAlgorithms(unsigned n)
bool algorithmResult(int algorithmBitNumber) const
Returns whether an algorithm trigger passed or failed.
void reserveForObjectIndexes(unsigned n)
void pushBackObjectIndex(unsigned char objectIndex)
ConditionsInAlgorithm(ConditionResult const *conditionResults, unsigned nConditions)
void consistencyCheck() const
edm::ParameterSetID m_namesParameterSetID
void swap(Hash< I > &other)
short algorithmBitNumber() const
void reserveForConditions(unsigned n)
void swap(L1GlobalTriggerObjectMaps &rh)
std::vector< AlgorithmResult > m_algorithmResults
ConditionsInAlgorithm getConditionsInAlgorithm(int algorithmBitNumber) const
unsigned char getObjectIndex(unsigned combination, unsigned object) const
short m_algorithmBitNumber
std::vector< unsigned char > m_combinations
bool getConditionResult(unsigned condition) const
std::vector< ConditionResult > m_conditionResults
CombinationsInCondition(unsigned char const *startOfObjectIndexes, unsigned nCombinations, unsigned short nObjectsPerCombination)
void getAlgorithmBitNumbers(std::vector< int > &algorithmBitNumbers) const
Fills the vector with all the algorithm bit numbers.
void pushBackAlgorithm(unsigned startIndexOfConditions, int algorithmBitNumber, bool algorithmResult)
void setNamesParameterSetID(edm::ParameterSetID const &psetID)
void addContext(std::string const &context)
unsigned getNumberOfConditions(int algorithmBitNumber) const
Number of conditions associated with an algorithm.
void updateOperandTokenVector(int algorithmBitNumber, std::vector< L1GtLogicParser::OperandToken > &operandTokenVector) const
Update the condition result in the operandTokenVector.
bool algorithmExists(int algorithmBitNumber) const
Returns true if there is an entry for this algorithm bit number.
CombinationsInCondition getCombinationsInCondition(int algorithmBitNumber, unsigned conditionNumber) const