53 if(towers.isValid() && !towers->empty()) {
57 for(
auto eFexTower : *towers) {
60 if(badTowers != towers->size()) {
73 timeSince = ctx.eventID().time_stamp() - larBadChan.
getRange().start().time_stamp();
74 timeUntil = larBadChan.
getRange().stop().time_stamp() - ctx.eventID().time_stamp();
82 if((timeUntil>=0&&timeUntil<=5)) {
84 IsEmulatedTowers=
false;
90 if(!scells.
isValid() || scells->size()!=34048){
91 IsEmulatedTowers=
false;
104 std::set<uint32_t> word0s2;
106 for(
const auto tob : *tobs2) {
107 word0s2.insert(tob->word0());
115 bool mismatches=
false;
119 for(
const auto tob : *tobs1) {
120 if(word0s2.find(tob->word0()) == word0s2.end()) {
125 if(tobs2.
isValid() && tobs1->size() < tobs2->size()) {
136 auto& firstEvents = (fexReadout==1) ? m_firstEvents_DataTowers : m_firstEvents_EmulatedTowers;
139 auto itr = firstEvents.find(lbn);
140 if(itr==firstEvents.end()) {
141 firstEvents[lbn] = std::to_string(lbn)+
":"+std::to_string(evtNumber);
142 itr = firstEvents.find(lbn);
144 lbnString = itr->second;
147 std::vector<float> detas{};std::vector<float> setas{};
148 std::vector<float> dphis{};std::vector<float> sphis{};
149 std::vector<unsigned int> dword0s{};std::vector<unsigned int> sword0s{};
160 std::set<uint32_t> word0s1;
161 for(
const auto tob : *tobs1) {
162 word0s1.insert(tob->word0());
166 for(
size_t i = 0; i < tobs1->size();i++) {
167 if(word0s2.find(tobs1->at(i)->word0())==word0s2.end()) {
168 locIdx = std::to_string(tobs1->at(i)->shelfNumber()*12+tobs1->at(i)->eFexNumber()) +
":" + std::to_string(tobs1->at(i)->fpga()) +
":" +
169 std::to_string(tobs1->at(i)->iEta()) +
":" + std::to_string(tobs1->at(i)->iPhi());
170 fill(signa +
"_mismatches",lbn,locIdx,simReady,IsDataTowers,IsEmulatedTowers);
173 for(
size_t i = 0; i < tobs2->size();i++) {
174 if(word0s1.find(tobs2->at(i)->word0())==word0s1.end()) {
175 locIdx = std::to_string(tobs2->at(i)->shelfNumber()*12+tobs2->at(i)->eFexNumber()) +
":" + std::to_string(tobs2->at(i)->fpga()) +
":" +
176 std::to_string(tobs2->at(i)->iEta()) +
":" + std::to_string(tobs2->at(i)->iPhi());
177 fill(signa +
"_mismatches",lbn,locIdx,simReady,IsDataTowers,IsEmulatedTowers);
183 ATH_MSG_WARNING(signa <<
" mismatch in lbn " << lbn <<
" evtNumber " << evtNumber);
186 s <<
"Data: " << std::hex;
187 for(
auto w : dword0s) s << w <<
" ";
190 s <<
"Simu: " << std::hex;
191 for(
auto w : sword0s) s << w <<
" ";
195 fill(
"mismatches",signatureEvtType,simReadyMismatch,tobMismatched,lbn,lbnString,evtNumber,dtobEtas,dtobPhis,dtobWord0s,stobEtas,stobPhis,stobWord0s,evtType,timeSince,timeUntil,IsDataTowers,IsEmulatedTowers,signature,simReady);
198 fill(
"mismatches",tobMismatched,lbn,signature,simReady,evtType);