Make TMVA problems

Hey guys, I’m extremely inexperienced at coding, and even more so when it comes to Linux/Ubuntu (just created a Ubuntu GNOME partition less than a week ago). I’m wondering if anyone is able to help me.

The problem I’m having is making TMVA. I’ve downloaded Root v5.34.19 source, unpacked it, installed the required packages, and everything seems to be running smoothly, as I get no errors when I type in “root” into terminal.

However, when I try to follow the instructions for making TMVA, I get a lot of errors. (important stuff is near the bottom)

jeffrey@jjiOverlord:~/root/tmva$ make Building Volume.d ... Done Building VariableTransformBase.d ... Done Building VariableRearrangeTransform.d ... Done Building VariablePCATransform.d ... Done Building VariableNormalizeTransform.d ... Done Building VariableInfo.d ... Done Building VariableIdentityTransform.d ... Done Building VariableGaussTransform.d ... Done Building VariableDecorrTransform.d ... Done Building Types.d ... Done Building TSynapse.d ... Done Building TSpline2.d ... Done Building TSpline1.d ... Done Building TransformationHandler.d ... Done Building Tools.d ... Done Building TNeuronInputSum.d ... Done Building TNeuronInputSqSum.d ... Done Building TNeuronInput.d ... Done Building TNeuronInputChooser.d ... Done Building TNeuronInputAbs.d ... Done Building TNeuron.d ... Done Building Timer.d ... Done Building TActivationTanh.d ... Done Building TActivationSigmoid.d ... Done Building TActivationRadial.d ... Done Building TActivationIdentity.d ... Done Building TActivation.d ... Done Building TActivationChooser.d ... Done Building SVWorkingSet.d ... Done Building SVKernelMatrix.d ... Done Building SVKernelFunction.d ... Done Building SVEvent.d ... Done Building SimulatedAnnealingFitter.d ... Done Building SimulatedAnnealing.d ... Done Building SeparationBase.d ... Done Building SdivSqrtSplusB.d ... Done Building RuleFitParams.d ... Done Building RuleFit.d ... Done Building RuleFitAPI.d ... Done Building RuleEnsemble.d ... Done Building Rule.d ... Done Building RuleCut.d ... Done Building RootFinder.d ... Done Building ResultsRegression.d ... Done Building ResultsMulticlass.d ... Done Building Results.d ... Done Building ResultsClassification.d ... Done Building RegressionVariance.d ... Done Building Reader.d ... Done Building Ranking.d ... Done Building QuickMVAProbEstimator.d ... Done Building PDF.d ... Done Building PDEFoamVect.d ... Done Building PDEFoamTargetDensity.d ... Done Building PDEFoamTarget.d ... Done Building PDEFoamMultiTarget.d ... Done Building PDEFoamKernelTrivial.d ... Done Building PDEFoamKernelLinN.d ... Done Building PDEFoamKernelGauss.d ... Done Building PDEFoamKernelBase.d ... Done Building PDEFoamEventDensity.d ... Done Building PDEFoamEvent.d ... Done Building PDEFoamDiscriminantDensity.d ... Done Building PDEFoamDiscriminant.d ... Done Building PDEFoamDensityBase.d ... Done Building PDEFoamDecisionTreeDensity.d ... Done Building PDEFoamDecisionTree.d ... Done Building PDEFoam.d ... Done Building PDEFoamCell.d ... Done Building Option.d ... Done Building OptimizeConfigParameters.d ... Done Building Node.d ... Done Building MsgLogger.d ... Done Building ModulekNN.d ... Done Building MisClassificationError.d ... Done Building MinuitWrapper.d ... Done Building MinuitFitter.d ... Done Building MethodTMlpANN.d ... Done Building MethodSVM.d ... Done Building MethodRuleFit.d ... Done Building MethodPlugins.d ... Done Building MethodPDERS.d ... Done Building MethodPDEFoam.d ... Done Building MethodMLP.d ... Done Building MethodLikelihood.d ... Done Building MethodLD.d ... Done Building MethodKNN.d ... Done Building MethodHMatrix.d ... Done Building MethodFisher.d ... Done Building MethodFDA.d ... Done Building MethodDT.d ... Done Building MethodCuts.d ... Done Building MethodCompositeBase.d ... Done Building MethodCFMlpANN_Utils.d ... Done Building MethodCFMlpANN.d ... Done Building MethodCategory.d ... Done Building MethodBoost.d ... Done Building MethodBDT.d ... Done Building MethodBayesClassifier.d ... Done Building MethodBase.d ... Done Building MethodANNBase.d ... Done Building MCFitter.d ... Done Building LogInterval.d ... Done Building LDA.d ... Done Building KDEKernel.d ... Done Building Interval.d ... Done Building IMethod.d ... Done Building IFitterTarget.d ... Done Building GiniIndexWithLaplace.d ... Done Building GiniIndex.d ... Done Building GeneticRange.d ... Done Building GeneticPopulation.d ... Done Building GeneticGenes.d ... Done Building GeneticFitter.d ... Done Building GeneticAlgorithm.d ... Done Building FitterBase.d ... Done Building Factory.d ... Done Building ExpectedErrorPruneTool.d ... Done Building Event.d ... Done Building DecisionTreeNode.d ... Done Building DecisionTree.d ... Done Building DataSetManager.d ... Done Building DataSetInfo.d ... Done Building DataSetFactory.d ... Done Building DataSet.d ... Done Building DataInputHandler.d ... Done Building CrossEntropy.d ... Done Building CostComplexityPruneTool.d ... Done Building ConvergenceTest.d ... Done Building Configurable.d ... Done Building Config.d ... Done Building ClassInfo.d ... Done Building ClassifierFactory.d ... Done Building CCTreeWrapper.d ... Done Building CCPruner.d ... Done Building BinaryTree.d ... Done Building BinarySearchTreeNode.d ... Done Building BinarySearchTree.d ... Done Building BDTEventWrapper.d ... Done Compiling src/BDTEventWrapper.cxx ... Done Compiling src/BinarySearchTree.cxx ... In file included from src/BinarySearchTree.cxx:64:0: ./TMVA/Tools.h:46:24: fatal error: TXMLEngine.h: No such file or directory #include "TXMLEngine.h" ^ compilation terminated. make: *** [obj/BinarySearchTree.o] Error 1

