@@ -359,21 +359,24 @@ struct centralEventFilterTask {
359359 mFiltered ->SetBinContent (1 , mFiltered ->GetBinContent (1 ) + nEvents - startCollision);
360360
361361 for (uint64_t iE{0 }; iE < outTrigger.size (); ++iE) {
362+ const auto & triggerWord{outTrigger[iE]};
362363 bool triggered{false }, selected{false };
363- for (uint64_t iD{0 }; iD < outTrigger[ 0 ] .size (); ++iD) {
364+ for (uint64_t iD{0 }; iD < triggerWord .size (); ++iD) {
364365 for (int iB{0 }; iB < 64 ; ++iB) {
365- if (!(outTrigger[iE] [iD] & BIT (iB))) {
366+ if (!(triggerWord [iD] & BIT (iB))) {
366367 continue ;
367368 }
368- for (uint64_t jD{0 }; jD < outTrigger[0 ].size (); ++jD) {
369- for (int iC{iB}; iC < 64 ; ++iC) {
370- if (outTrigger[iE][iD] & BIT (iC)) {
371- mCovariance ->Fill (iD * 64 + iB, jD * 64 + iC);
369+ uint64_t xIndex{iD * 64 + iB};
370+ for (uint64_t jD{0 }; jD < triggerWord.size (); ++jD) {
371+ for (int jB{0 }; jB < 64 ; ++jB) {
372+ uint64_t yIndex{jD * 64 + jB};
373+ if (xIndex <= yIndex && triggerWord[jD] & BIT (jB)) {
374+ mCovariance ->Fill (iD * 64 + iB, jD * 64 + jB);
372375 }
373376 }
374377 }
375378 }
376- triggered = triggered || outTrigger[iE] [iD];
379+ triggered = triggered || triggerWord [iD];
377380 selected = selected || outDecision[iE][iD];
378381 }
379382 if (triggered) {
0 commit comments