Skip to content

MDTCalibData - Do not calculate timeslew via vector look-up

Johannes Junggeburth requested to merge (removed):FPE_July_data16 into master

Hi,

in the large round of large scale-tests, the muon algorithms threw a ton of FPEs. Unfortunately, the first FPE. which I picked turns out to be not reproducible itself. But, rechecking the changes made in !44152 (merged), I noticed that

  if( adc>400. || adc<0. ) return 0.;
  return s_LUT[static_cast<int>(adc)];

on a vector with size of 400 could lead to out bound accesses and those random numbers will eventually lead to the tons FPEs seen in the large scale tests. In fact, I verified that this is the case by throwing an exception

  if( adc>400. || adc<0. ) return 0.;
  const int int_adc = adc;
  if (int_adc == 400){
     throw std::runtime_error("The tortoise is gone");
  } 

which was eventually thrown on the first event reporting a FPE which I tested. Further, I am wondering why do we need a look-up table for the calculation of a simple exponential decay and thus I replaced it directly. Let me tag @diehl, in cases he has any objections against the changes.

Tagging: @elmsheus, @emoyse, @goetz, @mhodgkin, @zmarshal, @rmazini,
Closes ATLASRECTS-6507 Large scale-test submitted to: https://bigpanda.cern.ch/task/26277586/

Tagging: @goblirsc, @npetters, @sroe, @pgadow for another episode of the philosopher of the day image

Edited by Johannes Junggeburth

Merge request reports