Upon seeing this, I copy TXMLEngine.h from /root/io/xml/inc/ and paste it into /root/tmva/inc/TMVA.

When I try to make again (exact same error message):

jeffrey@jjiOverlord:~/root/tmva$ make Compiling src/BinarySearchTree.cxx ... Done Compiling src/BinarySearchTreeNode.cxx ... Done Compiling src/BinaryTree.cxx ... Done Compiling src/CCPruner.cxx ... Done Compiling src/CCTreeWrapper.cxx ... Done Compiling src/ClassifierFactory.cxx ... Done Compiling src/ClassInfo.cxx ... Done Compiling src/Config.cxx ... Done Compiling src/Configurable.cxx ... Done Compiling src/ConvergenceTest.cxx ... Done Compiling src/CostComplexityPruneTool.cxx ... Done Compiling src/CrossEntropy.cxx ... Done Compiling src/DataInputHandler.cxx ... Done Compiling src/DataSet.cxx ... Done Compiling src/DataSetFactory.cxx ... In file included from src/DataSetFactory.cxx:40:0: ./TMVA/DataSetFactory.h:53:26: fatal error: TTreeFormula.h: No such file or directory #include "TTreeFormula.h" ^ compilation terminated. make: *** [obj/DataSetFactory.o] Error 1 jeffrey@jjiOverlord:~/root/tmva$ make Compiling src/DataSetFactory.cxx ... In file included from ./TMVA/DataSetFactory.h:53:0, from src/DataSetFactory.cxx:40: ./TMVA/TTreeFormula.h:127:4: error: ‘LongDouble_t’ does not name a type LongDouble_t* fConstLD; // local version of fConsts able to store bigger numbers ^ ./TMVA/TTreeFormula.h:178:12: error: ‘LongDouble_t’ does not name a type virtual LongDouble_t EvalInstanceLD(Int_t i=0, const char *stringStack[]=0) {return EvalInstance<LongDouble_t>(i, stringStack); } ^ make: *** [obj/DataSetFactory.o] Error 1

I try the same thing w/ the TTreeFormula.h file, but I still get errors.

jeffrey@jjiOverlord:~/root/tmva$ make Compiling src/DataSetFactory.cxx ... In file included from ./TMVA/DataSetFactory.h:53:0, from src/DataSetFactory.cxx:40: ./TMVA/TTreeFormula.h:127:4: error: ‘LongDouble_t’ does not name a type LongDouble_t* fConstLD; // local version of fConsts able to store bigger numbers ^ ./TMVA/TTreeFormula.h:178:12: error: ‘LongDouble_t’ does not name a type virtual LongDouble_t EvalInstanceLD(Int_t i=0, const char *stringStack[]=0) {return EvalInstance<LongDouble_t>(i, stringStack); } ^ make: *** [obj/DataSetFactory.o] Error 1 jeffrey@jjiOverlord:~/root/tmva$ ^C jeffrey@jjiOverlord:~/root/tmva$ ^C jeffrey@jjiOverlord:~/root/tmva$ make Compiling src/DataSetFactory.cxx ... In file included from ./TMVA/DataSetFactory.h:53:0, from src/DataSetFactory.cxx:40: ./TMVA/TTreeFormula.h:127:4: error: ‘LongDouble_t’ does not name a type LongDouble_t* fConstLD; // local version of fConsts able to store bigger numbers ^ ./TMVA/TTreeFormula.h:178:12: error: ‘LongDouble_t’ does not name a type virtual LongDouble_t EvalInstanceLD(Int_t i=0, const char *stringStack[]=0) {return EvalInstance<LongDouble_t>(i, stringStack); } ^ make: *** [obj/DataSetFactory.o] Error 1

I know this is a very primitive way to try and solve this problem, but I am simply not experienced enough to go into Makefile and code my way out of this situation.

Any help would be appreciated, thank you for taking the time to read.

If you install ROOT using the Ubuntu package manager, it should come with TMVA built-in. Then you won’t have to compile it yourself. Here you can find a list of the Ubuntu versions with a ROOT package: packages.ubuntu.com/search?keywords=root-system

Even when compiling yourself, the usual ROOT installation takes care of TMVA for you. As far as I know there is no need for a separate compilation of TMVA.

Jean-François

Thanks for the clarification jfcaron