Skip to content

Remove initialize/finalize + review destructors & overrides + smaller fixes

Apologies for this big merge request. I started by wanting to get rid of the fragile and cumbersome initialize/finalize mechanism, which I did, but I also got a little carried away with a lot of smaller things along the way.

Here is a change summary:

  • Remove initialize() and finalize(), in favor of improved constructors/destructors and a specialized endRun() writer hook.
  • Remove plenty of useless destructors.
  • Review usage of final and override as discussed in ACTSFW-63.
  • Greatly improve validation of the configuration of Services/Algorithms/Readers/Writers.
  • Clarify which configuration is mandatory and which is optional. Make more configuration mandatory.
  • Use unique_ptr instead of manual new/delete in various places.
  • Made InterpolatedBFieldWriter (mostly) a functor, rather than a Service.
  • Homogeneize usage of ROOT's TFile (ROOT ownership is terrible, better handle it with care).
  • Detect duplicated singleton creation in Geant4 plugins instead of doing stupid things when that happens.
  • Removed the Writer methods that write strings. Their reason for existing was very weak, and it caused many writers (esp. ROOT ones) to silently swallow input, which is an interface sin.
  • Added exception support to the parallel for loop of the Sequencer.
  • Various minor fixes (coding style/naming/error homogeneization, typo/capitalization fixes).

Fixes ACTSFW-63 and fixes ACTSFW-68. Takes steps towards ACTSFW-50.

Edited by Hadrien Benjamin Grasland

Merge request reports