52 std::vector<int> overview(2);
62 if (!CMXJetTob.isValid())
65 return StatusCode::FAILURE;
87 for (; it_CMXJetTob != it_CMXJetTob_end; ++it_CMXJetTob)
89 const int crate = (*it_CMXJetTob)->crate();
90 const int jem = (*it_CMXJetTob)->jem();
91 const int frame = (*it_CMXJetTob)->frame();
92 const int location = (*it_CMXJetTob)->location();
93 const int energyLg = (*it_CMXJetTob)->energyLarge();
94 const int energySm = (*it_CMXJetTob)->energySmall();
95 const int error = (*it_CMXJetTob)->error();
97 const int y = frame * 4 + location;
100 jetTobEnergyLg = energyLg;
107 jetTobEnergySm = energySm;
114 threshParityTobJem = jem;
115 threshParityTobCrate = crate;
122 if (energyLg || energySm ||
error) {
129 for (
int crate = 0; crate <
m_crates; ++crate) {
130 for (
int jem = 0; jem <
m_modules; ++jem) {
131 int val = tobCount[crate *
m_modules + jem];
139 int val = cmxCount[crate];
154 if (!CMXJetHits.isValid()) {
156 return StatusCode::FAILURE;
159 ATH_MSG_DEBUG(
"-------------- CMX Jet Hits ---------------");
187 for (; it_CMXJetHits != it_CMXJetHitsEnd; ++it_CMXJetHits) {
188 const int crate = (*it_CMXJetHits)->crate();
189 const int source = (*it_CMXJetHits)->sourceComponent();
190 const unsigned int hits0 = (*it_CMXJetHits)->hits0();
191 const unsigned int hits1 = (*it_CMXJetHits)->hits1();
192 const DataError err0((*it_CMXJetHits)->error0());
193 const DataError err1((*it_CMXJetHits)->error1());
200 fillThresholds(threshTotalMainVals, threshTotalMainHits, hits0, 5, 3);
201 fillThresholds(threshTotalMainVals, threshTotalMainHits, hits1, 5, 3, 5);
204 if (crate ==
m_crates - 1 && err0.get(DataError::Overflow)) {
212 threshRoiOverflow =
x;
223 topoDataChecksum = crate;
239 for (
int mod = 0; mod <
m_modules / 2; ++mod) {
240 const int val = (hits0 >> (mod * 3)) & 0x7;
242 topoTobsPerJem = val;
244 cmxCount[crate] += val;
251 for (
int mod = 0; mod <
m_modules / 2; ++mod) {
252 const int val = (hits1 >> (mod * 3)) & 0x7;
254 topoTobsPerJem = val;
256 cmxCount[crate] += val;
266 if (j_num_slice < 0) j_num_slice = (*it_CMXJetHits)->peak();
272 for (
int bit = 0; bit < 8; ++bit) {
273 if ((status >> bit) & 0x1) {
274 cmxThreshStatusErr_bit = bit;
275 cmxThreshStatusErr_crate = crate;
288 const int p0 = err0.get(DataError::Parity);
289 const int p1 = err1.get(DataError::Parity);
293 cmxThreshParityErr = xpos;
298 cmxThreshParityErr = xpos;
308 for (
int crate = 0; crate <
m_crates; ++crate) {
309 int val = cmxCount[crate];
313 topoTobsPerCmx = val;
324 if (!CMXEtSums.isValid()) {
326 return StatusCode::FAILURE;
375 for (; it_CMXEtSums != it_CMXEtSums_end; ++it_CMXEtSums) {
376 const int crate = (*it_CMXEtSums)->crate();
377 const int source = (*it_CMXEtSums)->sourceComponent();
378 const unsigned int rawEx = (*it_CMXEtSums)->ex();
379 const unsigned int rawEy = (*it_CMXEtSums)->ey();
380 const unsigned int rawEt = (*it_CMXEtSums)->et();
381 const int exError = (*it_CMXEtSums)->exError();
382 const int eyError = (*it_CMXEtSums)->eyError();
383 const int etError = (*it_CMXEtSums)->etError();
390 const int ex = rawEx;
391 const int ey = rawEy;
392 const int et = rawEt;
415 LVL1::CrateEnergy cen(crate, rawEt, rawEx, rawEy, etError & 0x1, exError & 0x1, eyError & 0x1);
416 const int ex = cen.
ex();
417 const int ey = cen.
ey();
418 const int et = rawEt;
473 if (e_num_slice < 0) {
474 e_num_slice = (*it_CMXEtSums)->peak();
475 if (j_num_slice >= 0) {
476 cmxTriggeredSlice = std::abs(e_num_slice - j_num_slice);
486 const DataError exerr(exError);
487 const DataError eyerr(eyError);
488 const DataError eterr(etError);
491 for (
int bit = 0; bit < 8; ++bit) {
492 if ((status >> bit) & 0x1) {
493 cmxEnergyStatus_bit = bit;
494 cmxEnergyStatus_cra = crate;
506 const int p0 = exerr.get(DataError::Parity);
507 const int p1 = eyerr.get(DataError::Parity);
508 const int p2 = eterr.get(DataError::Parity);
509 if (p0 || p1 || p2) {
512 const int xpos = crate *
m_modules + source;
513 cmxEnergyParityModx = xpos;
514 if (p0) cmxEnergyParityMody = 0.;
515 if (p1) cmxEnergyParityMody = 1.;
516 if (p2) cmxEnergyParityMody = 2.;
521 if (p0) cmxParityRem = 0.;
522 if (p1) cmxParityRem = 1.;
525 if (p0) cmxParityRem = 2.;
526 if (p1) cmxParityRem = 3.;
543 cmxEnergyOverflowy = ypos;
545 cmxEnergyOverflowx = 0.;
546 cmxEnergyOverflowz = exerr.get(DataError::Overflow);
549 cmxEnergyOverflowx = 1.;
550 cmxEnergyOverflowz = eyerr.get(DataError::Overflow);
553 cmxEnergyOverflowx = 2.;
554 cmxEnergyOverflowz = eterr.get(DataError::Overflow);
563 cmxEnergyOverflowResy = ypos;
565 cmxEnergyOverflowResx = 0.;
566 cmxEnergyOverflowResz = exerr.get(DataError::Overflow);
567 fill(
m_packageName, cmxEnergyOverflowResx, cmxEnergyOverflowResy, cmxEnergyOverflowResz);
569 cmxEnergyOverflowResx = 1.;
570 cmxEnergyOverflowResz = eyerr.get(DataError::Overflow);
571 fill(
m_packageName, cmxEnergyOverflowResx, cmxEnergyOverflowResy, cmxEnergyOverflowResz);
573 cmxEnergyOverflowResx = 2.;
574 cmxEnergyOverflowResz = eterr.get(DataError::Overflow);
575 fill(
m_packageName, cmxEnergyOverflowResx, cmxEnergyOverflowResy, cmxEnergyOverflowResz);
588 return StatusCode::FAILURE;
622 const int rawEx = CR->
ex();
623 const int rawEy = CR->
ey();
624 const int et = CR->
et();
625 const int exError = CR->
exError();
626 const int eyError = CR->
eyError();
627 const int etError = CR->
etError();
640 fillThresholds(roiSumEtHits_var, roiSumEtHits_hit, sumEtHits, 8, 1);
641 fillThresholds(roiMissingEtHits_var, roiMissingEtHits_hit, missingEtHits, 8, 1);
642 fillThresholds(roiMissingEtSigHits_var, roiMissingEtSigHits_hit, missingEtSigHits, 8, 1);
643 fillThresholds(roiSumEtHitsMask_var, roiSumEtHitsMask_hit, sumEtHitsM, 8, 1);
644 fillThresholds(roiMissingEtHitsMask_var, roiMissingEtHitsMask_hit, missingEtHitsM, 8, 1);
648 const int ex = cen.
ex();
649 const int ey = cen.
ey();
664 LVL1::CrateEnergy cen2(1, etM, rawExM, rawEyM, etErrorM & 0x1, exErrorM & 0x1, eyErrorM & 0x1);
665 const int exM = cen2.
ex();
666 const int eyM = cen2.
ey();
681 return StatusCode::SUCCESS;