Skip to content
Snippets Groups Projects

Support FlowElements in JetReconstruction

Merged William Keaton Balunas requested to merge wbalunas/athena:feJets-201001 into master
All threads resolved!

The FlowElement (FE) EDM has been introduced to represent PFO/TCC/UFO objects, and PFO reconstruction is now capable of producing its output in FE format (TCC/UFOs in progress at the time of writing). This takes care of the next step, which is to add support for FEs in jet reconstruction itself. This affects tools which look at the constituents of jets, so most of the changes are related to jet modifier and constituent modifier tools.

This has also necessitated some more development of utilities for handling FlowElements, so I also introduce the FEHelpers collection of helper functions. The key difference is that all attribute handling lives outside of the EDM itself, allowing us more flexibility.

Quite a few other items came up during this development, so a summary of the changes is here:

JetMomentTools, JetRecTools, JetUtils

  • Added support for FlowElements to all tools which depend on the jet constituent type.
  • Only FlowElement representing PFOs are universally supported at the moment. We'll need a bit of further development to handle TCCs/UFOs when the time comes for that.
  • Fixed a bug in JetPtAssociationTool where it was trying to match the input jet collection to itself. This is the kind of thing it would be great to have ART tests for!

JetRec

  • Added a new job config flag jetFlags.usePFlowFE, which needs to be set to True for running FE-based jet reco. It is set to False by default.
  • Added FlowElement support to PseudoJetGetter
  • Added support for a FlowElement-based EMPFlow jet collection

eFlowRec

  • Updated the naming scheme for FlowElement moments to harmonize them with the CaloCluster scheme.
  • FlowElement reconstruction now correctly sets the signalType for the FEs it creates.
  • Fixed a bug where FlowElement moments weren't being saved correctly to the output collections.

xAODPFlow

  • Added a setP4(..) to the FlowElement EDM which takes in a FourMom_t instead of just the four individual components.

PFlowUtils

  • Added FEHelpers namespace, containing utility functions for FlowElements such as computing corrected 4-vectors and accessing cluster moments.

DerivationFramework

  • Added support for a "EMPFlowFE" chain in arbitrary derivations. This includes an addition to smart slimming lists, etc. This can be removed once we fully replace the nominal PFO collections and simply make "EMPFlow" the FlowElement-based one. But for now, we want to have both in parallel.

ThinningUtils

  • Added FlowElement support to ThinNegativeEnergyNeutralPFOsAlg

I've tested this full set of changes by running the full reco chain from RDO->AOD to get updated FlowElements, and the jet reconstruction itself in AOD->DAOD. I was able to produce a modified DAOD_PHYS with these new jets using the additions to DerivationFramework, and verified that they do correctly reproduce the existing PFlow jets. Constituent-level variables appear identical; some differences in calibrated quantities are observed, which we suspect are from the calibration itself differing between the two collections. These tests have been fairly limited in scope; we'll of course want to do a more complete validation after this is in.

After this MR, we'll need another doing the same thing for MET. That should be easier with the FE helper functions already in place. I also note that the config support added here uses the "old" jet config, which will soon be superseded. Putting the FlowElement support into the new config remains to be done, but that will be purely python-level and so isn't necessary before the feature freeze.

Tagging @delsart, @khoo, @mhodgkin, @sschramm for any input they might have.

Tagging @sawyer, @cdelitzs, @mswiatlo for their awareness.

Edited by William Keaton Balunas

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
    • Resolved by William Keaton Balunas

      Hi Bill,

      Thanks, that's a nice piece of work. I think @loch would also be interested in this MR. Some general comments regarding the FE helpers :

      template<class T>
        bool getAttribute(const xAOD::FlowElement& fe, FEAttribute att, T& value);
      
        template<class T>
        void setAttribute(const xAOD::FlowElement& fe, FEAttribute att, const T& value);
      

      I' m not convinced they are necessary. I think the nice thing about having disconnected the helpers and the EDM is we can augment them on a as-needed basis and only if necessary. With that in mind I would keep the list of helpers as minimal as possible : for generic attributes, let's not have function, but instead rely on the framework's accessor or decorators (and on Read/WRiteDecorHandle if necessary). However, we can write helper functions when we want to access info which is not a simple attribute, typically when it depends on the underlying type. You have a good example of this with the p4EM(FE&) function.

      I'll add other comments directly in the code.

      Cheers,

      P-A

  • added 2 commits

    • 029de482 - Fix function naming convention
    • fb47e75d - Allow storage of FE ePerSampling as simple vector

    Compare with previous version

  • added 1077 commits

    Compare with previous version

  • William Keaton Balunas changed the description

    changed the description

  • OK, I think all the C++ changes needed for this MR should be in, so it's ready for everyone to take a proper look at. I'm going to wait to remove the WIP tag until I actually test it (will do very soon), but unless there are bugs it should be good to go.

    One thing to point out for @delsart - For JetConstituentModSequence I've assumed for now that FlowElements will always be input in a separate neutral and charged container using the same scheme we have for PFOs now. We might need to generalize that in the future for other types of FE (I left a TODO comment in the code there), but I'm just trying to keep the scope to PFlow for this MR.

  • added 1 commit

    • 20a9d648 - Implement standard reco for FlowElement PF jets

    Compare with previous version

  • added 1 commit

    • 4d9191f5 - Fix JetPtAssocTool, add deriv support for FE jets

    Compare with previous version

  • added 1 commit

    • d6b1daec - Remove temporary testing lines from PHYS

    Compare with previous version

  • William Keaton Balunas unmarked as a Work In Progress

    unmarked as a Work In Progress

  • William Keaton Balunas changed the description

    changed the description

  • This merge request affects 11 packages:

    • Event/xAOD/xAODJet
    • Event/xAOD/xAODPFlow
    • PhysicsAnalysis/AnalysisCommon/ThinningUtils
    • PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore
    • PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss
    • Reconstruction/Jet/JetMomentTools
    • Reconstruction/Jet/JetRec
    • Reconstruction/Jet/JetRecTools
    • Reconstruction/Jet/JetUtils
    • Reconstruction/PFlow/PFlowUtils
    • Reconstruction/eflowRec

    Adding @goetz ,@akraszna ,@mhodgkin ,@jmellent ,@jveatch ,@nelsonc ,@mleblanc ,@ispokhar as watchers

  • William Keaton Balunas resolved all threads

    resolved all threads

  • :white_check_mark: CI Result SUCCESS (hash d6b1daec)

    Athena AthSimulation AthGeneration AnalysisBase
    externals :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
    cmake :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
    make :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
    required tests :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
    optional tests :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

    Full details available on this CI monitor view
    :white_check_mark: Athena: number of compilation errors 0, warnings 0
    :white_check_mark: AthSimulation: number of compilation errors 0, warnings 0
    :white_check_mark: AthGeneration: number of compilation errors 0, warnings 0
    :white_check_mark: AnalysisBase: number of compilation errors 0, warnings 0
    :pencil: For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 22316]

  • Approving (L1).

  • added review-approved label and removed review-pending-level-1 label

  • mentioned in commit e497d24a

  • mentioned in merge request !38816 (merged)

  • mentioned in merge request !40119 (merged)

  • Please register or sign in to reply
    Loading