Skip to content

Classes to represent and to build physics objects

Andrey Popov requested to merge object-builders into master

This is another step in the refactoring (shears#40 (closed)). All usual physics objects, such as muons or jets, are represented by dedicated classes. They are constructed by *Builder classes. The construction is lazy and implemented with per-event caching, meaning that, for example, jets will only be constructed if they are actually used, and this will be done at maximum once per event, returning for each subsequent access a reference to the jet collection built earlier. Collections of objects are always sorted in pT, which before was not the case at least for electrons.

There are some changes to definitions of physics objects:

  • A mistake in jet ID (#9 (closed)) is fixed.
  • Soft muon ID is eliminated, and the loose ID is used for the veto instead.
  • The veto for the EB-EE gap is only applied to tight electrons.
  • Jets in simulation are smeared to account for the pT resolution in data.
  • Changes in momenta of jets and muons are propagated into missing pT.

Systematic variations in JEC and JER are implemented (and propagated into missing pT as well).

Some old code is removed. There is no need for TLorentzVectorWithIndex any more. Most functions in the namespace objectSelection have been absorbed in the builders and therefore dropped.

Merge request reports