Skip to content

WIP: TrackParticle Compression Update, 21.2 branch (2019.02.06.)

This will need a lot of description...

This MR is meant to help with !20144 (closed), providing a generalisation of what that MR was/is trying to do. For this I made some significant changes to xAODMaker::TrackParticleCompressorTool, which is used by the xAOD::TrackParticleAuxContainer POOL converter.

I started experimenting with some complications in the tool. My goal would be to be able to define multiple rules for how the compression should go. To be able to specify rules specific to

  • streams;
  • containers;
  • selections on objects inside the container.

So, to be able to set up something like let's say:

  • For DAOD_PHYSLITE/InDetTrackParticles:
    • For pT > 10 GeV reduce the precision on the off-diagonal covariance matrix elements;
    • For 5 < pT < 10 GeV drop the off-diagonal elements, and reduce the precision of the diagonal ones;
    • For pT < 5 GeV drop all covariance matrix elements.
  • For DAOD_PHYS/InDetForwardTrackParticles:
    • Use the above settings...
  • For DAOD_PHYS/InDetTrackParticles:
    • Use something a bit more forgiving...

Which seemed like a nice idea... But as you can see, the code turned out pretty complicated. 😦

I'll list some more technicalities/concerns in further comments, but let me just state that things seem to work like this. Using a Zee test sample as input, I was able to get these results:

  • Original size 337.9 kB/event, with the covariance matrix taking up 42.7 kB/event.
  • When just compressing the off-diagonal elements, as we did during the AOD size reduction efforts, we get 328.1 kB/event, with the covariance matrix taking up 32.8 kB/event. I.e. not super impressive.
  • With the "aggressive compression" outlined above, I got down to 295.7 kB/event, with the covariance matrix taking up just ~0.5 kB/event.

So there seems to be reason for doing complicated stuff like this. 😉

Tagging relevant people: @jcatmore, @mnowak, @gemmeren.

Merge request reports