MET Trigger code rewrite for 21.3
NB: This MR changes the results of the tier 0 tests. This is very much expected and the major differences are explained before. Once this MR has been approved, new reference files can be found at /afs/cern.ch/work/j/jburr/public/Tier0NewRef
- I'll update these if any requested changes modify the reference file.
The old MET trigger code was in a rather unpleasant state given that it was written for run 1 and the way that the MET trigger functions has changed significantly since then. This MR is designed to update the code.
We're doing this in 21.3 first so that we can test the changes and also do new updates for test algorithms inside this release still. If it all works nicely, the changes will also be pushed into master.
This MR is designed for the most part not to change the output of the trigger system too much, though it will result in changes to the output ESD/AOD files. Counts should not be largely affected. The list of these changes are as follow
- a minor bug was found in our current pufit implementations where the angles of hard-scatter objects were not always correctly calculated
- the
sumE
values in the output EDM objects was based on a sum over|E|
due to the choice of functions used. This was not a deliberate choice so we decided instead to sum overE
- previous pufit
ez/sumEt/sumE
values were just the topocluster sum (or similar such thing for other variants). Now the corrections are extrapolated out inη
so we can construct a full estimate of theez/sumEt/sumE
values. - the status flags are being rewritten
As of commit ID 9c03cd8d the following validation steps are done.
- Output
xAOD::TrigMissingET
objects from jobs running the current 21.3 head and my changes are compared. The only differences larger than a few MeV are either in pufit algorithms or in thesumE
value - The pufit changes were validated for the baseline tc pufit algorithm by making the relevant fix in the 21.3 head and comparing those values
Usually the agreement is much better than the few MeV threshold used above, but sometimes there are differences which seem to come from how TLorentzVector
was behaving internally... Either way, given that our thresholds are measured in GeV a difference of a few MeV is allowable...
Beyond this line the structure of the EDM changes but no 'physics' changes are made to the algorithms.
The EDM output of the TC algorithm is now split into two different containers (EM and LCW calibrated) to be more consistent with the other algorithms and to allow a much simpler hypo structure.
Some monitoring changes are also made
- The monitoring code is slightly rewritten to allow a smoother interface for the FEX classes
- The hypos no longer monitor 'cut type' because we now have different hypos for each type of cut (and therefore this histogram would just be a chain counter which we already have)
- The cell FEX no longer monitors the time taken to load and process the cell collections - this is not really very useful
I've also renamed many of the components and in some cases added some
- Many algorithms (e.g. mht) wrote out the full MET also as a component. This was wasteful as wrote the same sets of numbers twice
- The cell algorithm renamed some of its components from the names given in
CaloGeoHelpers
- I've now changed this to be the same asCaloGeoHelpers
- The TrkMHT algorithm added the TST to each jet component. I now write the jet components without the TST and write the TST as its own component
- The TrkTC algorithm now writes sensible components and a TST. Previously it saved 8 empty components...