LArSoft

Logo

Software for Liquid Argon time projection chambers

View My GitHub Profile

Migration to root 6

Release Candidates rc4, rc5, and rc6

v06_00_00_rc5 is in sync with larsoft v05_13_00

Guide to new products

Several products have been split into separate parts. The new products make a suite, larsoftobj, that does not depend on art.

art 1.xx art 2.xx notes
art art, canvas art:Release Notes 2.00.02
nutools nutools, nusimdata nusimdata contains SimulationBase
larcore larcore, larcoreobj larcoreobj contains SimpleTypesAndConstants and SummaryData
lardata lardata, lardataobj lardataobj contains AnalysisBase, MCBase, OpticalDetectorData, RawData, RecoBase, and part of Utilities
larsim larsim, larsimobj larsimobj contains part of Simulation

Release Candidates rc1, rc2, and rc3

Code for building with root 6 and art v1_18_05 will be found in the v06_00_00_rc branch of the following repositories. Release candidate tags will only be made for the larsoft repositories.

v06_00_00_rc3 is in sync with larsoft v05_11_01

v06_00_00_rc2 is in sync with larsoft v05_10_00

v06_00_00_rc1 is in sync with larsoft v05_08_00

Known issues and changes

gdml breaking change

units

fast cloning

root dictionaries

ROOT_INCLUDE_PATH

enums

art::Assns #12247

template instantiations

With root 6, it is no longer necessary to include template instantiations in classes.h.
The templates are instantiated when they are used.
Removing all template instantiations from the classes.h files results in much faster loading of root dictionaries.

TFormula discovered integral math

ROOT 6 implementation of TFormula performs integral math evaluation in a fashion more similar to the C language. For example, "1/2" evaluates to 0., while "1./2." evaluates to 0.5.
ROOT 5 used to convert all operands to floating point and then perform floating point math: both "1/2" and "1./2." did evaluate to 0.5.
TFormula is internally used in many ROOT classes (e.g. TTree::Draw, TTree::Scan, TF1, etc.). All the instances should be checked to make sure that they yield the expected result.
This new feature has been reported as JIRA issue 8110, but no official response has been produced yet. For what we know so far, ROOT 6’s one might be either a buggy behaviour that will be fixed and disappear, or the new official behaviour of TFormula.

TFormula bug on missing parameter in expression

See JIRA issue 8182.
In short, if your expression omits a parameter, parameters gets assigned as if you hadn’t. This means that some parameters are assigned values that some others should have been assigned.
For example:

wrong formula interpreted as bad effects
"[0]*x**[2]" "[0]*x**[1]" SetParameters(0., 1., 2.) results in [2] <== 1.
"[0]*x**[2]" "[0]*x**[1]" SetParameter(2, 2.) has no effect (there is no parameter 2)
gaus(0) + [4]**[5] gaus(0) + [3]**[4] SetParameters(0., 1., 2., 3., 4., 5.) results in [4] <== 3., [5] <== 4.
gaus(0) + [4]**[5] gaus(0) + [3]**[4] SetParameter(4, 4.) results in [5] <== 4.
gaus(0) + [4]**[5] gaus(0) + [3]**[4] @SetParameter(5, 5.) has no effect (there is no parameter 5)

Migration tools

RemoveMathFromGDML.py

This script is in larsoft. RemoveMathFromGDML.py uses root 5 to translate expressions and must be run with root 5.34.32. You must setup an appropriate larsoft v05_xx_yy release.

setup larsoft v05_09_00 or later
cd to the gdml directory
RemoveMathFromGDML.py *.gdml
the original gdml files will be named xxx.gdml.bak

verification of RemoveMathFromGDML.py

check_dictionaries.sh

USAGE: check_dictionaries.sh [-h] <directory>
        -h  (this help)
        look for classes_def.xml under the specified directory
        If no directory is specified, search this directory

DealWithGaus.sh

UpdateToLArSoftObj.sh

All known problems are resolved.