Skip to content

Plotter & fitter

Kristian Lytje requested to merge kristian_code into release

I think I am done with this for now. The fitter is still a bit of a mess, but since I'll have to perform a major refactoring of it soon anyways, I don't want to spend too much time cleaning up the current implementation.

General

  • I have created a ROOT dataframe wrapper called Dataframe.
    • Currently it is kinda malplaced in the plots directory, but I didn't want to create an entirely new folder just for this.
    • This is also where I have defined the optional transformations extract_excited, filter (should maybe be renamed), cut_circle, and cut_y. The last three are not that interesting, but please look closely at the extract_excited implementation - it turns out to be extremely important for the quality of the fit.
    • I have also defined some global strings in this class, which are the branch names for the ROOT files. We may want to make these user-definable instead.
  • I have also created a new Multiframe class, which is just a collection of Dataframes. The idea is that we can use this to store different simulations, such as e.g. a 2- and 3- simulation.
  • Note that in most of my comments I distinguish between sim3a and sim3a_i files. The former will always contain a single partial wave, while the latter will contain two.
  • I have created a Google Drive folder with some files from my project you can play around with. The true_events files are all triple-coincidence experimental data after it has been through the entire AUSAlib pipeline and been TDC calibrated.

Plotter

  • I have added a new executable to CMake named plotter. You should be able to just run make plotter in the build directory.
  • I have created a whole lot of plotting classes you may want to look at. Please look closely at how scaling and adding the different components is handled in the projection comparison plots.
  • I'm not sure how to add new .md files to Doxygen, so currently the documentation for the plotting tool is just located in a new docs folder. Until this is fixed, you can just look at this instead.

Fitter

  • I have also added another new executable to CMake named fitter. The executable is created similarly to the plotter.
  • Most of the implementation is located in executable/fitter.cpp file, where argument parsing, fit preparation, and all output is handled. The actual minimization is performed by the fitter/DalitzFitter files.
  • fitter.cpp: In the future I want to move everything but argument parsing and plotting away from this file. However, since I will have to do a major refactoring of the minimization class soon-ish anyways, I didn't want to spend more time doing this now.
  • DalitzFitter: There is a lot to digest in this class, and like the other file, some of the implementation is still a bit messy. I have inserted a lot of comments, so hopefully you can follow what's happening.
    • Please look very closely at specifically the modified_maximum_likelihood method. The implementation follows the statistic described in Morten's thesis on page 16, which you can find in my Drive link. I don't think we can catch any errors in this implementation in any other way than careful examination.
    • Everything else is mostly just setting up the class in preparation of running the maximum likelihood method.
  • I have added the compiler options -Ofast, -march=native, and -flto. These drastically improves the performance of the fitter.
  • Again I have created a .md documentation file for Doxygen. For now you can see it here. (I use the wiki since it has a nice markdown editor).
Edited by Kristian Lytje

Merge request reports