Skip to content
Snippets Groups Projects
  1. Apr 11, 2024
  2. Mar 14, 2024
    • Joseph Earl Lambert's avatar
      ConfigBlock: change groupName, noneAction and duplicateAction · 050689b9
      Joseph Earl Lambert authored and Walter Lampl's avatar Walter Lampl committed
      ConfigBlock: remove groupName, change noneAction, and duplicateAction
      
      The groupName variable was changed to blockName and set from a
      set/get function.
      
      Add instanceName to identify specific instances when there is a
      desire to set the value of an option in an arbitrary location and
      there is more than one instance of a block.
      
      Removed code to potentially throw an error if an option was
      set more than once.
      
      Instead of haing the user say "I am setting this option to None
      and it is okay," the noneAction variable can be set when adding
      an option. If the author of a class determines that an option
      can be set to None, then they can set this for that option.
      050689b9
  3. Feb 29, 2024
  4. Feb 05, 2024
  5. Jan 08, 2024
    • Thomas Strebler's avatar
      Update 2 files · 3d3992e5
      Thomas Strebler authored
      - /PhysicsAnalysis/Algorithms/MuonAnalysisAlgorithms/python/MuonAnalysisConfig.py
      - /PhysicsAnalysis/Algorithms/MuonAnalysisAlgorithms/python/MuonAnalysisSequence.py
      3d3992e5
  6. Nov 17, 2023
  7. Nov 07, 2023
  8. Oct 20, 2023
  9. Oct 17, 2023
  10. Oct 05, 2023
    • Nils Krumnack's avatar
      add options to disable recalibrating objects from PHYSLITE · 05742c27
      Nils Krumnack authored
      According to @gwatts it would be "amazing not to have to run
      calibrations on PHYSLITE".  So here we go: This adds options to jets,
      e-gamma, and muons to skip the calibration where possible.  This means
      no calibration is run for jets, and for e-gamma and muons the nominal
      calibration is skipped.  Either way, this is probably most noticable
      when running with systematics turned off, but even then the savings
      may be smaller than what MET alone costs us to run.
      
      I did enable some comparison tests for PHYSLITE jobs that were
      previously commented out (the data one failed, so I left it commented
      out), but didn't enable the new feature until it is fully validated
      (read: those tests did fail).  I'm leaving it to the PHYSLITE experts
      to do the validation and then turning this on by default in a separate
      MR.
      05742c27
  11. Sep 06, 2023
    • Nils Krumnack's avatar
      CP Algorithms: object cut flow overhaul · 8195ca1f
      Nils Krumnack authored
      The primary thing this does is to introduce a SelectionNameSvc that
      tracks the name of all the selection bits as reported by the various
      selection tools, allowing to give much better labels for the
      individual bins in the selection.  In addition this means I no longer
      need to track the bits for each selection mask, as they get
      automatically tracked.
      
      I also added a configuration block for the cut flows (there wasn't one
      yet), that allows to neatly add the cut flows when added.
      
      The one breaking change is that this now requires a SelectionNameSvc
      to get created.  I hope this doesn't cause too many issues.  In order
      to minimize the effect of such changes in the future I introduced a
      CommonServicesBlock (and corresponding sequence), to which I can add
      more services as needed.
      8195ca1f
  12. Aug 23, 2023
  13. Aug 18, 2023
    • Nils Krumnack's avatar
      add option to check for missing columns in compareFlatTrees · 0a616969
      Nils Krumnack authored
      During my previous changes I had to realize that our tests don't flag
      columns disappearing, which is not ideal.  This now adds the option to
      check for that as well.  I added that as an option so as not to change
      existing behavior.
      
      I enabled that for the CP algorithm checks, but had to disable some
      columns that the sequence configuration didn't have at all or had
      different results.  I'm not sure if it is worth fixing this (given
      that the sequence configuration is on its way out), but if so this
      should be part of a future change (given that it currently also
      doesn't get checked).
      0a616969
  14. Jul 06, 2023
  15. Jul 03, 2023
  16. May 02, 2023
  17. Apr 26, 2023
  18. Mar 20, 2023
  19. Mar 10, 2023
    • Zach Marshall's avatar
      Broadening default muon selection for muon CP tools · eecdb9a2
      Zach Marshall authored and Walter Lampl's avatar Walter Lampl committed
      Broadening default muon selection for muon CP tools
      
      Based on a thread on the AMG list, broadening the muon selection to 2.7.
      This should be safe, as tighter working points will come with a tighter
      default selection (e.g. medium requires eta<2.5), but will allow people
      to use standalone muons beyond 2.5 if they exist. Will result in a very
      small increase in PHYSLITE size.
      eecdb9a2
  20. Jan 18, 2023
    • Nils Krumnack's avatar
      add configuration block for output n-tuple · e1c7bc66
      Nils Krumnack authored
      This allows to fully configure the output n-tuple via
      block-configuration, and it allows to add a suggested list of
      variables from the invidual blocks that define them, instead of having
      to maintain that list outside of the configuration block
      infrastructure.
      e1c7bc66
  21. Dec 13, 2022
    • Nils Krumnack's avatar
      add options to the remaining analysis configuration blocks · 342f8345
      Nils Krumnack authored
      This tries to give the same treatment given to muons and photons to
      all the other configurations, so that it should be possible to
      configure all the blocks just through the options.
      
      There is probably some cleanup that could be done here in the future,
      regarding what some of the configuration blocks should be called
      exactly, what the options exposed should be etc.  The main goal of
      this update is that I can now (more or less awkwardly) set everything
      I can via options that was previously limited to named parameters to
      the various make...Config() calls.
      
      I also added customizable behavior for setting a value of `None` on an
      option.
      342f8345
  22. Dec 09, 2022
    • Nils Krumnack's avatar
      introduce a first draft of a factory for analysis configuration blocks · 5381e98b
      Nils Krumnack authored
      This file defines a factory method that can create a configuration
      block sequence based on a passed in name.  This avoids having to
      import all the various config block sequence makers in the
      configuration code, and also would make it easier to create them
      from a text configuration file.
      
      This relies heavily on the blocks exposing all configurable
      parameters as options, since there is no other mechanism to
      configure them through this interface.
      
      The implementation itself is probably not the best possible, it
      lacks all extensibility, gathers all information in a single place,
      etc.  Still for now this ought to be good enough.
      5381e98b
  23. Dec 08, 2022
  24. Dec 07, 2022
    • Nils Krumnack's avatar
      introduce a first version of options for configuration blocks · c8f0d0ed
      Nils Krumnack authored
      The basic idea/goal of configuration blocks is that the configuration
      system can read a configuration text file and then configure the
      blocks accordingly.  This is made a lot simpler if the configurable
      options on the blocks can be set via a uniform interface.
      
      This is just a first draft of such a mechanism that allows to add the
      options and set them by name from the python side.  All I want from
      this MR is a basic interface that allows to add the options on the
      individual blocks and set them through a python interface.  That will
      then allow me to update all the configuration blocks to expose options
      before I move on.
      
      The mechanism for setting option values is even more rudimentary,
      doing just the minimal thing to allow setting the properties through a
      standard interface.  This is mostly there to allow me to move forward
      somehow, but some details may change.  The interface I have right now
      is probably not ideal for anybody, neither for the text nor the python
      configuration.  That probably needs some changing at some point.
      
      There is a much more sophisticated prototype available, but because of
      its complexity I didn't want to incorporate it into this first draft.
      Instead the interface I have should be (mostly) compatible with the
      interface that prototype exposes.  It can then be retrofitted in here
      at some point.  The full prototype is here:
      https://gitlab.cern.ch/jburr/configblock/-/tree/master/
      
      Also: For photons the recomputeIsEM option should probably not be
      repeated in both the calibration and selection blocks.  There needs to
      be a special method for forwarding options from one block to the next
      which will come in a future update, or when the full option mechanism
      gets incorporated here.
      c8f0d0ed
  25. Oct 07, 2022
  26. Sep 09, 2022
    • James Catmore's avatar
      Add code to allow DAOD_PHYSLITE to be made from PHYS with the component accumulator · a2847ff9
      James Catmore authored and Adam Edward Barton's avatar Adam Edward Barton committed
      Draft: add code to allow DAOD_PHYSLITE to be made from PHYS with the component accumulator
      
      This MR adds the small amount of extra python needed to allow PHYSLITE to be made from PHYS using the Derivation_tf transform, that is, the component accumulator. It touches three parts:
      
      1. MuonAnalysisSequence has an extra argument allowing the internally produced MuonSelectionTool to be set to run 3 geometry should the input be data18/mc20. If this isn't done the tool crashes. This doesn't happen with AOD->PHYSLITE, presumably because the properties are inherited from the MuonCommonConfig, but this isn't used for PHYS->PHYSLITE
      2. DerivationSkeleton is slightly adjusted to accommodate the different arguments, and also to create a new ConfigFlag called Input.FileType (currently can be AOD, DAOD_PHYS, EVNT)... this may be useful for other applications as well
      3. PHYSLITE.py adjustment itself to put in guards to ensure that code that only works with AOD input (e.g. writing common physics content and re-setting MET association) isn't scheduled. It largely uses the new FileType ConfigFlag to achieve this. Also it sets the relevant geometry in the MuonAnalysisSequence.
      
      With these changes, the following command works
      
      ```
      Derivation_tf.py --CA --inputDAOD_PHYSFile filename.pool.root --outputD2AODFile output.pool.root --formats PHYSLITE
      ```
      
      On account of the disabling of the MET association, the output is not yet usable for physics analysis. However, it still makes sense to prepare this MR to allow testing of this workflow, which will be needed during run 3.
      a2847ff9
  27. Aug 31, 2022
  28. Aug 29, 2022
  29. Aug 22, 2022
    • Nils Krumnack's avatar
      add AsgShallowCopyAlg, remove SysCopyHandle from AsgSelectionAlg · e4d0b37e
      Nils Krumnack authored
      This goes back to an old discussion that in principle AsgSelectionAlg
      should not have a SysCopyHandle, as it doesn't introduce new momentum
      systematics.  The reason it has one currently is that if there is a
      selection before the correction algorithm it does need to make a
      shallow copy that can then subsequently be modified at will.
      
      The solution implemented here is what we discussed back then: To
      implement an algorithm that does nothing more than make a shallow copy
      (based on the view container algorithm and the copy mechanism from
      SysCopyHandle) and schedule that before AsgSelectionAlg as needed.
      e4d0b37e
  30. Aug 05, 2022
    • Nils Krumnack's avatar
      CP Algorithm Blocks: replace "references" with two-pass configuration · 2a9da035
      Nils Krumnack authored
      Given that the first iteration of the configuration block design
      invoked criticism of the "reference" design for tracking containers I
      now changed it, so that instead of first allocating references to
      determine what the intermediate containers are, I just run through the
      entire configuration twice.  The second run-through then can rely on
      what it learned in the first run-through to determine what will happen
      further down in the sequence.
      
      This requires routing a number of calls through the ConfigAccumulator
      object, but it definitely makes writing the actual blocks more
      straightforward, and it should also allow for more flexibility if we
      need to redesign the ConfigAccumulator in the future (which also
      became simpler with this change).
      2a9da035
  31. Mar 11, 2022
    • Nils Krumnack's avatar
      first attempt at a block configuration, add block configuration for muons · e7202b4d
      Nils Krumnack authored
      The main goal here is to provide a foundation on which we can build,
      and that allows to quickly convert all the existing configurations, so
      that we can drop the old configuration quickly and don't have to
      maintain two parallel configuration mechanisms over an extended period
      of time.
      
      The interfaces and implementations will likely change, particularly as
      we evolve the configuration to add another layer on top of it.  As
      such the primary goal here is to provide a sort of stable interface
      for the actual users of the CP algorithms, so that they don't have to
      constantly update as we tune/change this.  I'd also like to keep the
      actual structure of the configuration blocks sort of stable, but I'd
      expect some degree of changes here over time.
      
      The main ingredients of this configuration model are:
      * ConfigBlock: The actual object specific configuration classes
        that have individual implementations for each group of algorithms that
        should be configured as an indivisible unit.
      * ConfigSequence: A sequence of blocks, though technically this could
        just be a simple python list instead.
      * ConfigAccumulator: A helper object that is used to track all the
        information needed to communicate between (and within) blocks.
      * container references: Helper objects that track all the shallow copies
        belonging to the same logical object.  This is taking the place of the
        current post-configuration step, essentially front-loading the
        connections between blocks.
      e7202b4d
Loading