Skip to content

Beta version 1.2

Compare
Choose a tag to compare
@lcorcodilos lcorcodilos released this 14 Nov 01:50
· 286 commits to master since this release
4a94ff9

Change log

Combination of #17, #18, and #19.

Setup/install

  • Added boost dependency information to main README.md (needed for LumiFilter.h)

Modules

  • Added GenMatching.h which can be used to reconstruct the entire generator particle decay tree from the mother indexes stored in the NanoAOD. This is useful for traversing the entire decay chain with relative ease. Example added in How to use GenMatching.h.
  • Added LumiFilter.h which can be used in conjunction with the newly added golden JSONs to filter data based on the JSONs.
  • Added HistLoader.h which can be used to load in a histogram once before processing, with access to the histogram via the class methods while looping over the RDataFrame entries. The eval module returns based on the input axis value and eval_bybin returns based on the provided bin number.
  • Added TopPt_weight.cc which calculates the top pT correction from the TOP group based on the data/POWHEG+Pythia8 fit. The nominal correction is calculated with the corr() method and variations of the constants in the exponential form can be calculated using the alpha() and beta() methods.
  • Added Trigger_weight.cc which is uses HistLoader.h to load a trigger efficiency histogram. The eval() method returns the efficiency for that event (based on the input variable, of course) and calculates the uncertainty as one-half the trigger inefficiency.
  • Rename "analyzer" namespace to "hardware" in common.h. Done for clarity in the documentation to avoid confusion with the Analyzer python namespace (aka Analyzer.py).
  • Change hardware::invariantMass() argument to be a vector of Lorentz vectors. Invariant mass of all provided vectors is calculated.
  • Moved Framework/src/Collection.cc to Framework/include/Collection.h

Testing

  • Added a draft of test_modules.py which features an example for TopPt_weight.cc but it is currently commented out because the test file does not have the GenPart collection or the FatJet collection (and is also not a ttbar set)
  • Added make_test_file.py to make a small testing histogram.
  • Added small testing histogram generated by make_test_file.py.

Data

  • Added golden JSONs for 2017 and 2018 and added info to the README ledger. It seems 2016 does not have a golden JSON anymore (?)

Analyzer

  • Add corr type for Correction() class. It represents a corrections with no uncertainty. The clang parsing CANNOT currently derive it automatically from the C++ script but it can be assigned as the corrtype via the argument to Correction() constructor.
  • Optimized MakeTemplateHistos() to book histogram actions before looping. They previously looped over the dataframe one after the other. This provides a significant speed up.

More documentation

  • Added page on how to use GenMatching.h in a custom C++ module with the example of finding how many prongs are merged in a top jet.
  • Added docs to Pythonic.h
  • Added docs to common.h
  • Added docs to PDFweight_uncert.cc
  • Added docs to SJBtag_SF.cc
  • Consolidate the READMEs for sections so the webpage makes more sense.
  • Switch to MathJax for formula rendering

Small bug fixes

  • More robust python version checking for ASCII encoding in OpenJSON().
  • Fix PrintNodeTree() for cross-system compatibility. The networkx package is used to create the graph which can be drawn with a number of tools. TIMBER was using pygraphviz which, to be installed, needs the development library of graphviz. While it's easy to get this on Ubuntu or macOS, it is not available on either LPC or LXPLUS servers and we can't install it without a bit of a headache. Thus, pydot is now used with networkx instead since it does not have the same build dependencies. However, the version of graphviz on the system (aka dot) cannot always write out to modern image formats like PNG. The solution is for TIMBER to attempt to save the requested format and if it isn't possible, save out the .dot file for later conversion. Instructions on how to convert the .dot to something else locally were added to the FAQ section of the docs.