Draft: MET Significance Calculator (& associated resolution functions/functors)

Introduces the MET significance calculation from SimpleAnalysis and since copied by GAMBIT. As such also introduces all the associated resolution functions, including their lookup histos. This is an early draft -- feedback appreciated!

The MetSig calc is basically a bunch of linear algebra to get phi and pt resolution components, and is handled in Tools/AtlasMetSignificance.hh.

The "secret sauce" are the (in some cases massive) object resolution maps. These are saved as yodas, and there is a new ResolutionFunctor<Jet/Particle> base class to deal with loading them (and allowing the calculator class to "own" them). These objects only read the files on construction, so as long as they are constructed in init (which can be handled by the ATLAS_METSIG_CALCULATOR) then the files won't be touched later. It maybe feels a bit heavy for what is essentially a 2D lookup table, but it ensure file reading is only done once, and makes them easy to pass around/substitute for one another.

I have tried hard (perhaps too hard) to be general -- it should be easy to drop in new resolution functions: e.g. if we can get PFlow Jet resolutions instead of the EMTopo that SA currently implements; or for Run 3, etc.

There is a new EXAMPLE_METSIG that illustrates usage.

It does perform better that MET/sqrt(HT), especially for large/significant MET (validation plots unfortunately ATLAS internal for now).

There are some remaining todos (some of which might be more like "nice-to-haves").

  • Contributions from gammas and (hadronic) taus and are not yet included. I don't think it'll be too hard to include them, but I don't have anything to validate this on, so we would just be assuming a) I've followed the simpleAnalysis logic closely enough and b) that logic is definitely correct.
  • More documentation to be clear about exactly where the datasets come from.
  • Depending on feedback, happy to be more aggressive with SFINAEy things.
  • Given that this is very much a SUSY variable, it would be good to hook this up to our "Simple" features (@mhabedan / @agbuckley how hard would this be?)
  • While things are under discussion, everything is in a header file to make reading easier -- I can split things up once they're finalised.
  • This isn't a massive change, but it isn't tiny either (it does involve one line changes to the main Makefile.am and configure.ac) -- 4.1.x or 4.2.0?

See the original implementation -- note this repo is public.

Edited by tprocter46

Merge request reports

Loading