Skip to content

Fix exception caused by expression parser when using non xaod variables multiple times in the same expression.

  • fix exception when the same plain type variable (i.e. std::vector rather than xAOD::AuxVectorBase) is used multiple times in the same expression. The problem is caused because if the registration of a read handle key for a plain variable fails because such a key was already registered, the variable is not skipped, but treated as an xAOD variable. The latter does not make any sense and leads to the exception. The problem is fixed by not treating a registration as a failure if an read handle key of the same type exists already, then further occurrances of the same variable are skipped as they should be.

  • Also, avoid that the data dependencies are resolved multiple times for variables which appear multiple times in expressions. This also would avoid the problem above, but not fully eliminate it. This still reduces the number of variables that need to be processed (optimisation).

Edited by Goetz Gaycken

Merge request reports